WiX:有条件地授予登录作为服务权利

时间:2013-12-14 13:06:30

标签: wix

我正在使用User库中的WixUtilExtenion授予用户登录服务权限:

...
<Property Id="SVCUSERNAME" Value="LocalSystem" />
...
<Component Id="MyApp">
  <File Id="MyApp.exe" Name="MyApp.exe" />

  <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SVCUSERNAME]" LogonAsService="yes" />

  <ServiceInstall Id="MyApp" Type="ownProcess" Name="MyApp" DisplayName="MyApp"
    Description="MyApp" Start="auto" Account="[SVCUSERNAME]" Password="[SVCPASSWORD]" ErrorControl="normal" Vital="yes">
  </ServiceInstall>

  <ServiceControl Id="MyApp" Start="install" Stop="both" Remove="both" Name="MyApp" Wait="no" />
</Component>

如果用户指定了其他用户,则更改属性SVCUSERNAME,否则默认为本地系统帐户。权限分配不适用于本地系统(无论如何都有此权限),因此如果SVCUSERNAME属性不是 LocalSystem,我只想尝试添加权限。

1 个答案:

答案 0 :(得分:1)

您需要将User放入其自己的组件中,以便您可以在不调整服务安装和文件的情况下对其进行调整。在用户组件下添加 <Condition><![CDATA[SVCUSERNAME ~<> "LocalSystem" AND SVCUSERNAME ~<> "SYSTEM"]]</Condtion>。我包括SYSTEM,因为它是用户可能为系统帐户指定的别名。