簡體   English   中英

在Wix Installer中以管理員模式在customAction中運行ExeCommand

[英]Run ExeCommand in customAction as Administrator mode in Wix Installer

我是wix安裝程序的新手。 我已經為我的應用程序使用wix安裝程序開發了一個設置,我需要執行自定義操作以在cmd.exe中運行命令。 在XP中它工作正常。 但在Windows 8和7中,cmd提示符需要以管理員身份運行。

我用Google搜索並發現關鍵字Elevated Privileges和impersonate可能對我有所幫助。

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"   InstallPrivileges="elevated"></Package>

如上所示,我使用了設置為perMachine的InstallScope屬性,並且我在CustomAction元素中使用了Impersonate =“No”:

 <CustomAction Id='comReg' Directory='INSTALLLOCATION'  Impersonate='no'  
  ExeCommand='"[NETFRAMEWORK40CLIENTINSTALLROOTDIR]regasm.exe" "[INSTALLLOCATION]myProduct.dll"  /codebase' Return='check' />

但是在安裝時我沒有得到任何改變。 我需要命令提示符以管理員模式打開並運行上述命令。

任何人都可以告訴我這些關鍵詞“ 提升權限和模仿”

<InstallExecuteSequence>
  <Custom Action='comReg' After='InstallFinalize'>NOT REMOVE</Custom>
  <Custom Action='comUnreg' Before='RemoveFiles'>REMOVE</Custom>
</InstallExecuteSequence>

怎么做?

這里wix文檔解釋了Impersonate屬性:

此屬性指定在執行此自定義操作時,作為LocalSystem執行的Windows Installer是否應模擬安裝用戶的用戶上下文。 通常,該值應為“是”,除非自定義操作需要提升權限以將更改應用於計算機。

您還需要了解延遲和立即自定義操作之間的區別。 請參閱同一幫助頁面上的Execute屬性:

此屬性指示自定義操作的計划。 此屬性的值必須是以下之一:

deferred表示自定義操作在腳本中運行(可能具有提升的權限)。 immediate表示自定義操作將在具有用戶權限的正常處理時間內運行。 這是默認值。

目前,您的自定義操作是立即執行的,這意味着它以用戶權限運行。 有關詳細信息,請參閱此博客文章 ,但特別是:

任何立即的自定義操作都會模擬調用用戶 在Windows Vista之前,這不是問題,因為此時安裝管理用戶有一個特權令牌。 通過在Windows Vista中引入UAC,啟用了UAC的默認管理令牌是已過濾的令牌,並且不具有所有權限。 由於立即自定義操作不應該修改機器狀態 - 僅收集狀態數據並安排自定義操作以延遲運行 - 這仍然不應該是一個問題。 畢竟,此時安裝和回滾腳本的生成應該是所有應該進行的。

您永遠不應該使用立即自定義操作來修改計算機狀態。 使用延遲的,並將模擬保持為否,它應該工作:

<CustomAction Id='comReg' Directory='INSTALLLOCATION' Execute='deferred' Impersonate='no' ExeCommand='"[NETFRAMEWORK40CLIENTINSTALLROOTDIR]regasm.exe" "[INSTALLLOCATION]EAWordImporter.dll" /codebase' Return='check' />

編輯 :使用InstallExecuteSequence元素計划自定義操作:

<InstallExecuteSequence>
    <Custom Action='comReg' Before='InstallFinalize'/>
</InstallExecuteSequence>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM