如何使用WiX安装和启动一个Windows服务,并将其设置为以NetworkService账户运行?

7

我正在尝试创建一个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个回答

17

根据MSDN文档,指定Network Service账户时应使用“NT AUTHORITY\NETWORK SERVICE”,Paul的回答不正确:

......无论语言环境如何,在调用CreateServiceChangeServiceConfig时,帐户名必须为

NT AUTHORITY\NETWORKSERVICE

......

将属性"ALLUSERS"设置为强制进行管理员安装。

有关更多信息,请参见此链接


3

首先,你收到的信息可能是由于安全问题引起的。创建服务需要管理员特权,因此必须由管理员运行安装程序。你可以在 Condition 元素中检查这一点。

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


1
谢谢您的回复,能否请您告诉我如何检查Condition元素中的安全问题?我对Wix还不太熟悉。我刚把帐户名改成了NetworkService,但结果仍然一样。谢谢。 - Ray

1
我在Windows 7上遇到了这个问题,困扰了我很长时间。我通过添加

来解决它。
InstallScope="perMachine"

关于我的包元素:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接