4

      我有一个在 InstallShield 12 中构建的项目。它是一个需要多次安装的 Web 应用程序,并且这些安装需要打补丁。

我可以在 WiX 和 InstallShield 中创建转换和补丁。
当我尝试从 InstallShield 修补转换后的安装时,我收到错误消息:

"The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program.  Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch."

在 InstallShield 中,我尝试通过 Patch Design 选项卡将转换中的新产品代码添加到“目标产品代码列表”。这样做会导致补丁创建出错:

"ERROR: At least one of the GUIDs '{ORIGINAL-GUID},{TRANSFORM-GUID}' defined in the ListOfTargetProductCodes property in the Properties table of the .pcp file is invalid."

在 WiX (3.5) 中,我使用 dark.exe 将我的项目从 InstallShield 转换为 WiX。我已经取得了足够的进展,可以为转换安装补丁,但我收到了警告:

"Patch.wxs(11) : warning PYRO1079 : The cabinet 'Data1.cab' does not contain any files."

这是一个问题,因为我试图在补丁中运行 SQL 脚本,但是补丁并没有将我的 sql 文件插入到 cab 中。

我还通过 WiX 尝试了 .pcp 方法(WiX 3.0 之前的版本),并且只达到了我在 InstallShield 中所达到的程度。

到目前为止,我一直主要参考此页面来获取答案:http: //ysdevlog.blogspot.com/2011/08/revisited-multiple-instance.html

TL;DR:如何使用(最好)InstallShield 或在 WiX 中为多个实例安装生成补丁?

4

1 回答 1

5

我通过完全放弃 InstallShield 解决了我自己的问题。我没有将我的 InstallShield 最终 msi 转换为 WiX,而是在纯 WiX 中重新创建了我的项目。这样做让我可以安装多个实例,并为它们打补丁。

很遗憾,我无法弄清楚如何通过 InstallShield 让它工作。

于 2012-03-02T19:18:55.950 回答