NSIS - 如何在系统变量中设置环境变量

时间:2012-06-30 06:39:19

标签: environment-variables nsis

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

例如:C:\Program Files\Sample\bin,我想在System变量中设置此路径。

3 个答案:

答案 0 :(得分:1)

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

这是setxset

的文档

答案 1 :(得分:1)

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

您可以使用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个字符。如果路径长于该路径,则可以在不应用上述链接中列出的修补程序时损坏路径。首选的解决方案是下载makensis的二进制文件,其字符串长度设置为8192个字符,或者自己编译源代码并设置更长的字符串长度。你可以在这里找到更多信息; http://nsis.sourceforge.net/Special_Builds

答案 2 :(得分: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
  3. 然而,第二个解决方案需要包含.nsh文件,并且不清楚如何完全重置变量。它具有删除,附加或前置到分号分隔的条目列表(例如PATH变量)的功能。