Повышенные права : установка для каждого компьютера может выполняться с временными правами администратора - как вы сказали - без установки для каждого пользователя.Это делается с помощью групповой политики / Active Directory и систем распространения, которые правильно обрабатывают сценарии такого типа.
Эмуляция повышенных прав : для эмуляции повышенных прав на обычномПК (без системы распространения), вы можете использовать групповую политику / взлом реестра, называемый AlwaysInstallElevated .После применения это означает, что все пользователи могут работать с повышенными правами, просто запустив MSI.Значительная дыра в безопасности, так что не используйте ее для развлечения.Однако вы можете отменить любую установку и установить с повышенными правами - если это то, что вам нужно.
Настраиваемое действие в отложенном режиме : Только настраиваемые действия в отложенном режимеимеют повышенные права.Настраиваемые действия в непосредственном режиме нельзя повысить, и если они попытаются что-то сделать с системой, требующей прав администратора, вы получите ошибку во время выполнения.Если вы запустите такой сбойный MSI с «настоящими» правами администратора, то вы увидите, что MSI выглядит успешно установленным (хотя он не сможет работать с повышенными правами для обычного пользователя).
Реализация пользовательского действия в режиме отложенного режимакак правило (для нетривиальных целей) требуются некоторые шаги.Возможно, вы знакомы с ними?Вы не можете получить доступ к свойствам напрямую, вам нужно «отправить их в отложенный режим» через механизм, называемый CustomActionData ( SO ).И добавление маргинального образца WiX для отложенного режима .
Пока что я вам даю ссылки (слишком много, но я просто подумал, что передам вам кучу - думаю, первая ссылка подойдет, 5 для классической технической статьи, 6 для современного подхода с использованием JSON):
Привилегированный : Если вы хотите, чтобы пакет MSI правильно устанавливался для каждой машины для обычного пользователя, я бы добавил условие запуска MSI для отмены, если привилегированные права недоступны (нет шансов на успех).Обратите внимание, что это проверяет не права администратора, а привилегированные права (повышенные права).
<Condition Message="Elevated rights required to install package.">Privileged</Condition>
msiexec.exe : И только для записи,добавление небольшого пакета для проверки кодов ошибок msiexec.exe (не тестировалось недавно, но здесь - обратите внимание, что число или коды ошибок указывают на успех - например, " rebootинициировано"и тому подобное):
1603 = Fatal error
.См. Ссылку выше для получения дополнительной информации.
start /wait msiexec.exe /i Setup.msi /l*v Setup.log
if "%errorlevel%" == "0" goto OK
if "%errorlevel%" == "1603" goto err
if not "%errorlevel%" == "0" goto err
:OK
GOTO END
:err
rem print message and return errorlevel
echo "Error: Msiexec failed with errorlevel = %errorlevel%"
exit /b %errorlevel%
:END
Обратите внимание, что несколько кодов выхода указывают на успех (кроме 0):
1641: ERROR_SUCCESS_REBOOT_INITIATED
3010: ERROR_SUCCESS_REBOOT_REQUIRED
Возможно, есть и другие, которые я забыл.Только образец.