安裝程序安裝Windows服務。 我提供形式用戶可以選擇其中一個帳戶來啓動服務:安裝程序無法啓動用戶下的服務
- 本地服務
- 本地系統
- 網絡系統
- 用戶帳戶
當我選擇用戶和在安裝過程中輸入Domain \ Administrator帳戶+密碼,服務無法啓動。
當我選擇本地服務時,它開始正常。在此之後,我可以手動更改賬戶到相同的域\管理員帳戶,並開始確定。 爲什麼這樣不同的行爲? 如何在任何用戶帳戶的安裝過程中啓動服務?
安裝程序安裝Windows服務。 我提供形式用戶可以選擇其中一個帳戶來啓動服務:安裝程序無法啓動用戶下的服務
當我選擇用戶和在安裝過程中輸入Domain \ Administrator帳戶+密碼,服務無法啓動。
當我選擇本地服務時,它開始正常。在此之後,我可以手動更改賬戶到相同的域\管理員帳戶,並開始確定。 爲什麼這樣不同的行爲? 如何在任何用戶帳戶的安裝過程中啓動服務?
查看Util擴展用戶元素。您可以將CreateUser屬性設置爲no,將Name屬性設置爲用戶界面中用於輸入用戶名並將LogonAsService屬性設置爲yes的[PROPERTY]。這將指示WiX向您的用戶授予LogOnAsService權限,而無需編寫自定義操作來調用ntrights.exe。
以下是樣本的要求:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="Setup" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="5c6b0f52-d024-4f1b-bfae-2dbb96b3ef15">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<UIRef Id="WixUI_Minimal" />
<Feature Id="ProductFeature" Title="Setup" Level="1">
<ComponentRef Id="serviceComponent" />
</Feature>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="Setup">
<Component Id="serviceComponent" Guid="380bbddd-daa7-0744-517b-37da768f5570">
<File Id="serviceFile" Source="$(var.WindowsService.TargetPath)" KeyPath="yes" />
<ServiceInstall Id="serviceInstall" Name="WindowsService" DisplayName="WindowsService" Start="auto" Type="ownProcess" ErrorControl="ignore" Account=".\serviceaccount" Password="p2Ekutrekac34ph2" />
<ServiceControl Id="serviceControl" Name="WindowsService" Start="install" Stop="both" Remove="both" Wait="no" />
<util:User Id="user" CreateUser ="yes" Name ="serviceaccount" Password="p2Ekutrekac34ph2" LogonAsService="yes" UpdateIfExists="yes" RemoveOnUninstall="yes" PasswordNeverExpires="yes" FailIfExists="no" Domain="[ComputerName]" CanNotChangePassword="yes" Disabled="no" PasswordExpired="no"/>
</Component>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
您需要確保所選用戶帳戶有權使用log on as a service。無論您是否是管理員,都無法爲用戶安裝服務,而無需向他提供正確的日誌。
如果設置此策略有效,您還需要在安裝過程中動態執行此操作。解決方案是使用ntrights.exe作爲自定義操作。此自定義操作可以使用包含用戶帳戶信息的自定義屬性。
如果有人想知道爲什麼從@Christopher畫家的代碼他的答案沒有工作。我有類似的代碼,沒有與錯誤1923工作。
錯誤1923.服務''()無法安裝。驗證您是否有足夠的權限來安裝系統服務。 MSI(10:08)[15:55:00:161]:產品:''(64位) - 錯誤1923.服務''()無法安裝。驗證您是否有足夠的權限來安裝系統服務。
直到我發現安裝期間需要關閉services.msc對話框。
不知道爲什麼,但它的工作原理。 在開發過程中,services.msc一直開放,所以我從來沒有注意到。
有趣。服務管理單元可能會鎖定服務控制管理器apis。我從來沒有聽說過這個。好的瑣事讓我測試一天。你使用的是哪個版本的Windows? –
使用Windows 10 x64 Pro Anniv.Update。 如果您在Bing上搜索一下,您會發現其他人在過去遇到同樣的問題。例如請參閱:https://conetrix.com/Blog/close-servicesmsc-window-to-add-or-remove-services – juFo
這真的有用嗎?我無法在安裝該服務的同時使其工作,因爲設置權限似乎被安排爲自定義操作,因此,在Wix嘗試安裝該服務之後發生。還是我想念somtehing? –
我已經在乾淨的VM快照上測試過了,並沒有任何問題。 –
您的意思是您可以將權限設置爲用戶帳戶,並在相同的.msi/Wix安裝中安裝該服務。請,你能和我分享你的代碼嗎?我在那裏問了一個類似的問題:http:// stackoverflow。com/questions/12949478/is-using-utiluser-logonasservice-and-serviceinstall -with-same-wix-component –