Возможно, вам нужно установить разрешение для вашего сервиса, что-то вроде этого:
<ServiceInstall Id="YourServiceID" Name="ServiceName" DisplayName="DisplayName"
Description="Description"
Arguments="service start arguments"
Start="demand" Type="ownProcess" ErrorControl="ignore">
<util:PermissionEx User="Authenticated Users"
ServiceStart="yes"
ServiceStop="yes"
ServicePauseContinue="yes"
ServiceInterrogate="yes"
ServiceChangeConfig="yes"
ServiceEnumerateDependents="yes"
ServiceQueryConfig="yes"
ServiceQueryStatus="yes"
ServiceUserDefinedControl="yes" />
</ServiceInstall>
<ServiceControl Id="SvcControlID" Name="ServiceName" Stop="both"
Remove="uninstall" Wait="yes" />
и не забудьте включить UtilExtension:
XMLNS: Util = "http://schemas.microsoft.com/wix/UtilExtension"
Есть другой способ (но не рекомендуется :)
Вы можете попробовать установить его, используя пользовательские действия:
<Property Id="CMD" Secure="yes"><![CDATA[cmd.exe]]></Property>
<CustomAction Id="InstallService32" Property="CMD" ExeCommand="/c ""[INSTALLLOCATION][ServiceName]" /i [ServiceName] "/c [SVC_CONFIG]""" Execute="deferred" Impersonate="no" Return="ignore" />
<CustomAction Id="InstallService64" Property="CMD" ExeCommand="/c ""[INSTALLLOCATION][ServiceName]" /i [ServiceName] "/c [SVC_CONFIG]""" Execute="deferred" Impersonate="no" Return="ignore" />
<CustomAction Id="StartService" Property="CMD" ExeCommand="/c "NET START [ServiceName]"" Execute="deferred" Impersonate="no" Return="ignore" />
<CustomAction Id="StopService" Property="CMD" ExeCommand="/c "NET STOP [ServiceName]"" Execute="deferred" Impersonate="no" Return="ignore" />
Проблема с этим кодом в том, что вам нужно иметь место установки без пробелов (у меня была проблема с пробелами, и я не смог ее решить, возможно, вам повезет больше).