2011-04-08 139 views
1

我正在尝试使用this articlengen添加到我的安装程序中。我想在安装过程中同步运行ngen(优先级= 0),但它需要管理权限才能运行。所以,现在我已经在日志中以下消息:如何使用提升的权限从WiX运行ngen?

MSI (s) (74:2C) [18:30:14:310]: Invoking remote custom action. DLL: C:\windows\Installer\MSI60B0.tmp, Entrypoint: ExecNetFx 
ExecNetFx: Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1 
ExecNetFx: Copyright (c) Microsoft Corporation. All rights reserved. 
ExecNetFx: Installing assembly C:\myapp\myapp.exe 
ExecNetFx: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
ExecNetFx: Administrator permissions are needed to use the selected options. Use an administrator command prompt to complete these tasks. 
ExecNetFx: Error 0xffffffff: Command line returned an error. 
ExecNetFx: failed to execute Ngen command (with error 0xffffffff): C:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install "C:\myapp\myapp.exe", continuing anyway 
ExecNetFx: Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1 
ExecNetFx: Copyright (c) Microsoft Corporation. All rights reserved. 
ExecNetFx: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
ExecNetFx: Administrator permissions are needed to use the selected options. Use an administrator command prompt to complete these tasks. 
ExecNetFx: Error 0xffffffff: Command line returned an error. 
ExecNetFx: failed to execute Ngen command (with error 0xffffffff): C:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe update /queue, continuing anyway 

有没有简单的方法来询问用户的管理权限(使用标准的UAC提示),在这一刻,当NGEN开始?如果用户按“否”,我想继续没有ngen。如果是 - 运行ngen并预编译我的应用程序。 有什么想法?

谢谢。

回答

2

WiX已经运行提升的NGen自定义操作(Execute =“deferred”Impersonate =“no”)。您的.msi包必须是每台机器才能运行它们。