installation du service Windows avec SC.exe ou InstallUtil.exe – il y a une différence mais qui?

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 dépendances n’ont pas trouvé d’erreur) alors que Sc create installe avec bonheur le service. Trop append à l’étrangeté; le service ne s’affiche pas si je lance net start dans la console. Mais il apparaît dans l’interface graphique des services. Des variantes se produisent lorsque je tente de désinstaller.

J’ai écrit le service moi-même et les versions précédentes fonctionnent. Dotnet3.5.

Oui, l’installation d’un service n’est pas particulièrement compliquée. Il suffit d’écrire une poignée de clés de registre. Vous pouvez consulter Regedit.exe, accédez à HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services.

Sc.exe peut également écrire ces clés à l’aide des arguments de ligne de commande fournis. Néanmoins, ce n’est pas la bonne façon de le faire. Le but de InstallUtil.exe est d’activer le code d’installation personnalisé . Code que l’auteur du service a écrit. Ce qui n’est pas si rare, les services ont tendance à bourrer les informations de configuration dans leurs clés d’enregistrement pour leur propre usage. Vous verrez beaucoup de preuves à ce sujet lorsque vous consultez Regedit.

Je préfère sc.exe sur installutil.exe million de fois.

InstallUtil vous oblige à append la classe ProjectInstaller (je crois) et à coder en dur le nom du service et la description du service.

Il est donc très difficile de mettre en même temps deux versions du même service sur la même machine.

C’est pourquoi je n’utilise tout simplement pas InstallUtil.exe. Aussi à cause des réponses précédentes: vous en avez besoin dans votre package de déploiement. sc.exe est déjà dans Windows XP et au-dessus (je crois).

La principale différence réside dans le fait qu’InstallUtil n’est pas un utilitaire destiné à l’installation de services, mais en tant qu’outil d’installation générale. Depuis les pages MSDN, vous pouvez voir que:

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

Ainsi, il peut installer le service, mais il offre de nombreux autres avantages. La création de fichiers exécutables en fonction de la classe du programme d’installation vous permet de contrôler de manière systématique toute la procédure d’installation / de désinstallation. Par exemple, ServiceInstaller et ServiceProcessInstaller sont utilisés pour l’installation du service.

L’utilitaire ‘Sc’ est utilisé pour le contrôle de service et la commande ‘create’ crée simplement un service basé sur l’exécutable choisi.

Dans ton exemple
1. Il n’est pas destiné à être installé avec InstallUtil et la réponse aux erreurs doit être très claire à ce sujet.
2. InstallUtil échoue à cause d’un bogue dans le code d’installation et l’utilisation de sc create créera probablement un service défectueux pour vous. Vérifiez dans {exe_name} .InstallLog pour plus de détails.

À partir de l’expérience d’utilisation de la désinstallation: sc.exe sous Windows 7 supprime immédiatement l’entrée de la liste, mais après la désinstallation avec installutil, le redémarrage est nécessaire

Bien que InstallUtil soit le moyen privilégié pour accéder aux services .NET, l’une de ses faiblesses est qu’elle ne détecte pas les redirections de liaison de votre app.config, ce qui, dans certaines circonstances, peut entraîner l’échec de l’installation. C’est là que l’utilisation de SC peut vous apporter un avantage, au désortingment de l’impossibilité d’exécuter du code au moment de l’installation.

Malheureusement pour l’OP, TopShelf n’existait pas au moment de sa question. Il fonctionne autour des lacunes de SC et InstallUtil, et permet au service de démarrer avec le débogueur associé lors du démarrage dans Visual Studio. De plus, il est beaucoup plus facile de taper myservice install que de devoir accéder au dossier spécifique d’InstallUtil ou de saisir une tonne de parameters pour SC.