2014-05-14 19 views
1

我有幾個WIX項目開始安裝和啓動服務。由於我需要安裝程序在非英語機器上工作,因此我一直使用WixQueryOsWellKnownSID屬性爲服務提供本地化帳戶名稱。wix服務不以本地化帳戶開始

但是我明顯得到了錯誤;因爲雖然服務安裝,但它們不會在某些地區啓動。到目前爲止,我知道安裝人員在荷蘭,法國,日本,&中國工作;但不在德國工作&比利時,(比利時機器上的語言是法語)。

安裝期間,我們得到一個「Service'ServiceName'啓動失敗,請驗證您是否有足夠的權限啓動系統服務。」錯誤信息。 如果我忽略該錯誤並打開服務MMC,則該服務會顯示爲具有本地化帳戶名稱(德國計算機上的NT-AUTORITÄT\ NETZWERKDIENST);如果我然後手動將服務帳戶設置爲網絡服務,則服務MMC將顯示Netzwerkdienst,並且服務運行良好。

我已經用Windows7和Server2008R2測試過這兩個操作系統的相同問題。

的維克斯服務代碼:

<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> 

我使用WIX版本3.9.16.0與還願上的Visual Studio 2012

回答

3

也許只是一個評論,但過長該空間....

NetworkServiceAccount上的文檔說:

「可以在調用CreateService和ChangeServiceConfig函數時指定此帳戶。請注意,此帳戶nt沒有密碼,所以您在此調用中提供的任何密碼信息都將被忽略。在安全子系統本地化此帳戶名稱時,SCM不支持本地化名稱。因此,您將從LookupAccountSid函數收到此帳戶的本地化名稱,但是當您調用CreateService或ChangeServiceConfig時,帳戶的名稱必須爲NT AUTHORITY \ NetworkService,而不管區域設置如何,否則會發生意外結果。「

這很奇怪,如果它是正確的,因爲它似乎是在說CreateService(這是MSI最終調用的)需要名稱的英文形式,但是當你真正要求它時,你會得到本地化名稱。你看到的是本地化的名字n MMC,所以我的啞巴問題是你是否嘗試過在其他語言的操作系統版本上使用標準的英文表單?

+0

謝謝菲爾你是對的我使用了本地化名稱,因爲它在訪問權限時是必需的等等,它沒有發生我說服務管理經理需要英語。 – user3636185