一尘不染

Windows服务的Inno安装程序?

c#

我有一个.Net Windows服务。我想创建一个安装程序来安装该Windows服务。

基本上,它必须执行以下操作:

  1. 包装installutil.exe(需要吗?)
  2. 运行installutil.exeMyService.exe
  3. 启动MyService

另外,我想提供一个运行以下命令的卸载程序:

installutil.exe /u MyService.exe

如何使用Inno Setup进行这些操作?


阅读 545

收藏
2020-05-19

共1个答案

一尘不染

您不需要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"
2020-05-19