J'ai un MSI qui crée et crée un service Windows lors de l'installation et de l'arrêt et supprime le service pendant la désinstallation. Cela fonctionne bien lors de l'installation et de la désinstallation en soi, mais lors de la mise à niveau, la boîte de dialogue STRY> Utiliser STRT> est affichée (uniquement sur Vista et plus tard en raison du nouveau redémarrage gestionnaire ), indiquant que le service est utilisé. p>
Les fichiers La documentation MSDN indique que l'action Je tiens à reprogrammer l'action personnalisée forte> SupprimerExistingProduits forte> à l'action immédiate avant l'action personnalisée forte> d'installvalidate forte> afin que l'installation précédente ait une chance d'arrêter et de supprimer le service avant le < Strong> Les fichiers utilisés sur strong> sont affichés. J'ai essayé de reprogrammer les actions, et il semble fonctionner correctement sans effets secondaires indésirables (bien que le journal indique toujours que l'action Quelqu'un a-t-il essayé cela? La seule autre alternative à laquelle je peux penser est d'avoir la nouvelle installation arrêter le service de l'ancienne installation, mais cela n'est pas souhaitable car elle nécessite que l'installation ait des informations sur toutes les anciennes installations qu'il peut mettre à niveau (l'arrêt de ce service particulier peut impliquer davantage. qu'un simple appel simple au gestionnaire de service pour l'arrêter). P> Solution potentielle h2>
4 Réponses :
Un problème potentiel serait que si l'utilisateur annule lors de l'installation d'installationValidate (par exemple, de ne pas suffisamment d'espace disque ou d'un fichier utilisé) ou pendant l'installation, quel est le comportement de restauration. La situation idéale est que l'état de l'application est identique à celui qu'il était avant (par exemple, l'application précédente est installée). Vous pourriez vous donner cela avec votre séquençage, bien que la restauration soit une fonctionnalité que vous puissiez vivre sans. P>
C'est étrange, mais j'ai observé (en surveillant les boîtes de dialogue d'installation et en regardant le journal) que l'action InstallValidate B> semble être exécutée avant l'action Retirez les produits b> même s'ils 'Regalisé dans l'ordre inverse; Les planifiants de cette façon résoudent mon problème, même si je ne peux pas expliquer le comportement. De plus, dans les scénarios, j'ai testé, la restauration a toujours fonctionné correctement. Je vais devoir le tester plus soigneusement en fonction de votre suggestion.
J'ai mis en place la solution potentielle décrite dans la question, planifiant supprimer des produits forts> immédiatement avant InstallValidate strong>. Je n'ai pas encore vu de problèmes, mais je posterai à nouveau après que l'installation soit plus utilisée. P>
Notre installation utilise cela depuis un certain temps et je n'ai pas remarqué d'effets néfastes. P>
J'ai essayé
Son a déjà été intégré à l'installateur MSI / Windows ... Le seul problème est que les classes d'installateurs .NET n'utilisent pas les fonctionnalités "Installation de service" MSI. Ce qui se passe effectivement est que le MSI essaie d'installer des fichiers et d'exécuter une commande personnalisée à l'aide des fichiers simplement copiés (c'est-à-dire que tous les studios visuels se mettent dans le MSI).
Pour résoudre ce problème, vous pouvez modifier le MSI avec ORCA et Ajoutez la ligne suivante à la 1 ServiceName 170 1 C__489628C5CC1144CB47F43E8BE7F3F31D
Je pense que celui-ci vous aidera sans violer la documentation MSDN et éviter les problèmes futurs. Placez une condition "installée ou précédemmentInstallée" et vous serez bien à la mise à niveau depuis la mise à niveau car la propriété précédenteSInSInstallé est définie avant l'action InstallValidate lors des produits FindRelatedProduits. Je ne sais pas pourquoi, mais la propriété précédemmentInstallée n'est pas documentée dans MSDN, mais elle existe et très utile, pour moi. P>