【问题标题】:WIX Overwrite/Update InstallerWIX 覆盖/更新安装程序
【发布时间】:2012-03-23 18:21:04
【问题描述】:

我有一个使用 WIX 创建的安装程序,用于安装一堆 DLL 和配置文件。安装完成后,显然有时我只想更新 DLL 文件并保持配置不变。

我查看了NeverOverwrite="yes" 选项,看起来很有希望,但是我现在遇到了这个问题。当我在安装完成后尝试重新运行安装程序时,出现此错误。

问题是我不想弄乱内部版本号或产品 ID。我只想让安装程序重新运行并覆盖必要的 DLL 文件。这有意义吗?

【问题讨论】:

  • 您不只是重新运行安装程序,而是重新编译它,然后尝试在安装了以前版本的机器上运行它,对吗?

标签: visual-studio installation wix


【解决方案1】:

如果您重新编译以更新 dll,您应该真正考虑更新安装程序中的版本控制。如果您有一个构建过程,每次编译 dll 和安装程序时都会更新构建号,这应该不是问题。

您收到错误的原因是产品 ID 和版本号匹配,但包代码不同。要解决该错误,您有以下选项:

  • 更新版本号并将其视为升级。
  • 更改产品 ID(和版本)并将其视为升级。
  • 如果您设置包代码,产品 id 和版本可以匹配,但不建议这样做,尤其是在您修改安装程序中的文件时。如果您确实将包代码设置为与以前的安装程序匹配,您将获得维护对话框,如果您进行修复或修改,我不确定它在执行修复时是否会使用缓存的 MSI 或重新编译的 MSI,所以我不确定您可以期待什么结果。

【讨论】:

    【解决方案2】:

    正如 BryanJ 所说,该错误表明您正在安装一个新软件包,该软件包与以前安装的软件包具有相同的产品代码。

    解决方案很可能只是将产品Id 属性设置为*。当您想要minor upgrades 的能力时,您只需要稳定的产品ID。

    小幅升级不允许对功能组件树进行任何重组,AFAIK 仅具有在大规模安装时速度更快的优势。我们只是以major upgrades 进行所有升级,更易于管理。

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多