我想在我的应用程序的系统变量路径中设置环境变量。如何使用nsis设置它?
例如:C:\Program Files\Sample\bin
,我想在System变量中设置此路径。
答案 0 :(得分:1)
答案 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)
然而,第二个解决方案需要包含.nsh文件,并且不清楚如何完全重置变量。它具有删除,附加或前置到分号分隔的条目列表(例如PATH变量)的功能。