2012-01-12 39 views
2

在以前版本的安装程序,由维克斯创建删除所有文件,下面的代码存在:维克斯 - 当应用重大专项更新

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

为了解决在Windows安装程序的bug在此knowledge base article代码描述了被修正:

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

但现在,如果我安装程序与第一代码安装程序,然后用第二个代码安装不删除已安装的程序的安装程序,所有文件删除,我的道路存在的空文件夹(在所有文件安装程序有equa l名称)。

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

这个问题怎么解决?

P.S.对不起,我的英语:(

回答

2

只是一个猜测:这听起来像第一和第二设置安装相同的文件但与不同的组件ID的为了验证这一点,你可以同时打开MSI组件的一部分。文件与orca.exe并比较组件ID。

组件ID应保持不变,以便它们可以正确引用计数。否则,你会得到不同的组件试图管理相同的文件,这将导致当其中任何一个组件被卸载时消失的文件。

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

+0

文件只有_names_,但文件不同(文件的哈希值不同)。 ComponentIds是相同的。 – 2012-01-13 08:31:54

+0

@ amlet.fb:如果componentIds是相同的,那么我的回答并不能解释任何事情,对不起。 – 2012-01-14 18:41:03