2015-05-06 53 views
0

我已經編寫了一個非常小的應用程序,並且正努力爲我的解決方案創建一個良好的部署項目。這是一個wpf應用程序,它訪問數據庫,重新格式化一些數據,將其呈現給用戶,並將其作爲XML寫入,這取決於用戶對其他應用程序的選擇以繼續工作。一切工作非常好。如何在部署後襬脫UAC提示

但是......

當我創建一個InstallShield LE項目和部署,我可以運行沒有UAC提示的應用程序。

當我創建一個WiX項目並部署時,我得到一個UAC提示,當我安裝和當我運行已安裝的應用程序。每次。

我已經搜索,搜索,並問及周圍沒有工作的解決方案。

有沒有建議嗎?

+0

我的猜測是WiX會修改文件夾/文件或編輯Windows註冊表中要求您允許這些操作的註冊表部分。 – 0x8BADF00D

回答

2

您需要顯示一些WiX源代碼並查看應用程序。

安裝本身沒有理由影響應用程序的行爲。如果應用程序包含提升清單,則應用程序將要求提升,並且requireAdministrator(或highestAvailable)的請求執行級別將負責UAC提示。清單通常嵌入在可執行文件中,顯然,安裝時,IS或WiX都不會更改exe的內容。

所以對於應用程序:

  1. 您的應用程序的創建可能是在兩種情況不同,包含一個嵌入式清單和一個沒有。如果使用Visual Studio打開文件作爲文件,您可能會看到顯示嵌入式清單及其高程要求的RT_MANIFEST節點。

  2. 構建可能會有所不同,因爲WiX包含外部應用程序清單文件,該應用程序清單文件會在應用程序運行時導致提升提示。

  3. 如果用戶是管理員(highestAvaIlable),您可能會有一個提升的清單,這樣管理員將獲得提示,而受限用戶不會。所以不同的用戶會看到不同的行爲。

Difference between "highestAvailable" and "requireAdministrator" in manifest in terms of Elevation?

對於安裝本身:

  1. 所述的InstallShield設置可以是每用戶(不需要海拔)和維克斯一個是每臺機器,或至少維克斯具有升級的InstallPrivileges,無論是默認還是因爲它在Package元素中都是顯式的。
0

加入清單的組件,您的可執行文件,告訴Windows,你希望它運行asInvoke

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity 
      version="1.0.0.0" 
      processorArchitecture="X86" 
      name="Contoso.Frobber" 
      type="win32" 
    /> 

    <description>Frobber Thingy Majiggy</description> 

    <!-- Disable file and registry virtualization --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="asInvoker" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 

</assembly> 

這告訴Windows,你做想要提升。