Installation NSIS中SetHellVarContext和多用户定义之间的行为差异

Installation NSIS中SetHellVarContext和多用户定义之间的行为差异,installation,nsis,multi-user,Installation,Nsis,Multi User,提出这一问题的理由: 及 我在这里有点困惑。。。处理此Windows特定安装/卸载功能的最新方法是什么,以便安装程序/卸载程序自动将注册表写入(例如)正确的位置(如果是管理员,则写入HKLM,如果是特定用户,则写入HKCU) 这里让我担心的是,内置命令是NSIS 2.0之前引入的功能。。。但是 多用户 非常更新,从Joost的评论中,我开始认为它(使用SHELL_上下文)可能是更好的解决方案。可能就在这里吗 我的目标是使当前的安装程序更加灵活,以满足未来的更改和开发需求,包括多用户功能(例如

提出这一问题的理由:

我在这里有点困惑。。。处理此Windows特定安装/卸载功能的最新方法是什么,以便安装程序/卸载程序自动将注册表写入(例如)正确的位置(如果是管理员,则写入HKLM,如果是特定用户,则写入HKCU)

这里让我担心的是,内置命令是NSIS 2.0之前引入的功能。。。但是

多用户

非常更新,从Joost的评论中,我开始认为它(使用SHELL_上下文)可能是更好的解决方案。可能就在这里吗

我的目标是使当前的安装程序更加灵活,以满足未来的更改和开发需求,包括多用户功能(例如,如果Windows认证需要此类支持)。自动依赖HKLM/HKCU,但不只是静态依赖HKLM的能力是相当不错的想法,对吧

也许我只是混合了当前用户上下文中的文件处理和当前用户上下文中的注册表处理


非常感谢这里的任何指导原则。

MultiUser.nsh使用
RequestExecutionLevel
SetShellVarContext


SetShellVarContext控制shell特殊文件夹(如$appdata)解析到的位置,它还控制SHCTX伪注册表根键。这意味着您应该在SHCTX键下写入卸载信息和文件扩展名注册,如果您希望支持每个用户和所有用户以相同的.exe安装模式进行安装

Ok,明白了。但是,如果我在.onInit中设置SetShellVarContext值为“all”;实现SHCTX(根据Joosts的评论,我想我必须使用这个用于卸载程序的多用户和/AllUsers(作为命令行开关,对吗?),但是当需要每个用户安装上下文时,我只需将这个值设置为“current”,所有这些都应该自动工作,无需任何额外更改(用于卸载程序的/CurrentUser除外)?SetShellVarContext current是默认设置(我不知道多用户是否会更改它)哦…这是一个小问题…在这个黑暗的时代,只剩下实际的尝试,ai'?:)在一个安装程序中,您有一个选择安装模式的页面,默认设置应该不重要,所有使用shctx的操作都会在安装程序中稍后发生。