11
votes

C # - Installateur de service Windows ne pas enregistrer le service

J'essaie d'utiliser un installateur pour un service Windows et que vous souhaitez éviter d'utiliser InstallUtil.exe. L'installateur semble fonctionner correctement (les exécutables et les DLL sont dans le bon répertoire), mais le service n'apparaît pas sous gestion de l'ordinateur.

Voici ce que j'ai fait jusqu'à présent:

Le nom de la classe de service est la valeur par défaut - Service1.

Dans le programme d'installation du projet, le serveurName du programme d'installation de service correspond au nom de la classe - Service1.

Sous les actions personnalisées, la sortie principale du service a été ajoutée à l'installation, à validation, à la restauration et à la désinstallation.

J'utilise http://support.microsoft.com/kb/816169 comme une référence.

Des idées?


0 commentaires

3 Réponses :


3
votes

Assurez-vous de créer une classe ServiceInstaller et ServiceProcessInstaller dans votre projet de service. (Vérifiez Ce lien pour plus d'informations). < / p>

Fermer la gestion de l'ordinateur et la fenêtre Services, exécutez votre installateur à nouveau et rouvrez la fenêtre Services.

Si cela ne fonctionne pas, redémarrez votre ordinateur. Vous pourriez avoir des fichiers verrouillés.

Il va sans dire que vous avez probablement besoin de privilèges administratifs sur la machine pour que cela fonctionne correctement.


1 commentaires

L'exemple de code dans le lien posté m'a eu sur la bonne voie, merci un tas.



0
votes

Je pense que je l'ai compris. Cela pourrait être un bug avec le code designer ou peut-être j'ai raté une étape.

Je pense que dans le code de concepteur, dans la méthode Initializececomponent (), il est supposé ajouter: P>

Installers.Add(serviceInstaller1);
Installers.Add(serviceProcessInstaller1);


0 commentaires

16
votes

Votre projet de service a-t-il une classe d'installateurs? Vous devriez en avoir un qui ressemble à quelque chose comme ceci: xxx


2 commentaires

C'est ce que j'avais manqué. Je pensais que la partie Installers.Ajoud () serait incluse dans le code de concepteur généré automatiquement, mais ce n'était pas le cas. Peut-être qu'ils l'ont changé?


Oui je t'ai vu comprendre comme je postais