【问题标题】:WiX EmbeddedChainer cannot uninstallWiX EmbeddedChainer 无法卸载
【发布时间】:2011-08-27 00:45:40
【问题描述】:

有人问了一个非常相似的问题,但回答没有帮助。如果有一个知识渊博的答案将非常有价值......

我使用 Windows Installed 4.5 创建了一个 WiX 项目。我在 MsiEmbeddedChainer 表的 wxs 文件中包含了一个 EmbeddedChainer 元素引用,它允许安装多个包。

<EmbeddedChainer Id="Chainer" FileSource="InstallMSI.exe" />

我浏览了网络,最后找到了一个帖子,显示了这个人如何检索内部事务的句柄。现在,我的安装程序正确调用我的可执行文件来处理链接的 MSI。但是,卸载不起作用。请注意,没有上述 EmbeddedChainer 元素,卸载工作正常。

我已阅读所有可用文档,但找不到单个示例项目。

谁能提供一些有关创建基于 WiX 的多 MSI 安装包的指导?

【问题讨论】:

  • 您能告诉我们更多细节吗?卸载期间什么不起作用?

标签: wix windows-installer


【解决方案1】:

EmbeddedChainer 的 WiX 文档参考了 MsiEmbeddedChainer Table 的 MSDN 文档,这反过来又指导您参考 Monitoring an Installation using MsiSetExternalUI

我建议寻找 any MSI 示例,而不是寻找 WiX 特定示例。从那里可以很容易地找出 WiX 的问题所在。

【讨论】:

  • 真的吗?那么,有什么例子呢?
  • 我快速浏览了 Windows SDK,但没有找到任何东西,抱歉 :(
【解决方案2】:

卸载时将再次调用相同的嵌入式链接器可执行文件 Main()。为了让chainer 代码检测是安装还是卸载,父安装程序应该将参数传递给chainer Main 函数。卸载时,父安装程序将属性 [REMOVE] 设置为“REMOVE=ALL”或“REMOVE=feature1,feature2”。将 EmbededChainer/@CommandLine 设置为“REMOVE=[REMOVE]”,并在链接器代码的 Main 中,解析参数列表并将数据作为参数传递给 MsiInstallProduct()。当 MsiInstallProduct() 看到参数“REMOVE=ALL”时,子 MSI 将执行卸载。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2018-04-12
    • 1970-01-01
    • 2015-01-25
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2015-06-19
    相关资源
    最近更新 更多