关于Nsis脚本几点思考

主旨:轻松编程,绕坑而行,不粘贴,全原创,都是一路踩出来的路。
关于Nsis脚本几点思考
—正文---------------------------
Nsis(NullSoft Scriptable Install System)是制作安装包的常用工具,安装卸载脚本通过写字板即可编辑,保存后编译成功即生成安装exe,非常方便。
Nsis脚本也非常强大,读取系统参数,文件,自定义变量,甚至读写注册表。但学习曲线和坑也较多,条条道路通罗马,不同的人可能编写出不同的脚本。
最近我就遇到一例,
1 安装部分
关于安装包所含文件的写入,关键字File。
以往的安装包是同事编写的,从最初一版一直沿用到现在,他们用了一种非常复杂的方式,对各个文件夹下的内容又单独进行了一次加入,其实如果文件全在一个文件夹内,仅需要一行语句即可:File /r “文件夹*.*”;
这样,即使将来增加了文件、文件夹,只要还在大的文件夹内,就不用再次改动脚本。
只要明白了/r的作用,就能捡懒,就能轻松。
2 卸载部分
同上,卸载也是,写了一堆Delete、RMDir,结果即没有完全清理安装路径 ,也没把开始菜单的内容删掉。
后来人不明觉厉,其实,只需要针对不同的根路径执行:RMDir /r “路径”,就搞定了。
当然,如果想更保险一点,当要删的文件被占用,可以执行:RMDir /r /REBOOTOK “路径”,也就可以轻松喝茶了。

-----------分隔线---------------------------------------------------------------------------
我在翻看以前的研究过的卸载机制,主要是找卸载程序的线程ID,当时就是被NSIS绕晕了。
NSIS卸载的时候,是统一管理的,先在AppData\local\Temp~nsu.tmp临时目录新建了一个EXE,命名规则是Au_.exe,Bu_.exe以此类推,所以线程ID不是点击的那个UnInst.exe,此坑当时也是查了很多资料,特此备注,鉴与众人。
最新的卸载测试目录是AppData\local\Temp~nsuA.tmp,新建的卸载程序也变成了Un_A.exe,这样改的设计意义我虽然不明白,但至少,解决了26个英文字符的限制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值