Как и в этом вопросе, я пытаюсь реализовать установщик, который запускает другой сторонний установщик драйверов в конце установки.
Это достигается запуском моего установщика с правами администратора (по умолчанию, если не указано иное):
[Setup]
PrivilegesRequired=admin
И затем, используя runascurrentuser в конце:
Filename: "{app}\drivers\driver.exe"; Description: "Install optional drivers"; \
Flags: postinstall skipifsilent runascurrentuser
Это работает, если пользователь с самого начала имеет права администратора.
Однако я хотел бы разрешить установку основного приложения, даже если у пользователя нет прав администратора. Только если необходимо установить дополнительные драйверы, Windows должна открыть всплывающее окно «Контроль учетных записей пользователей» и запросить пароль администратора, если пользователь не является администратором.
Поэтому я хотел бы запустить установщик без повышенных привилегий и повышать права администратора только в том случае, если (и когда) должна быть запущена необязательная установка дайвера.





Если вы хотите, чтобы запись [Run] "запускалась от имени администратора", независимо от того, какие привилегии у установщика, попробуйте добавить runas Verb (что нужно сочетать с флагом shellexec , что в свою очередь подразумевает ️ 🔁 nowwait , поэтому вы можете явно добавить waituntilterminated):
[Run]
Filename: "{app}\drivers\driver.exe"; \
Description: "Install optional drivers"; \
Verb: runas; \
Flags: postinstall skipifsilent runascurrentuser shellexec waituntilterminated
Это также выполнимо из скрипта Pascal:
Inno Setup - Как запустить приложение с правами администратора, если для настройки установлено значение PrivilegesRequired=самое низкое?