c# विंडोज सेवा के लिए इनो सेटअप?




windows-services inno-setup (4)

यदि आप अपग्रेड करते समय रीबूट से बचना चाहते हैं तो आपको exe की प्रतिलिपि बनाने से पहले सेवा को रोकना होगा और फिर से शुरू करना होगा।

सेवा पर ऐसा करने के लिए कुछ स्क्रिप्ट फ़ंक्शंस हैं - कार्य शुरू करें, रोकें, इंस्टॉल करें, एक सेवा निकालें

मेरे पास एक नेट विंडोज सेवा है। मैं उस विंडोज़ सेवा को स्थापित करने के लिए एक इंस्टॉलर बनाना चाहता हूं।

असल में, इसे निम्नलिखित करना है:

  1. पैक installutil.exe (क्या यह आवश्यक है?)
  2. Installutil.exe MyService.exe चलाएं
  3. MyService शुरू करें

साथ ही, मैं एक अनइंस्टॉलर प्रदान करना चाहता हूं जो निम्न आदेश चलाता है:

installutil.exe /u MyService.exe

इनो सेटअप का उपयोग करके इन्हें कैसे करें?


आपको installutil.exe आवश्यकता नहीं है और शायद आपके पास इसे फिर से वितरित करने के अधिकार भी नहीं हैं।

यहां मैं अपने आवेदन में ऐसा कर रहा हूं:

using System;
using System.Collections.Generic;
using System.Configuration.Install; 
using System.IO;
using System.Linq;
using System.Reflection; 
using System.ServiceProcess;
using System.Text;

static void Main(string[] args)
{
    if (System.Environment.UserInteractive)
    {
        string parameter = string.Concat(args);
        switch (parameter)
        {
            case "--install":
                ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
                break;
            case "--uninstall":
                ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
                break;
        }
    }
    else
    {
        ServiceBase.Run(new WindowsService());
    }
}

मूल रूप से आप मेरे उदाहरण में दिखाए गए ManagedInstallerClass का उपयोग कर अपने आप को इंस्टॉल / अनइंस्टॉल करने के लिए अपनी सेवा कर सकते हैं।

तो यह आपके InnoSetup स्क्रिप्ट में कुछ इस तरह जोड़ने की बात है:

[Run]
Filename: "{app}\MYSERVICE.EXE"; Parameters: "--install"

[UninstallRun]
Filename: "{app}\MYSERVICE.EXE"; Parameters: "--uninstall"

आप उपयोग कर सकते हैं

Exec(
    ExpandConstant('{sys}\sc.exe'),
    ExpandConstant('create "MyService" binPath= {app}\MyService.exe start= auto DisplayName= "My Service" obj= LocalSystem'), 
    '', 
    SW_HIDE, 
    ewWaitUntilTerminated, 
    ResultCode
    )

एक सेवा बनाने के लिए। कैसे शुरू करें, रोकें, सेवा की स्थिति की जांच करें, सेवा हटाएं, आदि पर " sc.exe " देखें।


यहां बताया गया है कि मैंने यह कैसे किया:

Exec(ExpandConstant('{dotnet40}\InstallUtil.exe'), ServiceLocation, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

जाहिर है, इनो सेटअप में आपके सिस्टम पर .NET फ़ोल्डर को संदर्भित करने के लिए निम्न स्थिरांक हैं:

  • {} Dotnet11
  • {} Dotnet20
  • {} Dotnet2032
  • {} Dotnet2064
  • {} Dotnet40
  • {} Dotnet4032
  • {} Dotnet4064

here उपलब्ध अधिक जानकारी।





inno-setup