NSIS打包生成的安装程序,安装之后,可能需要用到系统环境变量。比如将程序安装目录写入Path变量中。
那具体如何操作呢,其实很简单,以下以在Path变量中添加/删除安装路径为例,简单介绍一下。需要强调的是,以下方式只能应用在NSIS中变量字符长度不会超过1024的情况。因为NSIS默认的NSIS_MAX_STRLEN长度为1024.

添加安装路径到Path变量中

  1. 用ReadRegStr 将Path原始值读出来。
ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
  1. 用WriteRegExpandStr 将增加安装路径后的Path值(原始值+安装路径)写入环境变量
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;$INSTDIR"
  1. 刷新环境变量-(加入超时,防止阻塞,如果Path变量中有类似%SystemRoot%值时,安装程序时会出现卡死)
  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"   /TIMEOUT=3000

从Path中删除安装目录

  1. 用ReadRegStr将Path原始值读取出来
ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
  1. 通过${WordReplace}将安装路径从Path原始值中删除
    ${WordReplace}用法
 ${WordReplace} $R0 ";$INSTDIR" "" "+" $R1
  1. 用WriteRegExpandStr 将删除安装路径后的Path值写入环境变量
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R1"

因为可能会出现刷新环境变量失败的情况,所以最可靠的还是重启电脑。
在完成页增加重启电脑选项。

;重启电脑
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_Function SystemReboot
!define MUI_FINISHPAGE_SHOWREADME_TEXT "需要重启电脑使配置生效"

自定义SystemReboot函数,弹框提示用户是否重启电脑:

MessageBox MB_YESNO|MB_ICONQUESTION "Do you wish to reboot the system?" IDNO +2Reboot

用户在完成页选中重启电脑之后,会弹窗提示用户是否重启电脑。

NISI脚本中对环境变量赋值相关推荐

  1. 检查在Unix Shell脚本中设置环境变量的简洁方法是什么?

    我有一些Unix shell脚本,在开始做事之前,我需要检查某些环境变量是否已设置,因此我要执行以下操作: if [ -z "$STATE" ]; thenecho "N ...

  2. bat批处理命令大全_DOS使用环境变量图文教程,bat批处理脚本查看调用环境变量命令...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习在DOS和BAT批处理脚本中使用环境变量,环境变量是windows定义的一个变量,它有一 ...

  3. linux之基础shell脚本编程1 基础变量赋值

    本章主要介绍函数的基础,变量赋值,逻辑运算,条件表达式,测试 linux之基础shell脚本编程1  基础变量赋值 linux之基础shell脚本编程2 if语句循环判断 linux之基础shell脚 ...

  4. Postman中设置环境变量

    一.Postman中如何设置环境变量: 下面以调用通用的百度翻译API请求为例,学习如何设置环境变量: 可以在http://api.fanyi.baidu.com/doc/21里查找接口地址. 步骤: ...

  5. PowerShell中的环境变量

    环境变量是Linux,Mac或Windows计算机的全局设置,存储为系统外壳程序在执行命令时使用. 许多是在安装或用户创建期间默认设置的. 例如,登录时将主目录设置为环境变量.在PowerShell中 ...

  6. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

  7. macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...

    Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...

  8. Windows中的环境变量一览

    环境变量是操作系统中一组具有名称的值,能够影响应用程序的执行效果.环境变量是应用程序的执行环境的组成部分,例如:一个正在运行的程序可以通过"TEMP"这个环境变量来获取操作系统中用 ...

  9. 【RMAN】RMAN脚本中使用替换变量

    [RMAN]RMAN脚本中使用替换变量--windows 下rman全备脚本 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...

最新文章

  1. web集群时session同步的3种方法
  2. 深度学习引擎的终极形态是什么?
  3. java多附件上传 实例demo
  4. 3.23andorid多语言支持--系统架构
  5. LinkedHashMap源码剖析
  6. isInfoEnabled究竟多有用?
  7. MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转
  8. 多系统权限设计(一)
  9. python随机读取字符_python 怎样随机生成中文字符?
  10. Qt Creator设置一个Autotools项目
  11. java file构造方法_Java中FileOutputStream类的常用方法
  12. 本地计算机绑定域名访问
  13. macOS卸载Java9及利用Homebrew搭建并配置Java开发环境
  14. python内容限制_Python --类,实例和访问限制
  15. 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
  16. aspupload 上传组件下载
  17. 笔记本电脑亮度调节键失灵了,该怎么解决?
  18. 使用Stream编译出现的stream has already been operated upon or closed的问题
  19. 数据分析之Excel篇(三):计算统计函数
  20. 网易云对象存储获取私有对象下载链接打不开的问题

热门文章

  1. win10设置里找不到以太网
  2. python文本框焦点设置_如何在tkinter输入框中设置焦点
  3. Net Core 6.0 webApi+sqlServer数据库教程实战
  4. #第26篇分享:一个文本分类的数据挖掘(python语言:sklearn 朴素贝叶斯NB)(2)
  5. 【保研面试】英语口语
  6. 诺基亚的复活之路:夹缝中求生存
  7. 树莓派4B+配件+Intel神经棒2代购机指南
  8. 深度学习-Non-local Neural Networks非局部神经网络
  9. Excel系列:if、mathc、choose条件判断语法的使用
  10. CSS中边偏移属性top,right,bottom,left