NSIS 插件篇
Posted carlxb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSIS 插件篇相关的知识,希望对你有一定的参考价值。
突然发现NSIS的 主程序有些东西实现起来比较麻烦 找了一些资料 研究研究几个插件 看看 什么玩法套路
一、nsisXML
nsisXML::create 不管是读还是写都要有
nsisXML::load 然后一般读取配置文件是 这个后面就直接写路径就行 nsisXML::load ‘$INSTDIRDir est.xml’
这个地方要加一个返回判断 IntCmp $0 0 notFoundXml 这个会自动压入$0 如果找不到 还继续select 安装程序就卡死了 所以在下面写个跳转的标记notFoundXml
nsisXML::select 找到你想修改的标签内容 例如 nsisXML::select ‘/test/common‘
nsisXML::setText 存储内容 nsisXML::setText ‘"$INSTDIRDir est.exe"‘
nsisXML::save 记得保存 nsisXML::save ‘$INSTDIRDir est.xml’
https://nsis.sourceforge.io/NsisXML_plug-in_(by_Wizou) 这里面是官方的文档 详细的返回值 看一下官方文档
二、nsExec
nsExec::Exec 直接批处理命令而不打开 DOS框
用法:
nsExec::Exec ‘schtasks /create /tn "PrettyBoy" /tr "$INSTDIRdirPretyBoy.exe /sc ONSTART /rl HIGHEST’
后面的一大堆 意思是
用批处理创建的计划任务任务名字叫PrettyBoy
执行的文件是 .exe那个
/sc ONSTART是马上执行
/rl HIGHEST是最高权限
这段起始不用单独记因为你不一定用到 记住用法就行
nsExec::ExecToLog 这个是打印日志的意思 你可以执行到DOS里面看一下
用法:
nsExec::ExecToLog ‘cmd.exe /c "$INSTDIRdirPrettyBoy.exe" install‘
三、SimpleSC
SimpleSC :: ExistsService 安装服务的插件
用法
SimpleSC :: ExistsService “PrettyBoy”
如果该服务存在,则SimpleSC :: ExistsService现在的结果为0,如果该服务不存在,则结果为<> 0
安装完可以判断一下服务安装是否成功 成功了才能启动
Pop $0
IntCmp $0 0 yes no
SimpleSC::StartService 启动服务的用法跟上面一样
SimpleSC::StartService “PrettyBoy”
就是启动该服务
四、nsProcess
这个主要是对进程操作用的
nsProcess::_FindProcess 首先杀进程 先得找到该进程
用法:
nsProcess::_FindProcess "Pretty.exe"
pop $0
IntCmp $0 603 findit notfind
返回值如果没有匹配到进程返回的是603 匹配到进程则是0 下面的操作自行解决
nsProcess::_Unload 就是关闭该进程 这个跟上面那个可以一起用 有没有进程都可以关一下
五、ExecCmd
ExecCmd::exec 这个就直接后面执行dos命令即可 不过已经不在更新了 最新的插件是ExecDos 大家可以区研究研究
用法:
ExecCmd::exec "taskkill /F /IM Pretty.exe /T"
这个就是杀掉所有相关进程了
以上是关于NSIS 插件篇的主要内容,如果未能解决你的问题,请参考以下文章