none
Instalace service

    Dotaz

  • Zdravim,

    skusal smo si vytvorit service v c# ale aby som ho mohol vyskusat musim ho najskor nainstalovat, coz mi z mne neznamich pricin nefunguje. Servis sa vola Myservis.exe skusal som z priakazovky "Myservis.exe \install" ako mi bolo poradene ale vypisalo mi to hlasku o tom ze servis nie je nainstalovany. tak som nasiel na MSDN inu variantu: "installutil Myservis.exe" ta mi vsak vyhodila ze installutil nie je prikaz systemu... tak spustil prikazovku ako admin, pretoze mam visty, ale ani to nezabralo.

    Mohol by mi pls niekto poradit co s tym?
    Dik
    středa 21. ledna 2009 14:27

Odpovědi

  • Dobrý den,

     

    installutil je správný směr. Najdete jej v příkazové řádce visual studia - Visual Studio 200x Command Prompt a nebo ve složce ''C:\Windows\Microsoft.NET\Framework\v2.0.50727'. Spustit jej musíte jako administrátor - jde přeci o instalaci. Samotné to ale stačit nebude. Ve vaší aplikaci implementujte třídu, která dědí od System.Configuration.Install.Installer a je označena atributem RunInstaller(true). V konstruktoru této třídy (bude zavolán při instalaci/odinstalaci) vytvoříte objekty ServiceProcessInstaller a ServiceInstaller, nastavíte jejich vlastnosti dle potřeby a přidáte je do kolekce Installers vaší třídy. 

     

    Kousek příkladu, který službu nainstaluje a spustí:

     

     

    [RunInstaller(true)]

    public class MyServiceInstaller : Installer

    {

    private ServiceProcessInstaller processInstaller;

    private ServiceInstaller serviceInstallerMonitorService;

     

    public MyServiceInstaller()

    {

    // This call is required by the Designer.

    InitializeComponent();

    }

     

    public override void Install(IDictionary stateSaver)

    {

    base.Install(stateSaver);

    Process.Start("NET","START MyserviceName");

    }

     

    protected override void OnBeforeInstall(IDictionary savedState)

    {

    Process.Start("NET", "STOP MyserviceName");

    base.OnBeforeInstall(savedState);

    }

    private void InitializeComponent()

    {

    this.processInstaller = new ServiceProcessInstaller();

    this.serviceInstaller = new ServiceInstaller();

    //

    // serviceProcessInstaller1

    //

    this.processInstaller.Account = ServiceAccount.LocalSystem;

    this.processInstaller.Password = null;

    this.processInstaller.Username = null;

    //

    // serviceInstaller1

    //

    this.serviceInstaller.Description = "Toto je ukázka instalace služby Myservice, www.uzuzu.cz";

    this.serviceInstaller.DisplayName = "Moje služba";

    this.serviceInstaller.ServiceName = "MyserviceName";

    this.serviceInstaller.StartType = ServiceStartMode.Automatic;

    //

    // MyServiceInstaller

    //

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

    this.serviceInstaller,

    this.processInstaller

    });

    }

    }

    středa 21. ledna 2009 20:32

Všechny reakce

  • Dobrý den,

     

    installutil je správný směr. Najdete jej v příkazové řádce visual studia - Visual Studio 200x Command Prompt a nebo ve složce ''C:\Windows\Microsoft.NET\Framework\v2.0.50727'. Spustit jej musíte jako administrátor - jde přeci o instalaci. Samotné to ale stačit nebude. Ve vaší aplikaci implementujte třídu, která dědí od System.Configuration.Install.Installer a je označena atributem RunInstaller(true). V konstruktoru této třídy (bude zavolán při instalaci/odinstalaci) vytvoříte objekty ServiceProcessInstaller a ServiceInstaller, nastavíte jejich vlastnosti dle potřeby a přidáte je do kolekce Installers vaší třídy. 

     

    Kousek příkladu, který službu nainstaluje a spustí:

     

     

    [RunInstaller(true)]

    public class MyServiceInstaller : Installer

    {

    private ServiceProcessInstaller processInstaller;

    private ServiceInstaller serviceInstallerMonitorService;

     

    public MyServiceInstaller()

    {

    // This call is required by the Designer.

    InitializeComponent();

    }

     

    public override void Install(IDictionary stateSaver)

    {

    base.Install(stateSaver);

    Process.Start("NET","START MyserviceName");

    }

     

    protected override void OnBeforeInstall(IDictionary savedState)

    {

    Process.Start("NET", "STOP MyserviceName");

    base.OnBeforeInstall(savedState);

    }

    private void InitializeComponent()

    {

    this.processInstaller = new ServiceProcessInstaller();

    this.serviceInstaller = new ServiceInstaller();

    //

    // serviceProcessInstaller1

    //

    this.processInstaller.Account = ServiceAccount.LocalSystem;

    this.processInstaller.Password = null;

    this.processInstaller.Username = null;

    //

    // serviceInstaller1

    //

    this.serviceInstaller.Description = "Toto je ukázka instalace služby Myservice, www.uzuzu.cz";

    this.serviceInstaller.DisplayName = "Moje služba";

    this.serviceInstaller.ServiceName = "MyserviceName";

    this.serviceInstaller.StartType = ServiceStartMode.Automatic;

    //

    // MyServiceInstaller

    //

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

    this.serviceInstaller,

    this.processInstaller

    });

    }

    }

    středa 21. ledna 2009 20:32
  • A prosim Vas nenasla by sa nejaka literatura o servisoch?nefunguju mi ani jednoduche priklady ako servis, ktore sa daju najst na internete. vzdy skoncia, alebo servis vyhodi chybu a nic nevykona, aj ked kod je napisany bez chyby.

    dik
    • Upravený mauki čtvrtek 22. října 2009 12:24 zmena:)
    pátek 23. ledna 2009 9:50