2016-03-01 120 views
0

我通過Wix中的CustomAction運行.exe文件。可執行文件正在運行,但沒有管理員權限。似乎我正在做的一切正確,但不知道發生了什麼問題。這裏是我的自定義操作在管理員權限中運行Wix msi中的.exe

<CustomAction Id="RunExe" FileKey="Setup" ExeCommand="-switch" Execute="deferred" Return="check" Impersonate="no"/> 

<InstallExecuteSequence> 
<Custom Action="RunExe" Before="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 

實際的問題是,這是.exe文件通過ExeCommand執行是無法訪問註冊表項(HKCU \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Explorer的\殼牌的樣本文件夾)。

以管理員身份運行msi解決了問題,但我需要一個解決方案,其中WIX本身應該能夠以管理員身份運行該命令或至少向用戶發出提示。

+0

誰的HKCU你會期望升高EXE將能夠訪問? –

+0

每次用戶登錄系統時都會創建HKCU,並且始終適用於當前登錄並使用系統的用戶。 –

+0

是的,但Execute =「deferred」和Impersonate =「no」的自定義操作可能不會以登錄用戶的身份運行。它可能以SYSTEM帳戶運行。 –

回答

0

每臺計算機安裝中的延遲自定義操作隨系統帳戶升高。您不清楚訪問HKCU密鑰意味着什麼,但使用系統帳戶運行的可執行文件的HKCU密鑰是系統帳戶的HKCU,而不是安裝用戶的HKCU。如果你確切地表達了你想要達到的目標,這將有所幫助,因爲你根本不需要代碼。如果您使用WiX/MSI的註冊表功能,安裝將爲安裝用戶更新HKCU,因此這可能是一種根本不需要代碼的情況。

現在還不清楚爲什麼以管理員身份運行MSI可解決問題,因爲在升級InstallPrivileges的每臺計算機上,該自定義操作已經升級。沒有足夠的信息作爲你的安裝上下文的信息,但我的猜測是,你可能在沒有提升InstallPrivileges的情況下進行每用戶安裝 - 這是MSI在安裝用戶帳戶下運行CA的一種情況,但它們不會提升,除非您按照您的說法提升整個安裝量 - 以管理員身份運行MSI。