2014-10-28 47 views
10

我創建了一個帶WIX的MSI,需要提升權限才能正常工作。在MSI項目中,我指定這通過WIX刻錄引導程序不要求我的MSI的管理員權限

<Package [...] InstallPrivileges="elevated" /> 

現在我包括這款微星在定製bootsrapper項目的基礎上WixWPF Bootstrapper。 據我瞭解,引導程序本身不應該改變機器狀態,因此不應該要求提升特權。

我現在期望引導程序自動啓動具有提升特權的集成MSI,如有必要,提示用戶使用UAC對話框。但事實並非如此。相反,安裝只是失敗。 但是,當我以管理員身份顯式運行引導程序可執行文件時,它可以正常工作。

如何在安裝MSI時讓引導程序請求提升權限?

+0

只需知道,您是否爲您的MSI設置了此屬性? InstallScope =「perMachine」 – Isaiah4110 2014-10-28 18:20:56

+0

@ Isaiah4110我沒有設置該屬性;如果這會產生任何影響,我會在明天檢查,因爲我現在無法訪問我的項目。謝謝! – 2014-10-28 19:28:55

+0

@ Isaiah4110謝謝,就是這樣!如果您以此作爲答案,我會很樂意接受它。 – 2014-10-29 07:36:04

回答

13

由於未設置用於MSI的INSTALLSCOPE屬性,因此默認爲每用戶安裝,並且引導程序應用程序認爲它不需要任何ADMIN/Elevated權限來運行它。

現在在你的情況下,你是MSI的作者,你很容易將InstallScope添加到包元素。

InstallScope="perMachine" 

如果你不是MSI的作者,還是引導程序,只要您可以使用它來迫使每臺機器的MSI/EXE的屬性。

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine

那麼,爲什麼引導程序認爲每機安裝需要提升的權限和每用戶犯規?很簡單,按用戶安裝,註冊表值寫在HKEY_CURRENT_USER下,並且對於每臺機器安裝,註冊表值寫在HKEY_LOCAL_MACHINE下。只有管​​理員用戶可以讀取/寫入HKLM。

+0

謝謝,我欣賞額外的背景信息! – 2014-10-29 18:30:51