La principale différence est que InstallUtil n'est pas un utilitaire destiné à l'installation de services mais un outil d'installation général. Sur les pages MSDN, vous pouvez voir que:
"L'outil d'installation est un utilitaire en ligne de commande qui vous permet d'installer et de désinstaller des ressources serveur en exécutant les composants d'installation dans des assemblies spécifiés. Cet outil fonctionne en conjonction avec les classes de l'espace de noms System.Configuration.Install."
Ainsi, il peut installer des services mais il offre de nombreux autres avantages. Créer des exécutables basés sur la classe Installer vous donne un contrôle programmatique de toute la procédure d'installation/désinstallation. Par exemple, ServiceInstaller et ServiceProcessInstaller sont utilisés pour l'installation de services.
L'utilitaire 'Sc' est utilisé pour le contrôle des services et la commande 'create' va simplement créer un service basé sur l'exécutable choisi.
Dans votre exemple
1. Il n'est pas censé être installé avec InstallUtil et la réponse d'erreur devrait être assez claire à ce sujet.
2. InstallUtil échoue en raison d'un bug dans le code d'installation et l'utilisation de sc create va probablement créer un service défectueux pour vous. Vérifiez le {nom_exe}.InstallLog pour plus de détails.
1 votes
Voici un avertissement : la désinstallation (je ne me souviens pas si c'est sc.exe ou installUtil) n'est pas possible si vous avez les services ouverts dans le panneau de contrôle.
0 votes
Peut-être que l'OP rencontre la même erreur que moi : en utilisant InstallUtil, j'ai essayé de configurer le nom du service dans App.config. Il s'avère que nous ne pouvons pas installer le service si nous lisons à partir du fichier de configuration (doit être une question de dépendance). Finalement, nous avons décidé de coder en dur le nom du service. Puis passer à SC