2012-01-12 43 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