2012-06-30 391 views

回答

1

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

这里是为setxset

+0

我没有看到任何明显的方法来使用'setx'来为PATH变量添加一个路径组件。虽然OP表示设置,但对于将'C:\ Program Files \ Sample \ bin'添加到搜索路径中的要求几乎是肯定的,而不是整个搜索路径。 – Kaz

+0

'setx PATH%PATH%; C:\ Program Files \ Sample \ bin' – zenpoy

+0

如何依靠'cmd.exe'替换'%PATH%'?不是吗? – Kaz

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

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变量)的功能。