2011-04-05 101 views
0

我正在創作一個小型MSI軟件包的第二個版本,在升級測試期間,我發現舊版本作爲升級的一部分未被正確刪除。舊版本的組件未被刪除

使用「添加/刪除程序」可以完全卸載舊軟件包,刪除所有已安裝的文件。在升級過程中,安裝日誌會顯示被告知要刪除自己的舊包,但這似乎不會發生,因爲屬於已移至其他目錄的組件的文件被擱置。

我是否需要從相同軟件包的舊版本中顯式刪除文件,或者是否有可能在此處丟失的內容?

InstallExecuteSequence是

LaunchConditions   100 
ValidateProductID   150 
FindRelatedProducts   162 
AppSearch     175 
CostInitialize    200 
FileCost     300 
CostFinalize    400 
MigrateFeatureStates  450 
InstallValidate    500 
InstallInitialize   600 
ProcessComponents   620 
UnpublishFeatures   650 
RemoveFiles     700 
RemoveFolders    800 
CreateFolders    900 
MoveFiles     1000 
InstallFiles    1100 
PublishFeatures    1200 
PublishProduct    1300 
RegisterProduct    1400 
RegisterUser    1500 
InstallFinalize    1600 
RemoveExistingProducts  1700 

更新:去除抱怨自己無法InstallFinalize過程中刪除C:\Config.msi\.。這可能以某種方式相關嗎?

回答

2

使用InstallFinalize之後計劃的RemoveExistingProducts,您必須遵守所有組件規則。 (請參閱http://www.joyofsetup.com/2008/12/30/paying-for-upgrades/。)「已移至其他目錄的組件」需要創建新組件。

+0

這看起來很像我在找的東西。明天早上再試。 – 2011-04-05 17:02:56

+0

我想將會有更多的文檔閱讀 - 我已經設法將它打破,其中一個組件不再被刪除,並且日誌文件包含二進制垃圾。 8 / – 2011-04-05 18:37:17