Я хочу установить пакет MSI на уровне пользователя и установить несколько ключей реестра в HKLM. Второй требует уровня администратора, и я могу сделать это с помощью плагина NSIS :: UAC. Но мне нужен способ уведомить InnerInstance (с привилегиями уровня администратора) о том, какие флажки выбрал пользователь. Существуют следующие возможные способы обмена такой информацией (только 1 или 0)
- Ini-файл в папке, к которому оба экземпляра могут получить доступ
безуспешно, APPDATA отличается и COMMONAPPDATA требует уровня администратора, TMP также не вариант, потому что это зависит от имени профиля
- Глобальная переменная приложения
безуспешно, переменных не существует. Кстати, даже если я запускаю простую консоль, устанавливаю переменную и запускаю другую консоль - я не видел переменную
- Напишите плагин, который устанавливает и получает семафор
Предположим, что он слишком сложен для простой проблемы установки, но выберет его, если другой вариант не будет доступен
! Macro _SyncVariable _variable
! определить Lprefix L $ { LINE }
нажмите $ R0
goto _SyncVariableInner $ {Lprefix}
_SyncVariableOuter $ {Lprefix}:
StrCpy $ R0 $ {_ переменная}
вернуть
_SyncVariableInner $ {Lprefix}:
! insertmacro UAC_AsUser_Call Label _SyncVariableOuter $ {Lprefix} $ {UAC_SYNCREGISTERS}
StrCpy $ {_ variable} $ R0
! undef Lprefix
поп $ R0
! macroend
! define SyncVariable !insertmacro _SyncVariable
это должно работать, но не
- Получить новый плагин UAC - не видел, где я могу получить бинарный файл, потому что последняя версия не поддерживала сборку NSIS Unicode
Итак, кто-то может мне помочь с ссылками, мыслями?