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

Installation Wix-应用主要特殊更新时删除所有文件,installation,wix,windows-installer,removeall,Installation,Wix,Windows Installer,Removeall,在Wix创建的先前版本的安装程序中,存在下一个代码: <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize" /> </InstallExecuteSequence> 为了解决此代码中描述的Windows Installer中的错误,已修复: <InstallExecuteSequence> <RemoveExistingProducts Af

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

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

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

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

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

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

问题出在哪里,如何解决


另外,对不起我的英语:(

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

组件ID应保持不变,以便它们可以正确引用计数。否则,您将得到不同的组件尝试管理相同的文件,在本例中,这将导致卸载任一组件时文件消失


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

文件只有相同的名称,但文件不同(文件的散列不同)。组件ID是相同的。@amlet.fb:如果组件ID是相同的,那么我的回答没有解释任何事情,对不起。