我创建了使用Visual Studio C#Express中的可执行MyService.exe。 有在Express版本没有选项来创建服务。 在过去,这已被手动安装与使用中所描述的INSTSRV和SRVANY一个用户定义的服务MSDN文章“如何创建一个用户定义的服务”
是否有可能创建一个WiX的3.5安装此文件
- 不需要SRVANY.EXE和INSTRV.exe文件的存在,在目标机上
- 不使用INSTSRV.EXE作为自定义操作
我创建了使用Visual Studio C#Express中的可执行MyService.exe。 有在Express版本没有选项来创建服务。 在过去,这已被手动安装与使用中所描述的INSTSRV和SRVANY一个用户定义的服务MSDN文章“如何创建一个用户定义的服务”
是否有可能创建一个WiX的3.5安装此文件
维克斯不支持安装Windows服务,但只有本地的。 这意味着应用程序必须写成服务 。
由于您的应用程序使用SRVANY.EXE作为服务运行,你有两个选择
要么
这里是真正的独家新闻:服务是一种服务是一种服务。 这是我的座右铭。 我的意思是,我不关心,如果您使用的是C ++ EXE,一个VB EXE,一个C#EXE,一些置信转换主机EXE如SRVANY.EXE ......它们都实现了相同的API与服务交互控制管理。
所以SRVANY是会得到由单片机调用,并得到了启动命令。 在这一点上它要读取注册表值,并知道如何运行其他的EXE或脚本。 当SRVANY得到停止调用它会终止你的流程和报告停下来的SCM。
这就是如何服务运行。 让我们来谈谈如何安装它。 有许多方式,你可以以编程方式创建服务(SC,INSTSRV.EXE,安装类自定义操作等),但是从他们的角度来看MSI没有一个是曾经需要。 Windows安装程序具有随着标准的行动来处理启动,停止,创建和删除Windows服务,则ServiceInstall和的ServiceControl表。 偶尔,如与SRVANY.EXE的情况下,你得到一些不能使用这些表来表示安装要求和在这种情况下,你使用注册表表。 对于SRVANY.EXE这是创建与教SRVANY.EXE启动时实际上所谓的注册表数据的参数项的要求。
下面是使用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>