Lorsque je crée un nouveau service Windows dans Visual Studio 2010, je reçois le message indiquant d'utiliser InstallUtil et net start pour exécuter le service.
J'ai essayé les étapes suivantes:
- Créer un nouveau fichier de projet -> Nouveau -> Projet -> Service Windows
- Nom du projet: TestService
- Construire le projet tel quel (constructeur Service1, OnStart, OnStop)
- Ouvrez l'invite de commande, exécutez "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe" TestService.exe
- Exécutez TestService net start .
Sortie de l'étape 4
Exécution d'une installation traitée.
Début de la phase d'installation de l'installation.
Consultez le contenu du fichier journal pour connaître la progression de l'assembly C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe.
Le fichier se trouve dans C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ Tes tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog.
Installation de l'assembly 'C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe'.
Les paramètres concernés sont:
logtoconsole =
logfile = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ T estService \ obj \ x86 \ Debug \ TestService.InstallLog
assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe
Aucun programme d'installation public avec l'attribut RunInstallerAttribute.Yes n'a pu être trouvé dans l'assembly C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe.
La phase d'installation s'est terminée avec succès et la phase de validation commence.
Consultez le contenu du fichier journal pour connaître la progression de l'assembly C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exe.
Le fichier se trouve dans C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ Tes tService \ TestService \ obj \ x86 \ Debug \ TestService.InstallLog.
Assemblage de validation 'C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe'.
Les paramètres concernés sont:
logtoconsole =
logfile = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ T estService \ obj \ x86 \ Debug \ TestService.InstallLog
assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestServ ice \ TestService \ obj \ x86 \ Debug \ TestService.exe
Aucun programme d'installation public avec l'attribut RunInstallerAttribute.Yes n'a pu être trouvé dans l'assembly C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe.
Supprimez le fichier InstallState car il n'y a aucun programme d'installation.
La phase de validation s'est terminée avec succès.
L'installation traitée est terminée.
Sortie de l'étape 5
Le nom du service n'est pas valide.
Une aide supplémentaire est disponible en tapant NET HELPMSG 2185.
Regarder:
Il semble que vous n'ayez pas de classe d'installation dans votre code. C'est une classe qui en hérite vous
Installer
dirainstallutil
comment installer votre exécutable en tant que service.Ps J'ai mon propre petit modèle de service Windows auto-installable / déboguable ici que vous pouvez copier du code ou utiliser: Service Windows déboguable et auto-installable
la source
Voici une autre façon de créer le programme d'installation et de supprimer ce message d'erreur. Il semble également que VS2015 express ne dispose pas de l'élément de menu "Ajouter un programme d'installation".
Il vous suffit de créer une classe et d'ajouter le code ci-dessous et d'ajouter la référence System.Configuration.Install.dll.
la source
Deux problèmes typiques:
la source
Un autre problème possible (que j'ai rencontré):
Assurez-vous que la
ProjectInstaller
classe estpublic
. Pour être honnête, je ne sais pas exactement comment je l'ai fait, mais j'ai ajouté des gestionnaires d'événementsProjectInstaller.Designer.cs
, comme:this.serviceProcessInstaller1.BeforeInstall += new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);
Je suppose que pendant le processus automatique de création de la fonction de gestionnaire,
ProjectInstaller.cs
il a changé la définition de classe depublic class ProjectInstaller : System.Configuration.Install.Installer
à
partial class ProjectInstaller : System.Configuration.Install.Installer
en remplaçant le
public
mot - clé parpartial
. Donc, pour le réparer, il doit êtrepublic partial class ProjectInstaller : System.Configuration.Install.Installer
J'utilise l'édition communautaire de Visual Studio 2013.
la source
Changement furtif dans VS 2010 et .NET 4.0 et versions ultérieures
Aucun programme d'installation public avec l'attribut RunInstallerAttribute.Yes n'a été trouvé
Il y a un changement d'alias ou un nettoyage du compilateur dans .NET qui peut révéler ce petit ajustement pour votre cas spécifique.
Si vous avez le code suivant…
Vous devrez peut-être le mettre à jour pour
C'est comme un alias changé sous les couvertures au moment de la compilation ou à l'exécution et vous obtiendrez ce comportement d'erreur. La modification explicite ci-dessus de RunInstallerAttribute (true) l'a corrigé dans tous nos scénarios d'installation sur toutes les machines.
Après avoir ajouté le programme d'installation du projet ou du service, recherchez l '«ancien» RunInstaller (true) et remplacez-le par le nouveau RunInstallerAttribute (true)
la source
Encore un autre problème que j'ai rencontré: assurez-vous que votre classe dérivée du programme d'installation (généralement
ProjectInstaller
) est en haut de la hiérarchie des espaces de noms, j'ai essayé d'utiliser une classe publique dans une autre classe publique, mais cela entraîne la même vieille erreur:Aucun programme d'installation public avec l'attribut RunInstallerAttribute.Yes n'a été trouvé
la source