2014-10-28 3 views
10

Я создал MSI с WIX, для работы которого требуются повышенные разрешения. В проекте MSI, я определил это черезWIX Burn Bootstrapper не запрашивает права администратора для моего MSI

<Package [...] InstallPrivileges="elevated" /> 

Теперь я включил этот MSI в проекте пользовательских bootsrapper, основанный на WixWPF Bootstrapper. Как я понимаю, сам загрузчик не должен изменять состояние машины и, следовательно, не должен требовать повышенных привилегий.

Теперь я ожидал, что Bootstrapper автоматически запустит интегрированный MSI с повышенными привилегиями, предложив пользователю диалог UAC, если это необходимо. Но это не так. Вместо этого установка просто терпит неудачу. Он работает, однако, когда я запускаю исполняемый файл bootstrapper явно как администратор.

Как заставить загрузчик запрашивать повышенные разрешения при установке MSI?

+0

Чтобы узнать, установили ли вы этот атрибут для своей MSI? InstallScope = "perMachine" – Isaiah4110

+0

@ Isaiah4110 Я не установил этот атрибут; Я проверю завтра, если это имеет значение, поскольку у меня нет доступа к моему проекту прямо сейчас. Благодаря! –

+0

@ Isaiah4110 Спасибо, вот и все! Если вы опубликуете это как ответ, я буду рад принять его. –

ответ

13

Поскольку атрибут INSTALLSCOPE для MSI не был установлен, по умолчанию он установлен для установки на пользователя, а приложение bootstrapper считается, что для его запуска не требуется никаких ADMIN/повышенных прав.

Теперь в вашем случае вы являетесь автором MSI, и вам было легко добавить InstallScope в элемент пакета.

InstallScope="perMachine" 

Если вы не являетесь автором MSI, по-прежнему Загрузчик предоставляет свойство, которое вы можете использовать, чтобы заставить каждого-машину для MSI/EXE.

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine

Так почему же Bootstrapper считают, что для каждой машины установить потребности повышенных привилегий и для каждого пользователя Doesnt? Достаточно простая установка для каждого пользователя значение реестра записывается в HKEY_CURRENT_USER, а для установки на машине значение реестра записывается в HKEY_LOCAL_MACHINE. Только пользователи Admin могут читать/записывать в HKLM.

+0

Спасибо, я ценю дополнительную справочную информацию! –

Смежные вопросы