La Mise à niveau de l'élément à l'intérieur de l'élément Produit, combinée avec la bonne planification de l'action, sera d'effectuer la désinstallation que vous êtes après. Assurez-vous de la liste de la mise à jour des codes de tous les produits que vous souhaitez supprimer.
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="00000000-0000-0000-0000-000000000000">
<UpgradeVersion Minimum="1.0.0.0" Maximum="1.0.5.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
Notez que, si vous êtes prudent avec vos constructions, vous pouvez empêcher les personnes accidentellement de l'installation d'une ancienne version de votre produit sur une version plus récente. C'est ce que le Maximum de terrain. Lorsque nous construisons des installateurs, nous avons mis en UpgradeVersion Maximum pour la version en cours de construction, mais IncludeMaximum="no" pour éviter ce scénario.
Vous avez des choix quant à la planification de RemoveExistingProducts. Je préfère la planification après InstallFinalize (plutôt qu'après InstallInitialize comme d'autres l'ont recommandé):
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>
Cela laisse de la version précédente du produit installé jusqu'après les nouveaux fichiers et clés de registre sont copiés. Cela me permet de migrer les données de l'ancienne version à la nouvelle (par exemple, vous avez mis le stockage des préférences de l'utilisateur de la base de registre dans un fichier XML, mais vous voulez être poli et la migration de leurs paramètres). Cette migration se fait dans un différé d'action personnalisée juste avant InstallFinalize.
Un autre avantage est l'efficacité: si il y a des fichiers inchangés, le programme d'installation de Windows ne prend pas la peine de les copier à nouveau lorsque vous planifiez après InstallFinalize. Si vous planifiez après InstallInitialize, la version précédente est complètement retiré d'abord, et ensuite la nouvelle version est installée. Il en résulte inutile de suppression et de recopie de fichiers.
Pour les autres options de planification, voir la RemoveExistingProducts rubrique d'aide dans MSDN. Cette semaine, le lien est: http://msdn.microsoft.com/en-us/library/aa371197.aspx