我有一个用WIX创建的安装程序,它安装了一堆DLL和配置文件。一旦安装完成,显然有时候我想更新JUST DLL文件,并保留原来的配置。WIX覆盖/更新安装程序
我看过NeverOverwrite="yes"
选项,看起来很有前途,但是我现在遇到了这个问题。当我尝试在安装完成后重新运行我的安装程序时,出现此错误。
的问题是,我不想用版本号或产品标识混乱。我只想让安装程序重新运行并覆盖必要的DLL文件。这有意义吗?
我有一个用WIX创建的安装程序,它安装了一堆DLL和配置文件。一旦安装完成,显然有时候我想更新JUST DLL文件,并保留原来的配置。WIX覆盖/更新安装程序
我看过NeverOverwrite="yes"
选项,看起来很有前途,但是我现在遇到了这个问题。当我尝试在安装完成后重新运行我的安装程序时,出现此错误。
的问题是,我不想用版本号或产品标识混乱。我只想让安装程序重新运行并覆盖必要的DLL文件。这有意义吗?
如果您重新编译来更新dll,您应该真的考虑更新安装程序中的版本控制。如果每次编译dll和安装程序时都有构建过程更新构建编号,这应该不成问题。
您收到错误的原因是因为产品ID和版本号匹配,但包装代码不同。要解决此错误,您有以下选项:
与BryanJ说的一样,错误表示您正在安装与以前安装的软件包具有相同产品代码的新软件包。
该解决方案很可能只是将产品Id
属性设置为*
。当你想要做minor upgrades的能力时,你只需要稳定的产品ID。
较小的升级不允许对功能组件树进行任何重组,并且AFAIK只具有快速安装大型功能的优势。我们只是做所有升级为major upgrades,这是更容易管理。
你不只是重新运行你的安装程序,你重新编译它,然后尝试在安装了以前版本的机器上运行它,更正吗? – BryanJ 2012-03-23 19:09:20
这是100%正确的BryanJ – aherrick 2012-03-23 20:49:55