NSIS 插件篇


突然發現NSIS的  主程序有些東西實現起來比較麻煩   找了一些資料 研究研究幾個插件  看看 什么玩法套路

一、nsisXML

nsisXML::create   不管是讀還是寫都要有

nsisXML::load  然后一般讀取配置文件是    這個后面就直接寫路徑就行   nsisXML::load ‘$INSTDIR\Dir\test.xml’

這個地方要加一個返回判斷 IntCmp $0 0 notFoundXml  這個會自動壓入$0  如果找不到 還繼續select  安裝程序就卡死了  所以在下面寫個跳轉的標記notFoundXml  

nsisXML::select   找到你想修改的標簽內容   例如    nsisXML::select  '/test/common'

nsisXML::setText   存儲內容    nsisXML::setText          '"$INSTDIR\Dir\test.exe"'   

nsisXML::save      記得保存     nsisXML::save             ‘$INSTDIR\Dir\test.xml’

 https://nsis.sourceforge.io/NsisXML_plug-in_(by_Wizou)   這里面是官方的文檔   詳細的返回值  看一下官方文檔

二、nsExec

nsExec::Exec  直接批處理命令而不打開 DOS框

用法:

nsExec::Exec ‘schtasks /create /tn "PrettyBoy" /tr "$INSTDIR\dir\PretyBoy.exe /sc ONSTART /rl HIGHEST’

后面的一大堆 意思是

用批處理創建的計划任務任務名字叫PrettyBoy

執行的文件是 .exe那個 

 /sc ONSTART是馬上執行   

/rl HIGHEST是最高權限   

這段起始不用單獨記因為你不一定用到  記住用法就行

 

nsExec::ExecToLog  這個是打印日志的意思   你可以執行到DOS里面看一下

用法:

nsExec::ExecToLog       'cmd.exe /c "$INSTDIR\dir\PrettyBoy.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  就是關閉該進程 這個跟上面那個可以一起用    有沒有進程都可以關一下

 

補充一下 這個插件在Unicode編碼格式下會報錯    記得把插件里的nsProcessW 改成nsProcess就可以了   這樣就能通過編譯了    主要針對 繁體中文系統的亂碼問題

 

五、ExecCmd

 ExecCmd::exec 這個就直接后面執行dos命令即可  不過已經不在更新了   最新的插件是ExecDos  大家可以區研究研究

用法:

ExecCmd::exec "taskkill /F /IM Pretty.exe /T" 

這個就是殺掉所有相關進程了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM