Avatar billede unipeg Nybegynder
12. oktober 2003 - 17:10 Der er 2 kommentarer

Windows-service

Hjæææælp! Jeg bliver (mere) vanvittig (end jeg er i forvejen).

Jeg sidder og forsøger at få bygget mig en windows service, det går helt fint tror jeg. Men at få dyret installeret går mindre godt:
Jeg bruger VS.NET 2003 og har projektet er et C# windows service-projekt. Så kan man jo tilføje en installer i designer-mode på selve service-klassen hvilket jeg har gjort. I denne installer (ProjectInstaller) har jeg angivet at min service skal køre som LocalSystem-brugeren, men ellers intet ændret.
Den kompilerede exe-fil er givet som argument til installutil efterfølgende og ak, ingen ny service er at finde i service-oversigten på min maskine. Så har jeg tilføjet et deployment-projekt til selve service-projektet og håbet på at kunne mere end hvad jeg kunne med installutil på en kommandoprompt. Men stadig, øv.
Hvad gør jeg galt?

Jeg har barberet min service helt ned for at eliminere fejlkilder, men her følger kildekoden:

service1.cs:


using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.ServiceProcess;



namespace workingService

{

      public class Service1 : System.ServiceProcess.ServiceBase

      {

            /// <summary>

            /// Required designer variable.

            /// </summary>

            private System.ComponentModel.Container components = null;



            public Service1()

            {

                  // This call is required by the Windows.Forms Component Designer.

                  InitializeComponent();



                  // TODO: Add any initialization after the InitComponent call

            }



            // The main entry point for the process

            static void Main()

            {

                  System.ServiceProcess.ServiceBase[] ServicesToRun;

     

                  // More than one user Service may run within the same process. To add

                  // another service to this process, change the following line to

                  // create a second service object. For example,

                  //

                  //  ServicesToRun = new System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};

                  //

                  ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };



                  System.ServiceProcess.ServiceBase.Run(ServicesToRun);

            }



            /// <summary>

            /// Required method for Designer support - do not modify

            /// the contents of this method with the code editor.

            /// </summary>

            private void InitializeComponent()

            {

                  components = new System.ComponentModel.Container();

                  this.ServiceName = "workingService";

            }



            /// <summary>

            /// Clean up any resources being used.

            /// </summary>

            protected override void Dispose( bool disposing )

            {

                  if( disposing )

                  {

                        if (components != null)

                        {

                              components.Dispose();

                        }

                  }

                  base.Dispose( disposing );

            }



            /// <summary>

            /// Set things in motion so your service can do its work.

            /// </summary>

            protected override void OnStart(string[] args)

            {

                  // TODO: Add code here to start your service.

            }



            /// <summary>

            /// Stop this service.

            /// </summary>

            protected override void OnStop()

            {

                  // TODO: Add code here to perform any tear-down necessary to stop your service.

            }

      }

}



ProjectInstaller.cs:



using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;

namespace workingService
{
      /// <summary>
      /// Summary description for ProjectInstaller.
      /// </summary>
      [RunInstaller(true)]

      public class ProjectInstaller : System.Configuration.Install.Installer

      {

    public System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;

    public System.ServiceProcess.ServiceInstaller serviceInstaller1;

            /// <summary>

            /// Required designer variable.

            /// </summary>

            private System.ComponentModel.Container components = null;



            public ProjectInstaller()

            {

                  // This call is required by the Designer.

                  InitializeComponent();



                  // TODO: Add any initialization after the InitializeComponent call

            }



            /// <summary>

            /// Clean up any resources being used.

            /// </summary>

            protected override void Dispose( bool disposing )

            {

                  if( disposing )

                  {

                        if(components != null)

                        {

                              components.Dispose();

                        }

                  }

                  base.Dispose( disposing );

            }





            #region Component Designer generated code

            /// <summary>

            /// Required method for Designer support - do not modify

            /// the contents of this method with the code editor.

            /// </summary>

            private void InitializeComponent()

            {

      this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();

      this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();

      //

      // serviceProcessInstaller1

      //

      this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

      this.serviceProcessInstaller1.Password = null;

      this.serviceProcessInstaller1.Username = null;

      //

      // serviceInstaller1

      //

      this.serviceInstaller1.ServiceName = "workingService";

      //

      // ProjectInstaller

      //

      this.Installers.AddRange(new System.Configuration.Install.Installer[] {

                                                                              this.serviceProcessInstaller1,

                                                                              this.serviceInstaller1});



    }

            #endregion

      }

}
Avatar billede unipeg Nybegynder
12. oktober 2003 - 23:24 #1
Hov, når jeg bruger InstallUtil fra en VS.NET kommandoprompt virker installationen fint, og min service tager bo på min maskine. Mystisk, eller?
Avatar billede Slettet bruger
21. juli 2008 - 20:12 #2
Måske skulle du lukke tråden...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester