【问题标题】:Wix - remove all files when apply major special updateWix - 应用重大特别更新时删除所有文件
【发布时间】:2012-02-08 14:04:12
【问题描述】:

在由 Wix 创建的以前版本的安装程序中,存在下一个代码:

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

为了解决此knowledge base article 代码中描述的 Windows Installer 中的错误,已修复:

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>

但是现在,如果我使用带有第一个代码的安装程序安装程序,然后使用带有第二个代码的安装程序安装程序而不删除已安装的程序,则所有文件都将被删除并且我的路径存在空文件夹(两个安装程序中的所有文件都具有相同的名称)。

如果我打开第二个安装程序并按修复 - 所有文件都会出现。

出了什么问题以及如何解决这个问题?

附:对不起我的英语:(

【问题讨论】:

    标签: installation wix windows-installer removeall


    【解决方案1】:

    只是一个猜测:听起来第一个和第二个设置安装了相同的文件,但是作为具有不同组件ID的组件的一部分。要验证这一点,您可以使用orca.exe 打开两个 msi 文件并比较组件 ID。

    组件 ID 应该保持不变,以便可以正确地对它们进行引用计数。否则,您将获得不同的组件来尝试管理相同的文件,在这种情况下,这将导致在卸载任何一个组件时文件消失。

    如果您遵循 Windows 安装程序的规则,即组件的内容永远不会更改(即永远不会向其中删除或添加文件),那么 wix 生成的组件 GUID 应该会自动保持稳定。这是每个文件最好有一个组件的原因之一。

    【讨论】:

    • 文件只有相同的名称,但文件不同(文件的哈希值不同)。 ComponentIds 是一样的。
    • @amlet.fb:如果componentIds相同,那么我的回答没有解释任何内容,对不起。
    猜你喜欢
    • 2014-10-16
    • 2018-12-27
    • 2010-09-16
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多