有人提出了一个非常相似的问题,但回应没有帮助。如果有一个知识渊博的答案,那将是非常有价值的......
我使用Windows Installed 4.5创建了一个WiX项目。我在wxs文件中为MsiEmbeddedChainer表包含了一个EmbeddedChainer元素引用,它允许多包安装。
<EmbeddedChainer Id="Chainer" FileSource="InstallMSI.exe" />
我环顾网络,最后发现了一个帖子,显示了这个人如何检索内部交易的句柄。现在,我的安装程序正确调用我的可执行文件来处理链接的MSI。但是,卸载不起作用。请注意,如果没有上述EmbeddedChainer元素,卸载工作正常。
我已经阅读了所有可用的文档,但找不到一个示例项目。
任何人都可以在创建基于WiX的多MSI安装包时提供一些指导吗?
答案 0 :(得分:1)
EmbeddedChainer的WiX文档引用MsiEmbeddedChainer Table的MSDN文档,该文档会引导您引用Monitoring an Installation using MsiSetExternalUI
我建议寻找任何 MSI示例,而不是寻找WiX特定示例。从那里可以很容易地找出你在WiX上出错的地方。
答案 1 :(得分:1)
卸载时将再次调用相同的嵌入式chainer可执行文件Main()。为了使chainer代码检测是否安装或卸载,父安装程序应将参数传递给chainer Main函数。卸载时,父安装程序将属性[REMOVE]设置为“REMOVE = ALL”或“REMOVE = feature1,feature2”。将EmbededChainer / @ CommandLine设置为“REMOVE = [REMOVE]”并在chainer代码的Main中,解析参数列表并将数据传递给MsiInstallProduct()作为参数。当MsiInstallProduct()看到参数“REMOVE = ALL”时,子MSI将执行卸载。