2010-01-15 36 views
37

Bir Windows Service'i installutil.exe kullanmadan program aracılığıyla nasıl yüklerim?Program aracılığıyla Windows Service yükleme

+0

Ve başka 3. parti montajcılar kullanmayan ? –

+0

yep .... Keşke installservice() gibi bir işlevi kullanabilseydim ve windowsservice.exe dosyasını çift tıkladığımda, yüklü değilse, kendisini yükleyip yüklemediğini kontrol eder. – Josh

+1

bu iyi bir işlev :) :) – Danail

cevap

54

(program dosyasında, program.cs) kendisi yüklemeye makale ve harika çalışıyor.

Windows Services Can Install Themselves

+0

Bu bağlantı kapalı. –

+6

Bu, "alt düzey" advapi32.dll kullanmak yerine bunu yapmanın açık ve uygun bir yolu olsa da, çerçeve belgeleri "Bu API, .NET Framework altyapısını destekler ve doğrudan kodunuzdan kullanılmaya yönelik değildir." Şeklinde belirtilmiştir. Ama yine de "ManagedInstallerClass" ve yeni .net sürümlerindeki gelecekteki uyumsuzluk risklerini tercih ediyorum. (http://msdn.microsoft.com/pt-br/library/system.configuration.install.managedinstallerclass) – Luciano

3

Windows Hizmetimi, MyWindowsService.exe -install ve MyWindowsService.exe -uninstall komut satırından yükleyip, installutil.exe kendim kullanmaktan kaçınmak için yüklerim. Bu here'un nasıl yapılacağıyla ilgili bir dizi talimat yazdım. Aşağıdaki CodeProject gelen yöntemi kullanın

/// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     static void Main(string[] args) 
     { 
      if (System.Environment.UserInteractive) 
      { 

       if (args.Length > 0) 
       { 
        switch (args[0]) 
        { 
         case "-install": 
          { 
           ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); 
           break; 
          } 
         case "-uninstall": 
          { 
           ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); 
           break; 
          } 
        } 
       } 
      } 
      else 
      { 
       ServiceBase[] ServicesToRun; 
       ServicesToRun = new ServiceBase[] { new MyService() }; 
       ServiceBase.Run(ServicesToRun); 
      } 
     } 
+0

OP, bu program aracılığıyla komut satırı aracılığıyla değil nasıl yapılacağını sordu. – Mike

+0

Çözümüm, komut satırından kabul edilen yanıtla aynı şekilde erişilen programatik bir çözümdür. –

9

: Belirtilen parametreleri kullanarak komut ile çalıştırdığınızda

Bu kodu ekleyerek hizmet yükleyebilirsiniz
+2

Harika bağlantı; Bununla birlikte, Mahmoud Nasr tarafından yazılan bir bağlantıya atıfta bulunur. Bunu kullandım ve benim için çalışıyor. https://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 –

+1

Bu bağlantı yanıtlanabilirken Soru, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum yazıla] (/ review/düşük kaliteli yazılar/18705889) – amod

İlgili konular