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 插件篇的主要内容,如果未能解决你的问题,请参考以下文章

NSIS(001)检测和结束进程是否运行?

如何在 Nsis 中创建 zip 文件

nsis现代化安装界面无法弹出

NSIS安装包脚本

NSIS 卸载程序工作目录

使用NSIS打包超大型软件的几个注意事项