0

J'ai une application Web et un projet de déploiement qui a été créé à l'origine dans VS 2008 et qui a installé la version 1.51 de mon application. J'utilise maintenant VS 2010 (et mon application nécessite .Net 4 et Installer 4.5) et mis à jour mon application et le projet de déploiement à 1.52. Si je cours l'installation sur un système vierge, tout fonctionne comme prévu. Si j'exécute la configuration 1.52 sur un système avec 1.51 déjà installé, au lieu de finir avec une copie complète de 1.52 à la fin de l'installation, tous les fichiers communs à 1.51 et 1.52 sont supprimés (indépendamment du fait que ils ne diffèrent pas entre les versions), seuls les fichiers qui n'existaient pas dans la version 1.51 sont déployés, et mes CustomActions ne sont pas exécutées. L'installation prétend avoir terminé avec succès. J'ai exécuté le programme d'installation avec l'option/l * vx et j'ai utilisé Wilogutl.exe pour analyser le fichier journal et il a indiqué "Aucune erreur trouvée" et "Aucune solution requise".L'installation de mise à niveau ne laisse que des fichiers nouveaux dans la nouvelle version, en supprimant les fichiers communs à l'ancien et au nouveau

J'ai RemovePreviousVersions défini sur True, même UpgradeCode pour les deux versions, mis à jour ProductCode et Version. Si je mets RemovePreviousVersions à false, alors l'installation de 1.52 sur un système avec 1.51 déjà dessus semble me donner le résultat désiré.

Cela ne devrait-il pas fonctionner avec RemovePreviousVersions défini sur true?

Quels problèmes potentiels dois-je rechercher lors d'une installation de mise à niveau si je laisse DeletePreviousVersions sur false?

  • Mark
+0

Il me semble que la suppression de l'ancienne version ne supprime pas tout de suite, mais la met en attente pour plus tard - peut-être après le redémarrage avec les valeurs du Registre PendingFileRename. L'installation vous suggère-t-elle de redémarrer? Si c'est le cas, vous voudrez supprimer l'ancienne version, redémarrer, puis installer la nouvelle version et redémarrer à nouveau ... amusant! – ewall

+0

L'installation ne suggère pas que je redémarre. J'ai trouvé ce fil sur Microsoft Connect, qui a aidé certains, mais il ne résout pas complètement le problème: https://connect.microsoft.com/VisualStudio/feedback/details/559575/problem-with-installing-and- suppression-versions-antérieures-après-mise à niveau-mon-installation-projet-à-vs2010 –

Répondre

1

Avez-vous fait quelque chose au projet d'installation qui a changé tous les composants GUIDs. Si les GUID des composants ne sont pas identiques entre l'ancienne et la nouvelle version, le mécanisme de comptage des références des composants sera rompu. Donc, la version 1 établit le composant 1, avec le fichier 1. Lors de la mise à niveau, la nouvelle version établit le composant 2 qui établit également le fichier 1. Ensuite, l'action RemoveExistingProducts recherchera tous les composants qui peuvent être supprimés. Puisque le compteur de composants du composant 1 est à 1, le programme d'installation tente de le supprimer, y compris le fichier 1.

0

Modifiez votre mise à niveau en une mise à niveau majeure et déplacez l'action standard RemoveExistingProducts avant InstallInitialize dans InstallExecuteSequence. Comme l'écrit Stephen Connolly, vous avez probablement foiré le référencement des composants. Cela rend les mises à jour peu fiables ou carrément impossibles. Vous pouvez "découpler" la nouvelle version et l'ancienne en utilisant des mises à niveau majeures car une mise à niveau majeure n'est pas une mise à niveau, mais une désinstallation de l'ancienne version et une installation de la nouvelle version en séquence chaînée.