Windows services Wix安装程序将替换INSTSRV和SRVANY进行用户定义的服务安装
我使用Visual Studio C#Express创建了一个可执行文件MyService.exe。Express版本中没有创建服务的选项。在过去,已使用INSTSRV和SRVANY手动将其安装为用户定义的服务,如中所述 是否可以为此文件创建wix 3.5安装程序Windows services Wix安装程序将替换INSTSRV和SRVANY进行用户定义的服务安装,windows-services,wix,windows-installer,instsrv,srvany,Windows Services,Wix,Windows Installer,Instsrv,Srvany,我使用Visual Studio C#Express创建了一个可执行文件MyService.exe。Express版本中没有创建服务的选项。在过去,已使用INSTSRV和SRVANY手动将其安装为用户定义的服务,如中所述 是否可以为此文件创建wix 3.5安装程序 不要求目标计算机上存在SRVANY.exe和INSTRV.exe文件 不将INSTSRV.exe用作自定义操作 WiX支持安装Windows服务,但仅支持本机服务。这意味着应用程序必须是 由于应用程序使用SRVANY.EXE作为服务运
WiX支持安装Windows服务,但仅支持本机服务。这意味着应用程序必须是 由于应用程序使用SRVANY.EXE作为服务运行,因此有两个选项
- 将应用程序重写为本机Windows服务
- 用于执行SRVANY.EXE和INSTSRV.EXE命令行
- 真正的独家新闻是:服务就是服务就是服务。这是我的座右铭。我的意思是,我不在乎你是否使用C++ exe,一个VB exe,一个C exe exe,一些thungHub exe,比如SrvAn.exe…它们都实现了相同的API来与服务控制管理器交互
因此,SrvAny将被SCM调用,并获得一个start命令。此时,它将读取注册表值,并知道如何运行其他EXE或脚本。当SrvAny接到停止呼叫时,它将终止您的进程并向SCM报告停止
服务就是这样运行的。让我们谈谈如何安装它。有很多方法可以通过编程方式创建服务(SC、InstSrv.exe、安装程序类自定义操作等),但从MSI的角度来看,这些方法都不需要。Windows安装程序具有ServiceInstall和ServiceControl表以及处理启动、停止、创建和删除Windows服务的标准操作。有时,例如SrvAny.exe,您会得到一些无法用这些表表示的安装程序要求,在这种情况下,您将使用注册表表。对于SrvAny.exe,这是使用注册表数据创建参数键的要求,该注册表数据指示SrvAny.exe在启动时实际调用什么
以下是WiX中使用SrvAny.exe将NodeJs脚本作为服务运行的示例:
<Component Id="c1" Guid="redacted">
<File Id="f1" Source="$(var.SourceDir)\srvany.exe" KeyPath="yes" />
<ServiceInstall Id="si1" DisplayName="MyService" Description="MyService" Name="MyService" Start="auto" Type="ownProcess" Vital="no" ErrorControl="normal" Account="NT AUTHORITY\NetworkService" />
<ServiceControl Id="sc1" Name="MyService" Remove="both" Stop="both" Start="install" Wait="yes" />
<RegistryValue Id="reg1" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MyService\Parameters" Name="Application" Type="string" Value="node "[#f2]"" Action="write" />
</Component>
<Component Id="c2" Guid="redacted" KeyPath="yes">
<File Id="f2" Source="$(var.SourceDir)\server.js" />
</Component>
这并不完全正确。您可以使用SRVANY.EXE将EXE包装为服务,使用Wix/MSI ServiceInstall功能替换INSTSRV.EXE.C#express可能没有服务的项目类型,但我无法想象您为什么不能创建EXE项目并自己实现ServiceBase类。那你就不需要斯瓦尼了。谢谢你的回答。这正是我一直在寻找的+1遗憾的是,几年前我没有看到它。