il y a une différence, mais qui - l'installation de service Windows avec SC.exe ou InstallUtil.exe?

StackOverflow https://stackoverflow.com/questions/4692250

Question

SC.exe et InstallUtil à la fois installer / désinstaller des services Windows. Mais ils ne semblent pas fonctionner de la même manière.

Quelle est la différence?


Par exemple InstallUtil échoue (certains fichiers ou de dépendance erreur non trouvée) tandis que Sc créer heureusement le service installe. ajouter trop à l'étrangeté; le service ne se présente pas si je lance net start dans la console. Mais il ne se présente dans l'interface graphique des services. Des variantes de ce se passe lorsque je tente de désinstaller.

J'ai écrit moi-même le service et les versions antérieures fonctionnent. Dotnet3.5.

Était-ce utile?

La solution

Oui, l'installation d'un service est pas particulièrement compliqué. Il faut juste écrire une poignée de clés de registre. Vous pouvez jeter un oeil-voir avec Regedit.exe, accédez à HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services.

Sc.exe peut écrire ces touches aussi, en utilisant les arguments de ligne de commande fournie. Néanmoins, c'est pas la bonne façon de le faire. Le point de InstallUtil.exe est qu'il peut activer sur mesure code d'installation. Code que l'auteur de service écrit. Ce qui est pas rare, les services ont tendance à info config choses dans leurs clés d'enregistrement pour leur propre usage. Vous verrez beaucoup de preuves pour que lorsque vous avez un look avec Regedit.

Autres conseils

Je préfère SC.EXE plus installutil.exe million de fois.

forces InstallUtil vous ajouter la classe terrible ProjectInstaller (je crois) et hardcode il la description du nom du service et le service.

Ceci est en fait très difficile de mettre deux versions du même service en cours d'exécution dans la même machine en même temps.

C'est pourquoi je ne pas utiliser InstallUtil.exe du tout. De plus en raison des réponses précédentes: vous en avez besoin dans votre package de déploiement. sc.exe est déjà dans tous les Windows XP et plus (je crois).

La principale différence est que InstallUtil est pas utilitaire destiné à l'installation du service, mais comme outil d'installation général. Des pages MSDN vous pouvez voir que:

  

"L'outil d'installation est un utilitaire de ligne de commande qui vous permet de   installer et désinstaller les ressources du serveur en exécutant le programme d'installation   des composants dans des ensembles spécifiés. Cet outil fonctionne conjointement   avec des classes dans l'espace de noms System.Configuration.Install. "

Il peut donc installer le service mais il a beaucoup beaucoup beaucoup d'autres avantages. Création d'executables basé sur Installer classe vous donne un contrôle programatic de la procédure d'installation / désinstallation entier. ServiceInstaller et < a href = "http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller%28v=vs.110%29.aspx" rel = "noreferrer"> ServiceProcessInstaller , par exemple , sont utilisés pour l'installation du service.

utilitaire « Sc » est utilisé pour la commande de service et la commande « créer » sera simplement créer un service basé sur choisi exécutable.

Dans votre exemple
 1. Il n'est pas destiné à être installé avec InstallUtil et la réponse d'erreur devrait être tout à fait clair à ce sujet.
 2. InstallUtil échoue à cause d'un bug dans le code d'installation et d'utilisation sc     create probablement créer un service défectueux pour vous. Installez-vous dans {} exe_name .InstallLog pour plus de détails.

De l'expérience d'utilisation de désinstallation: sc.exe sous Windows 7 supprime l'entrée de la liste immédiatement, alors qu'après la désinstallation avec installutil il est nécessaire de redémarrer

Alors que InstallUtil est le meilleur moyen d'aller avec les services .NET, l'un de ses défauts est il ne captera pas la liaison de votre réoriente app.config, qui, dans certaines circonstances, peut provoquer l'installation à l'échec. C'est là en utilisant SC pourrait vous gagner un certain avantage, au détriment de ne pas être en mesure d'exécuter du code lors de l'installation.

Malheureusement pour l'OP, Topshelf n'existait pas au moment de sa question. Il travaille autour des lacunes de SC et InstallUtil, et permet au service de démarrer avec le débogueur attaché quand il à partir de Visual Studio. De plus, il est beaucoup plus facile de taper myservice install que d'avoir à forer vers le bas dans le dossier spécifique pour InstallUtil, ou tapez une tonne de paramètres pour SC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top