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