Inno Setup for Windows服务?
我有一个.Net Windows服务。 我想创建一个安装程序来安装该Windows服务。
基本上,它必须做到以下几点:
installutil.exe
(是否需要?) installutil.exe
MyService.exe 另外,我想提供一个运行以下命令的卸载程序:
installutil.exe /u MyService.exe
如何使用Inno Setup来完成这些操作?
您不需要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('{dotnet40}InstallUtil.exe'), ServiceLocation, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
显然,Inno安装程序具有以下常量用于引用系统上的.NET文件夹:
更多信息在这里。
您可以使用
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 ”。
链接地址: http://www.djcxy.com/p/44511.html