I'm authoring the second version of a small MSI package, and during the upgrade test, I've found that the old versio开发者_Go百科n is not properly removed as part of an upgrade.
The old package can be cleanly uninstalled using "Add/Remove Programs", all files that have been installed are deleted. During an upgrade, the install log shows the old package being told to REMOVE itself, however this appears to not happen, as a file belonging to a component that has moved to another directory is left stranded.
Do I need to explicitly remove files from older versions of the same package, or is there something I may be missing here?
InstallExecuteSequence is
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
Update: The removal complains about being unable to remove C:\Config.msi\.
during InstallFinalize. Could this be related in some way?
With RemoveExistingProducts scheduled after InstallFinalize, you must adhere to all component rules. (See http://www.joyofsetup.com/2008/12/30/paying-for-upgrades/.) A "component that has moved to another directory" requires creating a new component.
精彩评论