如何使用WiX在NetworkService帐户下安装和启动Windows服务?

时间:2010-01-05 00:40:48

标签: windows installer service wix

我正在尝试创建一个wix安装程序来安装和启动NetworkService帐户下的Windows服务,但是失败了,我得到的是“Service”()无法安装。验证您是否具有足够的权限来安装系统服务。“

请指教,我的代码如下:

<Component Id="service" Guid='myguid'>
          <File Id='JobServiceEXE' Name='JobService.exe' DiskId='1' Source='mypath\JobService.exe' KeyPath='yes' />
          <ServiceControl Id="JobService" Name="[SERVICEID]" Stop="uninstall" Remove="uninstall" Wait="yes" />
          <ServiceInstall
          Id="JobService" Name="[SERVICEID]" DisplayName="[SERVICENAME]" Type="ownProcess"  Start="auto" ErrorControl="normal" Vital ='yes'
          Account="NT Authority\NetworkService"
          Description="Job Service" />
        </Component>

谢谢!

3 个答案:

答案 0 :(得分:17)

保罗的回答是不正确的。根据MSDN文档,要指定网络服务帐户,请使用“NT AUTHORITY \ NETWORK SERVICE”:

  

...帐户的名称必须是

     

NT AUTHORITY\NETWORKSERVICE

     

当您调用 CreateService ChangeServiceConfig 时,无论语言环境如何......

设置属性“ALLUSERS”以强制管理员安装。

请参阅this链接以获取更多信息

答案 1 :(得分:3)

首先,您收到的消息可能是由于安全问题。您的安装程序必须由管理员运行,因为创建服务需要管理权限。您可以在Condition元素中检查该内容。

其次,在非英语系统上使用NT Authority\NetworkService作为帐户名将失败,因为内置帐户名已本地化。相反,请使用Wix特别识别的普通旧NetworkService并解析为正确的本地化名称。

答案 2 :(得分:1)

我在Windows 7上一直使用这个,这让我烦恼了很久。我通过添加

来修复它
InstallScope="perMachine"

到我的包元素:

<Package Description="..."
         Manufacturer="Microsoft Corporation"
         InstallerVersion="200"
         Languages="1033"
         Compressed="yes"
         InstallScope="perMachine"/>