我們使用了WiX 3.0,並且能夠提升權限。但是,我們沒有提升我們的引導程序。我們提高了MSI文件本身,通過封裝屬性:
<Package Id="$(var.PackageCode)"
Description="$(var.ProductName) $(var.Version)"
InstallerVersion="301"
Compressed="yes"
InstallPrivileges="elevated" <!-- Elevated right here -->
InstallScope="perMachine"
Platform="x86"/>
作爲一個側面說明,我們的引導程序進行簽名(使用從v6.0A SDK signtool.exe)與我們的官方證書。我不確定這是否會導致引導程序也需要提升權限。
UPDATE:
我們已經得到了需要以管理員級別要運行的可執行文件在我們的setup.exe引導程序項目的app.manifest文件。看到下面的例子:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace
the requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
謝謝,我已經有這樣設置InstallPrivleges但它似乎沒有做任何有用的。直接運行MSI將無法提升。哦,但我只注意到InstallerVersion設置爲300.我不知道這是不是... – Jonesie 2012-01-04 03:26:31
@Jonesie:如果在明天之前你沒有得到一個好的答案,我會仔細看看我們的東西,當我在工作。我可能會挖掘更多的信息。 – 2012-01-04 03:33:34
乾杯隊友!我需要通過我們的構建服務器運行這需要一個小時,所以這是相當緩慢,一次嘗試1件事情:) – Jonesie 2012-01-04 03:40:18