3

我想在我的应用程序的系统变量路径中设置环境变量。如何使用 nsis 进行设置?

例如:C:\Program Files\Sample\bin,我想在系统变量中设置这个路径。

4

3 回答 3

3

有几种方法可以做到这一点。我假设您想永久设置它,而不仅仅是为安装程序

如另一个答案所述,您可以使用 ns::Exec 或 ExecWait 运行 setx 。这样做的缺点是 setx 仅随 Windows Vista 或更高版本提供。Windows XP 用户不会设置他们的路径。SET 命令仅用于进程,不会永久设置路径。

您可以使用 ReadEnvString 读取当前路径,将其格式化为您想要的格式,然后使用 WriteRegExpandStr 将其输出。请参阅http://nsis.sourceforge.net/Setting_Environment_Variables。这样做的缺点是您必须自己完成路径的所有格式设置,并且您必须复制已经在 EnvVarUpdate 函数中为您完成的工作 - 如下所述......

我使用的方法是 EnvVarUpdate 函数。你可以在这里找到这个函数的代码;http://nsis.sourceforge.net/Environmental_Variables:_append,_prepend,_and_remove_entries

将此功能与您的示例路径一起使用;

${EnvVarUpdate} $0 "PATH" "A" "HKLM" "C:\Program Files\Sample\bin" ; appends to the system path

${EnvVarUpdate} $0 "PATH" "A" "HKCU" "C:\Program Files\Sample\bin" ; appends to the user path

这允许您选择附加或前置,它允许您删除您在卸载程序中添加的内容。

请注意,具有默认编译二进制文件的 NSIS 的最大字符串长度为 1024 个字符。如果路径比这长,如果您不应用上面链接中列出的补丁,您可能会损坏它。首选的解决方案是下载将字符串长度设置为 8192 个字符的 makensis 二进制文件,或者自己编译源并设置更长的字符串长度。你可以在这里找到更多信息;http://nsis.sourceforge.net/Special_Builds

于 2012-11-14T18:30:14.203 回答
1

您可以使用set添加/更改环境变量,也可以使用setx永久设置一个(就像您通过计算机属性添加它一样)。

这是setxset的文档

于 2012-07-04T10:58:31.960 回答
0
  1. 对于仅包含一个值或一个目录的简单变量,请参见
    http://nsis.sourceforge.net/Setting_Environment_Variables#Exisiting_Variables
  2. 对于保存路径列表的变量,请参见
    http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries#Function_Code

然而,第二种解决方案需要包含一个 .nsh 文件,并且不清楚如何完全重置变量。它具有删除、附加或添加到以分号分隔的条目列表(例如 PATH 变量)的功能。

于 2016-10-21T17:25:11.497 回答