我有几个开始安装和启动服务的 WIX 项目。由于我需要安装程序在非英语机器上工作,我一直在使用 WixQueryOsWellKnownSID 属性来为服务提供本地化的帐户名称。
但我显然有问题;因为尽管服务已安装,但它们不会在某些语言环境中启动。到目前为止,我知道安装人员在荷兰、法国、日本和中国工作;但不在德国和比利时工作,(比利时机器上的语言是法语)。
在安装过程中,我们收到“Service 'ServiceName' failed to start. 验证您有足够的权限来启动系统服务。” 错误信息。如果我忽略该错误然后打开服务 MMC,则该服务显示为具有本地化的帐户名称(在德国机器上为 NT-AUTORITÄT\NETZWERKDIENST);如果我随后手动将服务帐户设置为网络服务,则服务 MMC 会显示 Netzwerkdienst,并且服务运行良好。
我已经用 Windows7 和 Server2008R2 对此进行了测试 - 在两个操作系统上都存在相同的问题。
WIX 服务代码:
<PropertyRef Id="WIX_ACCOUNT_NETWORKSERVICE"/>
<Component Id="ProductComponent" Guid="5bcdeb4a-9832-4a01-9863-60bc0634a8fd">
<File Id="$(var.WebLoggerSR2Service.TargetName)" Name="$(var.WebLoggerSR2Service.TargetFileName)"
Source="$(var.WebLoggerSR2Service.TargetPath)" DiskId="1" KeyPath="yes" Checksum="yes"></File>
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Name="$(var.WebLoggerSR2Service.TargetName)"
Description="!(loc.SVCINST_DESCRIPTION)"
ErrorControl="normal" Start="auto" Account="[WIX_ACCOUNT_NETWORKSERVICE]"/>
<ServiceControl Id="StartWixServiceInstaller"
Name="$(var.WebLoggerSR2Service.TargetName)" Start="install" Wait="no" />
<ServiceControl Id="StopWixServiceInstaller" Name="$(var.WebLoggerSR2Service.TargetName)"
Stop="both" Wait="yes" Remove="uninstall" />
<Util:EventSource xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
Name="$(var.WebLoggerSR2Service.TargetName)" Log="Application"
EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" />
<RemoveFolder Id="INSTALLLOCATION" On="uninstall"/>
</Component>
Run Code Online (Sandbox Code Playgroud)
我在 Visual Studio 2012 上使用带有 Votive 的 WIX 版本 3.9.16.0
也许只是一个评论,但对于那个空间来说太长了......
NetworkServiceAccount 上的文档说:
可以在调用 CreateService 和 ChangeServiceConfig 函数时指定此帐户。请注意,此帐户没有密码,因此您在此调用中提供的任何密码信息都将被忽略。虽然安全子系统本地化此帐户名称,但 SCM 不支持本地化名称。因此,您将从 LookupAccountSid 函数中收到此帐户的本地化名称,但在调用 CreateService 或 ChangeServiceConfig 时,该帐户的名称必须为 NT AUTHORITY\NetworkService,无论区域设置如何,否则可能会出现意外结果。( docs.microsoft.com )
如果它是正确的,这很奇怪,因为它似乎在说 CreateService(这是 MSI 最终调用的)需要名称的英文形式,但是当您实际要求它时,您将获得本地化名称。这就是为什么您会看到本地化名称 n MMC,所以我愚蠢的问题是您是否尝试过在其他语言操作系统版本上仅使用标准英文形式?
归档时间: |
|
查看次数: |
628 次 |
最近记录: |