Comment puis-je éliminer “Le service spécifié existe déjà” quand j'ai installer les nouvelles versions de mon logiciel?
J'ai un VS2008 application qui comprend un projet de service (je vais l'appeler ServiceProject). J'ai le projet d'installation (InstallationProject) RemovePreviousVersions. En outre, j'ai Personnalisé les Actions mises pour InstallationProject, pour Installer, Commit, Rollback, et de la Désinstallation de la sortie Principale de ServiceProject.
Parfois, quand je construire de nouvelles versions de l'installateur, je peux installer sans erreur. Souvent, quand j'arrive au point de mise en place du service (de la saisie d'un nom d'utilisateur et mot de passe dans le programme d'installation) - il échoue avec l'erreur, "Le service spécifié existe déjà".
Je ne sais pas pourquoi il est incohérent, mais j'ai pensé que peut-être il y a une sorte de signature pour le service, et si le service n'est pas modifié, il est capable de l'enlever avec succès, mais avec des modifications, il ne reconnaît pas le service. Cependant, j'ai rarement faire des modifications pour le service, je doute que c'est elle.
Comment puis-je faire mon programme d'installation de mise à jour du service, sans cette erreur? Mon travail consiste à aller manuellement dans le Panneau de configuration, désinstaller l'ancienne application, puis lancez le programme d'installation.
OriginalL'auteur pc1oad1etter | 2009-01-16
Vous devez vous connecter pour publier un commentaire.
En plus pour vous assurer que les versions des fichiers sont différents, tout comme StingyJack mentionné que vous avez un autre problème. À partir de la VS documentation (désolé, pas en ligne)
Si vous installez un service à l'aide d'une action personnalisée - mais lors de la mise à niveau de la Désinstallation est de ne pas être appelé que vous attendez et que vous essayez d'Installer sur une version en cours d'exécution.
Je pense que lors de sa demande de redémarrer l'ordinateur est parce qu'il ne peut pas mettre à jour le fichier des services, tandis que ses cours d'exécution.
Deux options :-
Pour ajouter du code à Installer/Commettre une action personnalisée pour Arrêter le service, attendez que le programme d'installation pour remplacer les services de fichiers, puis redémarrez le service. Voir PonalSuper3 de réponse dans ce thread
Mettre le VS2008 le comportement de la façon dont il a travaillé dans VS2005 (les anciennes versions de Désinstallation personnalisée d'action est appelée avant que la nouvelle version de l'Installer) à l'aide d'Orca pour modifier la InstallExecuteSequence.RemoveExistingProducts immédiatement après .InstallInitialize - en général, vous définissez la .RemoveExistingProducts à 1525, mais vérifiez votre MSI.
J'ai ajouté un le script que vous pouvez ajouter à votre processus de création de changer de MSI InstallExecuteSequence
OriginalL'auteur Ryan
Mettre "Pas (Installé OU PREVIOUSVERSIONSINSTALLED)" dans les Actions Personnalisées->Installer de la Condition de la propriété.
OriginalL'auteur Tomer Pintel
Assurez-vous que la version de l'assembly du service et le GUID (En AssemblyInfo.vb/cs) sont à se changer lorsque vous déployez chaque nouveau paquet d'installation. S'il détecte la même version de mises à jour échouent.
J'ai essayé de mettre à jour les deux versions (AssemblyVersion, FileVersion, quelque chose comme ça) et il m'a permis d'installer -- mais lui a demandé de redémarrer l'ordinateur. Ce serait attendre à tout moment le service est mis à jour, l'utilisateur sera invité à redémarrer à la fin?
Je ne sais pas sur le redémarre. Peut-être en disant que parce que son plus facile pour les utilisateurs à faire que de leur donner des instructions sur le redémarrage des services windows.
besoin de redémarrer suggère fichiers ont été immobilisés, c'est à dire, le service n'a pas obtenir de l'arrêté correctement. Quelque chose ne va pas.
Aussi @StingyJack: vous dites "mises à jour échouent", c'est plus que des mises à jour comme prévu - ils ne pas envisager le fichier à être plus récente, et donc n'essayez pas de upgarde la version que c'est la même chose. Mais j'ai un long chemin à parcourir pour obtenir des droits d'édition!
OriginalL'auteur StingyJack
Quelque chose qui peut aider, mais n'a pas été déclaré dans l'un des ci-dessus, qui est liée à la réponse de Ryan. Ce même problème est arrivé à moi, jusqu'à ce que j'ai fait cela: ouvrez le .msi dans Orca et recherchez la Mise à niveau de la table. Où la previousversioninstalled ligne (c'était la première entrée dans la mienne), vous devriez voir un code de mise à niveau. Trouver le .msi du programme qui est actuellement installé (celui que vous souhaitez mettre à niveau), trouver le code de mise à niveau (que vous pouvez faire dans orca), et la copier et la coller dans la table de mise à niveau de vos nouvelles .msi. Cela a fait l'affaire pour moi.
OriginalL'auteur GetBrutal
Essayer ce code dans votre programme d'installation de la classe. J'espère que ça va résoudre votre problème.
Et aussi mettre "NOTPREVIOUSVERSIONSINSTALLED"
OriginalL'auteur Tanmay Nehete