Lyk*_*hia 5 windows-installer wix
我正在为现有产品编写 MSI。在以前的版本中有一个自定义操作,它不仅限于在安装时运行,现在在使用 MajorUpgrade 卸载时失败。
新安装程序中是否有任何方法可以告诉 WiX 在卸载时跳过该特定自定义操作?
是的,您可以从新安装程序自动执行此操作。
解决方案:
1) 您需要修复构建当前版本的安装程序的项目中的问题,并从该项目中再次构建良好的MSI。在这种情况下,您只需要 MSI 数据库,通常只有几 KB,而不是整个安装包(即包含所有安装文件的 CAB 文件等...)
2) 在新安装程序中,您需要在RemoveExistingProducts标准操作之前运行一个自定义操作,该操作将在计算机上重新缓存先前版本的MSI。您的自定义操作必须执行以下命令:
msiexec.exe /fv "<MSI 路径 >"
您尝试重新缓存的 MSI 是您在步骤 #1 中构建的新 MSI。您需要将此 MSI 作为资源包含在新版本安装程序(以及未来版本,以防某些用户跳过此版本)中,并将提取此 MSI 文件的完整路径作为参数传递给您的自定义操作。
基本上,您要做的就是使用正确的 MSI 自动执行重新缓存旧安装的步骤(您已在自定义操作中设置了正确的条件)。现在,当执行RemoveExistingProducts标准操作时,Windows Installer将使用新缓存的MSI触发旧版本的卸载,该MSI在您的自定义操作上设置了正确的条件,并成功卸载。
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |