我可以在安装文件之前在Windows Installer项目中运行自定义操作吗?

时间:2017-12-07 10:00:26

标签: c# visual-studio windows-installer custom-action

我有一个Windows Installer项目,可以将文件安装到C:\Program Files\MyInstalledFiles。当我运行MSI时,我希望它检查安装目标中是否已存在名为MyInstalledFiles的文件夹,如果是,则将其重命名为MyInstalledFiles-OLD。这样我就可以备份已经存在的任何文件。

问题是我希望在MSI安装文件之前完成此操作。否则,它将覆盖现有文件,我将丢失它们。有没有办法在安装之前使用自定义操作重命名文件夹?

2 个答案:

答案 0 :(得分:2)

您的问题有一个Visual Studio标记,这可能意味着您正在使用Visual Studio安装程序来创建MSI设置。如果您使用的是VS安装项目,则答案为否,您无法在安装文件之前运行自定义操作。安装文件后,Visual Studio安装程序项目生成的所有自定义操作都会运行,尽管名称如“BeforeInstall”。

其他工具允许在安装文件之前运行自定义操作,并且基本上您在InstallFiles操作之前有一个延迟的自定义操作。

现有文件是否会被覆盖是不确定的。如果您安装了基于Windows Installer的安装程序,该安装程序随后由应用程序更新,则Visual Studio的RemovePreviousVersions等升级将不会覆盖现有文件。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx

答案 1 :(得分:0)

我之前有过类似的项目问题,并且通过在Install上调用可执行文件来实现。

  1. 为Installer Project创建自定义操作。
  2. 根据需要指定vbs或可执行文件。
  3. 之后,您会在自定义操作>安装树下看到您的自定义操作。

    编辑而且,遗憾的是,在早期阶段无法进行任何控制。如果这没有帮助,您需要找到另一个安装程序扩展名。