35 votes

Installer un service Windows autodéveloppé

Je essaie de déployer un service que j'ai écrit. Voici le fichier InstallLog :

Installation de l'assembly 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'.
Les paramètres affectés sont :
   logtoconsole = 
   assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
   logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
Installation du service TweetLinkService...
Création de la source EventLog TweetLinkService dans le journal Application...
Rolling back de l'assembly 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'.
Les paramètres affectés sont :
   logtoconsole = 
   assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
   logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
Restauration du journal d'événements à l'état précédent pour la source TweetLinkService.
Une exception s'est produite pendant la phase de rollback de l'installateur System.Diagnostics.EventLogInstaller.
System.Security.SecurityException : La source n'a pas été trouvée, mais certains journaux d'événements ne peuvent pas être consultés. Journaux inaccessibles : Sécurité.
Une exception s'est produite pendant la phase de rollback de l'installation. Cette exception sera ignorée et le rollback se poursuivra. Cependant, la machine pourrait ne pas revenir entièrement à son état initial après la fin du rollback.

Comme vous pouvez le constater, cela ne fonctionne pas. Je ne sais pas comment procéder, et j'ai repris le mur avec Bing et Google. J'ai défini le compte sur LocalSystem pour le serviceProcessInstaller1. Le code se compile bien, mais maintenant j'aimerais exécuter la chose...des idées ? Je suis administrateur sur ma boîte, et j'exécute la commande :

InstallUtil TweetLinkQueue.exe

depuis la console d'administration VS2008.

MIS À JOUR AVEC l'option /ShowCallStack

Call Stack

Une exception s'est produite pendant la phase d'installation.
System.Security.SecurityException : La source n'a pas été trouvée, mais certains journaux d'événements ne peuvent pas être consultés. Journaux inaccessibles : Sécurité.
   at System.Diagnostics.EventLog.FindSourceRegistration(String source, String m
achineName, Boolean readOnly)
   at System.Diagnostics.EventLog.SourceExists(String source, String machineName
)
   at System.Diagnostics.EventLogInstaller.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.ServiceProcess.ServiceInstaller.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.AssemblyInstaller.Install(IDictionary savedSt
ate)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.TransactedInstaller.Install(IDictionary saved
State)

et voici le constructeur :

public TweetLinkService()
{
    InitializeComponent();

    if (!EventLog.SourceExists("TweetLinkQueue"))
    {
        EventLog.CreateEventSource("TweetLinkQueue", "Log");

        TweetLinksLog.Source = "TweetLinkQueue";
        TweetLinksLog.Log = "Log";

        TweetLinksLog.WriteEntry("Log Created!");
    }
}

MIS À JOUR avec le point d'entrée :

namespace TweetLinkQueue
{
    static class Program
    {
        /// 
        /// Le point d'entrée principal de l'application.
        /// 
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new TweetLinkService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

0 votes

Obtenez-vous des informations supplémentaires si vous exécutez installutil avec l'option /ShowCallStack?

0 votes

Les informations du fichier journal se trouvent dans la question ci-dessus.

0 votes

L'utilisateur avec lequel vous essayez d'installer le service a-t-il l'autorisation d'écrire dans le journal des événements de sécurité?

0voto

hormberg Points 101

J'ai rencontré les mêmes erreurs inexplicables lors de l'installation des services Windows. Dans notre cas, l'utilisateur était le problème.

L'installation du serveur avec l'utilisateur administrateur a fonctionné, mais pas avec un administrateur local. Cependant, ce n'est pas une solution préférée, nous avons donc utilisé ces informations pour créer un utilisateur différent qui pouvait installer le service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X