2013-11-25 2 views
1

Причина этого вопроса:Различие между поведением SetShellVarContext и многопользовательского определения (s) в NSIS

http://nsis.sourceforge.net/Reference/SetShellVarContext

и

http://forums.winamp.com/showpost.php?p=2326213&postcount=5

Я отчасти озадачены здесь ... что на самом деле является самым современным способом обработки этой функции установки/удаления Windows, так что установщик/деинсталлятор автоматически записывает, например, реестр в нужное место (если Admin, а затем HKLM, если spe пользователь, затем в HKCU)?

Что меня беспокоит вот что встроенная команда является предварительно NSIS 2,0 введена функция ... но

MultiUser.nsh

является довольно обновлена ​​и от Joosts комментарий Я начинаю думать, что это (используя SHELL_CONTEXT) может быть лучшим решением. Может ли это быть правильным предположением здесь?

Моя цель состоит в том, чтобы сделать текущий установщик более гибким для будущих изменений и потребностей развития, включая многопользовательские возможности (если, например, сертификация Windows требует такой поддержки). Возможность автоматически зависеть от HKLM/HKCU, но не статически только на HKLM неплохо думает, правильно?

Возможно, я просто смешиваю обработку файлов в текущем контексте пользователя и обработке реестра в текущем контексте пользователя?

Любые рекомендации здесь будут высоко оценены.

ответ

2

MultiUser.nsh использует RequestExecutionLevel и SetShellVarContext.

SetShellVarContext контролирует, где разрешены специальные папки оболочки, такие как $ appdata, а также управляет корневым ключом псевдо-реестра SHCTX. Это означает, что вы должны писать информацию об удалении и регистрацию расширения файла под ключ SHCTX, если вы хотите поддерживать режимы для каждого пользователя и всех пользователей в том же .exe

+0

Хорошо, получилось. Но тогда - если я в .onInit задал значение SetShellVarContext для «all»; реализовать SHCTX (из комментария Joosts Я предполагаю, что мне нужно использовать этот MULTIUSER_ * и/AllUsers для деинсталлятора (как переключатель командной строки, правда?), но когда возникает необходимость в контексте установки для каждого пользователя, я просто устанавливаю это значение в "current «и все должно работать автоматически, без каких-либо дополнительных изменений (кроме/CurrentUser для деинсталлятора)? –

+0

SetShellVarContext current по умолчанию (я не знаю, изменил ли его многопользовательский режим) – Anders

+0

Ох ... это питти ... Только актуально попытка остается в эти темные времена, ai '? :) –

 Смежные вопросы

  • Нет связанных вопросов^_^