2009-07-27 6 views
9

J'essaie d'utiliser un programme d'installation pour un service Windows et je souhaite éviter d'utiliser InstallUtil.exe. Le programme d'installation semble fonctionner correctement (l'exécutable et les DLL se trouvent dans le bon répertoire), mais le service n'apparaît pas sous Gestion de l'ordinateur.Le programme d'installation du service C# - Windows n'enregistre pas le service

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

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

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

Sous les actions personnalisées, la sortie principale du service a été ajoutée à Installer, Valider, Restaurer et Désinstaller.

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

Des idées?

Répondre

15

Votre projet de service dispose-t-il d'une classe d'installation? Vous devriez en avoir un qui ressemble à ceci:

[RunInstaller(true)] 
public partial class Service1Installer : Installer 
{ 
    public Service1Installer() 
    { 
     InitializeComponent(); 
     ServiceProcessInstaller process = new ServiceProcessInstaller(); 
     process.Account = ServiceAccount.LocalSystem; 

     ServiceInstaller serviceAdmin = new ServiceInstaller(); 
     serviceAdmin.StartType = ServiceStartMode.Manual; 
     serviceAdmin.ServiceName = "Service1"; 
     serviceAdmin.DisplayName = "Service1"; 
     serviceAdmin.Description = "Service1"; 

     Installers.Add(serviceAdmin); 
    } 
} 
+0

Voilà ce qui me manquait. Je pensais que la partie Installers.Add() serait incluse dans le code Designer généré automatiquement, mais ce n'était pas le cas. Peut-être qu'ils l'ont changé? –

+0

Oui, j'ai vu que vous l'avez compris juste au moment où je postais – SpaceghostAli

3

Assurez-vous d'avoir créé une classe ServiceInstaller et ServiceProcessInstaller dans votre projet de service. (Vérifiez this link pour plus d'informations).

Fermez la gestion de l'ordinateur et la fenêtre Services, réexécutez votre programme d'installation 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.

+0

L'exemple de code dans le lien posté m'a mis sur la bonne voie, merci beaucoup. –

0

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

Je pense que dans le code de concepteur, dans la méthode InitializeComponent(), il est censé ajouter:

this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1}); 

Il était pas là, donc j'ajouté ce dans le constructeur ProjectInstaller:

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

Maintenant, lors de l'installation, il est répertorié comme un service de gestion de l'ordinateur.

Questions connexes