WIX Burn Bootstrapper не запрашивает права администратора для моего MSI

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

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

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

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

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

Ответ 1

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

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

InstallScope="perMachine" 

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

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