Как запустить ngen из WiX с повышенными правами? - PullRequest
1 голос
/ 08 апреля 2011

Я пытаюсь включить ngen в мой установщик, используя эту статью . Я хочу запустить ngen синхронно (с приоритетом = 0) во время установки, но для этого требуются права администратора. Итак, теперь у меня есть следующее сообщение в журнале:

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 и прекомпилируйте мое приложение. Какие-нибудь мысли?

Спасибо.

1 Ответ

2 голосов
/ 08 апреля 2011

WiX уже запускает пользовательские действия NGen с повышенными правами (Execute = "deferred" Impersonate = "no"). Ваш MSI-пакет должен быть настроен для каждой машины.

...