2013-03-21 144 views
0

我有一個WiX項目,它在位於ProgramFiles的文件夾上安裝一些可執行文件和庫。Wix安裝的文件提升權限

運行其中一個可執行文件時出現問題。其中一些需要執行爲Administrator來完成它應該完成的所有任務。如果我右鍵單擊它並以管理員身份運行它,它運行良好。但我想讓WiX自己提升我的文件的權限。

有什麼辦法嗎?

我試着這樣做:

<Package Id="$(var.GUID_Package)" 
     InstallPrivileges="elevated" 
     InstallScope="perMachine" ...> 

和:

<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 

但是這兩個選項只可用於.msi包(不適用於安裝的文件)的工作。

注意:我想我沒有正確解釋自己......我的問題出現在我安裝的文件的權限。由於權限,我無法正確執行它們。當我以管理員身份運行它們時,顯然,所有權限對於執行都是正確的。所以我必須做的是改變我遇到的每個文件的權限。

回答

-1

對於那些可能感興趣的人,我找到了一個解決方案。

起初,我在我的.wxs項目中添加了對WixUtilExtension的引用,您可以在WiX文件夾中找到它。

您也可以將其添加爲這樣一個外部參考:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

在那之後,我可以在本地使用PermissionEx

<File Id="$(var.productFamily)$(var.productSummary)" 
     Name="$(var.productFamily)$(var.productSummary).exe" 
     DiskId="1" KeyPath="yes" 
     Source="$(var.release)$(var.productFamily)$(var.productSummary).exe" > 
     <util:PermissionEx User="Everyone" GenericAll="yes" ChangePermission="yes" /> 
    </File> 

有了這樣的我能提升他們的權限。

+0

爲什麼反對投票?其實它確實解決了這個問題... – Sonhja 2013-03-21 18:32:49

+3

這不能解決問題。這隻允許訪問每個人來編輯您的可執行文件,包括刪除它。這首先破壞了保護的目的。 (注:我沒有給你負面的投票,但我傾向於同意這個人)。 – 2013-03-21 18:52:01

+0

但實際上它解決了這個問題。我有讀/寫權限問題,因此,我可以讀/寫,然後正確執行。那是我的問題,它解決了它。 – Sonhja 2013-03-22 08:22:22

0

這不能由您在安裝程序中執行的任何操作修復。

如果exe正在進行一次性設置,例如,修改Prog文件目錄中的文件/文件夾,考慮將其移入wix安裝程序。

如果這是每次運行中發生的事情,您需要確定它正在做什麼並嘗試並更改,以便它不需要提升。如果這是不可能的,恐怕你會被提升。唯一的另一種方法是將本地計算機策略設置爲automatically elevate for administrators

+0

該exe正在修改Prog文件目錄中的文件,但在我創建的文件夾中。而且我需要將我的程序安裝在ProgramFiles文件夾中,所以我需要在某些文件執行時提升某些文件的運行權限。 – Sonhja 2013-03-21 17:20:43

+0

正確的做法是將用戶可修改的文件放在用戶控制的文件夾中,而不是Program Files中。在Win7中,即C:\ Users \ \ AppData \ ...。其他版本的Windows有他們自己的用戶數據位置。它們可以通過標準環境變量%APPDATA%,iirc來引用。 – DaveE 2013-03-21 22:23:46

0

你可以選擇將msi轉換爲exe,當用戶執行exe時,它會提示用戶以管理員身份運行。

我使用dontnetinstaller爲相同,它的作品完美。