首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否没有Windows服务的设置?

是否没有Windows服务的设置?
EN

Stack Overflow用户
提问于 2009-09-20 01:10:35
回答 5查看 56.1K关注 0票数 106

我有一个.Net视窗服务。我想创建一个安装程序来安装那个windows服务。

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

  1. installutil.exe (是否必需?)
  2. Run installutil.exe MyService.exe
  3. Start MyService

<代码>G29

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

installutil.exe /u MyService.exe

如何使用Inno设置来完成这些操作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-20 01:39:52

你不需要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"
票数 240
EN

Stack Overflow用户

发布于 2014-10-16 17:53:56

下面是我是如何做到的:

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

显然,Inno setup具有以下常量,用于引用系统上的.NET文件夹:

  • {dotnet11}
  • {dotnet20}
  • {dotnet2032}
  • {dotnet2064}
  • {dotnet40}
  • {dotnet4032}
  • {dotnet4064}

有关更多信息,请访问here

票数 8
EN

Stack Overflow用户

发布于 2010-08-15 23:33:08

您可以使用

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1449994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档