日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NSIS脚本开发总结

發布時間:2023/12/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NSIS脚本开发总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做NSIS腳本安裝程序開發,在此做一些開發上的總結,記錄一下遇到的技術難題。

首先是環境配置,這個很簡單只要把nsis和nisedit下載安裝就能做基本的開發了。?下載鏈接NSIS: Nullsoft Scriptable Install System - Browse Files at SourceForge.net

安裝之后打開nisedit點擊文件-->新建腳本:向導創建一個nsi后綴文件的模板出來??梢栽谀0逯姓{整代碼適配自己的開發需求。需要注意的是創建模板時如果用到了授權文件和自述文件,需要自己創建,找不到這兩個文件會創建失敗。

如果想要在打印日志的話就需要下載對應版本的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脚本开发总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。