我想在我的应用程序的系统变量路径中设置环境变量。我如何设置使用nsis?NSIS - 如何在系统变量中设置环境变量
例如:C:\Program Files\Sample\bin
,我想在系统变量中设置此路径。
我想在我的应用程序的系统变量路径中设置环境变量。我如何设置使用nsis?NSIS - 如何在系统变量中设置环境变量
例如:C:\Program Files\Sample\bin
,我想在系统变量中设置此路径。
的文件有几个方法可以做到这一点。我假设你想永久设置它,而不仅仅是安装程序
你可以使用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
但是第二方案需要包容的。 nsh文件,并不清楚如何完全重置变量。它具有删除,附加或前置到分号分隔的条目列表(如PATH变量)的功能。
我没有看到任何明显的方法来使用'setx'来为PATH变量添加一个路径组件。虽然OP表示设置,但对于将'C:\ Program Files \ Sample \ bin'添加到搜索路径中的要求几乎是肯定的,而不是整个搜索路径。 – Kaz
'setx PATH%PATH%; C:\ Program Files \ Sample \ bin' – zenpoy
如何依靠'cmd.exe'替换'%PATH%'?不是吗? – Kaz