是否可以使用WIX通过Windows服务运行EXE而无需创建服务项目?

时间:2016-07-23 04:28:26

标签: c# wix windows-services windows-installer wix3.10

我有这个mosquitto.exe,我需要使用WiX作为Windows服务安装。当我创建一个Windows服务项目并通过其start方法运行EXE时,一切正常。但是,是否可以仅使用ServiceControl和ServiceInstall行运行mosquitto.exe,而无需单独的Windows服务项目?我尝试了这个,但服务无法启动虽然它没有问题。

 </Component>
  <Component Id="cmp59455E1C37B7879C4BC250DE3D60A2AD" Directory="MyProgramDir" Guid="179B4F4C-912B-4CA1-8F08-5E1B4ADFFD8B" Win64="no">
    <File Id="fil7D28AEF774656849395A2FA20A5C963D" KeyPath="yes" Source="../../../Setups/mosquitto/mosquitto/mosquitto.exe" />
   <ServiceInstall Id="MosquittoSI" Type="ownProcess" Name="Mosquitto" DisplayName="Mosquitto" Description="Mosquitto broker service" Start="auto" Account="LocalSystem"  ErrorControl="normal"/>
 <ServiceControl Id="MosquittoSC" Start="install" Stop="both" Remove="uninstall" Name="Mosquitto" Wait="no" />  
</Component>

我在这里做错了什么,或者我真的需要通过使用Windows服务项目创建的另一个exe启动这个mosquitto.exe吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

之前从未听说过Mosquitto,但是快速查看其项目网站及其installer(NSIS)说它是Windows服务。该安装程序只运行mosquitto.exe installmosquitto.exe uninstall视情况而定。

一般来说,我建议让第三方安装人员做他们做的事 - 直到证明不可靠。要使用他们的安装程序,您可以创建一个WiX Bootstrapper项目(使用“burn”包管理器;项目通常有一个带有Bundle根元素的bundle.wxs。)

可能存在要传递给它的命令行参数(标准NSIS或自定义),例如静默安装。