在由Wix创建的installer的前一个版本中,存在以下代码:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>为了解决此knowledge base article代码中描述的Windows Installer中的错误,已修复:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>但是现在,如果我用第一个安装程序安装程序,然后用第二个安装程序安装程序,而不删除安装的程序,所有文件都会被删除,我的路径存在空文件夹(两个安装程序中的所有文件具有相同的名称)。
如果我打开第二个安装程序并按下Repair -所有文件都会出现。
问题出在哪里?这个问题是如何解决的?
附言:对不起,我的英语:
发布于 2012-01-12 19:20:54
只是猜测一下:听起来第一个和第二个安装程序安装了相同的文件,但作为组件id不同的组件的一部分。为了验证这一点,你可以用orca.exe打开这两个msi文件并比较组件id。
组件ID应该保持不变,以便可以正确地对它们进行引用计数。否则,您将得到不同的组件试图管理相同的文件,在这种情况下,这将导致文件消失时,任何一个组件卸载。
如果您遵循windows installer规则,即组件的内容不应更改(即,不能删除或添加文件),则wix生成的组件GUID应自动保持稳定。这就是为什么每个文件最好有一个组件的原因之一。
https://stackoverflow.com/questions/8832440
复制相似问题