Wix - 应用主要特殊更新时删除所有文件

时间:2012-01-12 09:08:07

标签: installer wix windows-installer removeall

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

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

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

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

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

如果我打开第二个安装程序并按“修复” - 将显示所有文件。

错误以及此问题如何解决?

P.S。对不起我的英文:(

1 个答案:

答案 0 :(得分:2)

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

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

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