【问题标题】:Can I run a custom action in a Windows Installer Project before the files are installed?我可以在安装文件之前在 Windows Installer 项目中运行自定义操作吗?
【发布时间】:2017-12-08 01:19:19
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    其他工具允许在安装文件之前运行自定义操作,基本上您会在 InstallFiles 操作之前先执行延迟自定义操作。

    是否会覆盖现有文件并不确定。如果您有一个基于 Windows 安装程序的安装程序,该安装程序安装了一个数据库,然后由应用程序更新,则像 Visual Studio 的 RemovePreviousVersions 这样的升级将不会覆盖现有文件。

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

    【讨论】:

    • 是的,我正在使用 Visual Studio。
    【解决方案2】:

    我之前在一个项目中遇到过类似的问题,并通过在安装时调用可执行文件来实现。

    1. 为安装程序项目创建自定义操作。
    2. 根据您的需要指向一个 vbs 或可执行文件。

    之后,您将在自定义操作>安装树下看到您的自定义操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 2010-09-11
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多