NSIS添加系统环境变量的方法-阿里云开发者社区

开发者社区> xinxinitblog> 正文

NSIS添加系统环境变量的方法

简介: A:使用SendMessage ,例子如下: ;修改环境变量 WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "abcd" "ggg" ;刷新环境...
+关注继续查看

A:使用SendMessage ,例子如下:
;修改环境变量

WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "abcd" "ggg"

;刷新环境变量

SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"

如何将路径添加到系统环境变量中
NSIS, 系统环境变量
问:比如,我把 a.exe 用nsis包装好,安装到 c:\helloLib\a.exe,完成后,想把c:\helloLib\添加到系统环境变量的path里
头,这样,在任何地方输入a.exe可执行。如何将路径添加到系统环境变量中?
答:以下代码实现:

程序代码

  1. ReadRegStr $0 HKLM “SYSTEM\CurrentControlSet\Control\Session Manager\Environment” “Path”

  2. WriteRegExpandStr HKLM “SYSTEM\CurrentControlSet\Control\Session Manager\Environment” “Path” “$0;C:\hellolib”

复制代码

另类方法一:写注册表,如
程序代码

  1. [HKEY_CLASSES_ROOT\Applications\a.exe\shell\open\command]
  2. @=”yourpath\a.exe”

另类方法二:

程序代码
1.[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\a.exe]
2. @=”c:\helloLib\a.exe”

【NSIS使用经验】修改和删除环境变量
;设置oracle的环境变量到PATH路径

ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"

WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;$INSTDIR\Oracle\bin\"
;刷新环境变量
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"

;利用WordReplace函数从PATH中删除设置oracle的环境变量
;需要在文件头引入相应的头文件:!include “WordFunc.nsh”

ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
${WordReplace} $R0 ";$INSTDIR\Oracle\bin\" "" "+" $R1
;MessageBox MB_OK|MB_USERICON '$R0 - $INSTDIR - $R1 '
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R1"

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题21-25题)
2017年上半年信息系统项目管理师上午试题分析与答案(试题21-25题) 21.以下关于综合布线的叙述中,正确的是:()A、综合布线系统只适用于企业、学校、团体,不适合家庭B、垂直干线子系统只能用光纤介质传输C、处于安全考虑,大型楼宇的设备间和管理间必须单独设置D、楼层配线架不一定在每一楼层都要设置考答案: 21. (D) 22.在进行网络规划时,应制定全网统一的网络架构,并遵循统一的通信协议标准,使符合标准的计算机系统很容易进行网络互联,这体现了网络规划的()原则。
1080 0
xcode反汇编调试iOS模拟器程序(六)函数出入口处的处理与局部变量
引用第二节的例子: 函数的入口处,通常都是把esp的值传给ebp保存,然后下面的操作以ebp为基准做偏移量引用。因为esp作为栈指针,push和pop都会自动修改其值,所以用ebp可以不受影响。
706 0
简单说明:list.forEach 中变量必须为 final 的问题
可能有些人没遇到过 list.forEach 中变量必须为 final 的问题,那就先举两个例子 示例1,如下: public static void main(String[] args) { List<String> stringList = new ArrayList<>(); stringList.
2038 0
VS 2010程序添加对System.Web.Script.Serialization的引用
开发JSON相关程序要用到System.Web.Script.Serialization。如何添加? 在C盘搜索中输入:System.Web.Extensions.dll 在解决方案中引用:System.
878 0
软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题41-45题)
2017年上半年信息系统项目管理师上午试题分析与答案(试题41-45题) 41.以下关于项目沟通管理的叙述中,不正确的是:()A、对于大多数项目而言,沟通管理计划应在项目初期就完成B、基本的项目沟通内容信息可以从项目工作分解结构中获得C、制定合理的工作分解结构与项目沟通是否充分无关D、项目的组织结构在很大程度上影响项目的沟通需求参考答案: 41. (C) 42.沟通管理计划包括确定项目干系人的信息和沟通需求,在编制沟通计划时,()不是沟通计划编制的输入。
799 0
Qt环境变量的设置,Qt程序运行时提示缺少mingwm10.dll、QtCore4.dll的解决方法
最近学习Qt,于是安装了一个从Qt官方网站http://qt.nokia.com/downloads上下载的完整的QtSDK,写了一个程序以后发现在QtCreator下,程序可以正常运行,但是当关闭QtCreator后,在DeBug目录下再运行相应的*.
1022 0
+关注
xinxinitblog
C++和iOS码农
178
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载