我使用的WiX安装Windows服务。 我怎样才能使Windows用户运行安装程序的情况下的服务运行?
Answer 1:
您需要为您想运行的服务为用户同时拥有帐户名和密码。 我可以通过添加自定义UI,以我的安装程序询问用户名和密码,然后使用提供的值帐户和ServiceInsall元素属性的密码来实现这一目标。
需要注意的是什么都帐户用于运行该服务将需要有作为服务登录特权。 这不是默认授予给用户。 我能够使用用户元素从UtilExtension架构这个priveledge添加到用户。 添加特权用户如果运行安装程序的用户是管理员只会成功。
下面是我使用的代码。 SERVICECREDENTIALS_USERLOGIN和SERVICECREDENTIALS_PASSWORD是从自定义UI填充的属性。
<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<File Id="ServiceEXE" Name="YourService.exe" DiskId="1"
Source="path\to\YourService.exe" KeyPath="yes" />
<util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]"
LogonAsService="yes" />
<ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService"
DisplayName="Your Service" Description="Your Service description"
Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]"
ErrorControl="normal" Interactive="no" />
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" />
</Component>
文章来源: WiX ServiceInstall - setting the service to run as the current windows user