WIX覆盖/更新安装程序

时间:2012-03-23 18:21:05

标签: visual-studio installer wix

我有一个用WIX创建的安装程序,它安装了一堆DLL和Config文件。一旦安装完成,很明显有时候我想更新DLL文件并保留配置。

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

enter image description here

问题在于我不想弄乱Build Number或Product ID。我只是希望安装程序重新运行并覆盖必要的DLL文件。这有意义吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

与BryanJ一样,错误表明您正在安装一个新软件包,其产品代码与之前安装的软件包相同。

解决方案最有可能只是将产品Id属性设置为*。当您希望能够执行minor upgrades时,您只需要稳定的产品ID。

次要升级不允许对功能组件树进行任何重组,而AFAIK只具有更快速进行大型安装的优势。我们只是以major upgrades进行所有升级,这些升级更易于管理。

相关问题