NSIS脚本开发总结
最近在做NSIS腳本安裝程序開發,在此做一些開發上的總結,記錄一下遇到的技術難題。
首先是環境配置,這個很簡單只要把nsis和nisedit下載安裝就能做基本的開發了。?下載鏈接NSIS: Nullsoft Scriptable Install System - Browse Files at SourceForge.net
安裝之后打開nisedit點擊文件-->新建腳本:向導創建一個nsi后綴文件的模板出來。可以在模板中調整代碼適配自己的開發需求。需要注意的是創建模板時如果用到了授權文件和自述文件,需要自己創建,找不到這兩個文件會創建失敗。
如果想要在打印日志的話就需要下載對應版本的log壓縮包,將解壓出來的文件去nsis安裝路徑下替換就可以了。不過這個日志文件名和日志內容是不可控的,如果想要隨心所欲的打印日志有兩種方式。一是去研究源碼自行修改,時間成本較高。本人采用了創建文件,寫入日志內容的方式。打印日志接口封裝及使用如下:
需要注意的是根據封裝邏輯!insertmacro InsLogPrint "install init"這行代碼在程序中被檢測到占用兩行。?
?程序單例運行通常采用創建互斥鎖的方式:System::Call 'kernel32::CreateMutexA(i 0, i 0, t "INSClient") i .r1 ?e' 此種方式會在系統tmp文件夾下創建一個隨機的文件夾,在此隨機文件夾里產生一個System.dll文件,此機制如果影響到軟件運行,請慎用。同樣的nsExec::Exec 'cmd /c "taskkill /f /t /im winmd5.exe"'操作會產生nsExec.dll臨時文件;FindProcDLL::FindProc "${PRODUCT_VERSION}.exe"操作會產生FindProcDLL.dll臨時文件,同時使用此種方式需要下載對應的dll文件。dll文件不對該操作不會生效。為防止對進程操作時產生臨時文件可以使用ExecShellWait接口,具體操作參考文檔。
對系統驅動文件操作時需要在${DisableX64FSRedirection},${EnableX64FSRedirection}兩行代碼之間執行。
程序的重啟提示是默認關閉的。但是在文件進行刪除操作時使用了/REBOOTOK屬性,如果文件沒有刪除成功會自動開始重啟提示。程序執行完畢在節面上會出現是否立即重啟選項。可以通過SetRebootFlag false操作關閉提示。系統重啟后仍會自動刪除。
?安裝包在釋放程序的過程中可以設置SetOverwrite on,文件將被覆蓋,如果文件釋放失敗會進行提示。此外還有try、off等選項。
暫時先總結這么多,都是干貨。nsis做打包程序開發很合適,不過想要像c++一樣開發限制也很多。接下來準備寫一篇用批處理去編譯nsi程序生成安裝包文件的操作
總結
以上是生活随笔為你收集整理的NSIS脚本开发总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业英语词汇总结
- 下一篇: installshield脚本入门