在Wix创建的以前版本的安装程序中,存在下一个代码:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
为了解决此knowledge base article代码中描述的Windows Installer中的错误,修复了该问题:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>
但是现在,如果我用安装程序安装带有第一个代码的程序,然后安装带有第二个代码的安装程序,而不删除已安装的程序,则删除所有文件,并且我的路径存在空文件夹(两个安装程序中的所有文件都具有相同的名称)。 / p>
如果我打开第二个安装程序并按“修复” - 将显示所有文件。
错误以及此问题如何解决?
P.S。对不起我的英文:(
答案 0 :(得分:2)
只是一个猜测:听起来第一个和第二个设置安装相同的文件,但作为不同组件ID 的组件的一部分。要验证这一点,您可以使用orca.exe打开两个msi文件并比较组件ID。
组件ID应保持不变,以便可以正确引用它们。否则,您将获得尝试管理相同文件的不同组件,在这种情况下,当卸载其中任何一个组件时,这将导致文件消失。
如果您遵循Windows安装程序规则,组件的内容永远不会更改(即永远不会删除或添加文件),那么wix生成的组件GUID应自动保持稳定。这是为什么每个文件最好有一个组件的原因之一。