一. NSIS介绍
概述
最近需要寫一個安裝程序,比對了一下現有的安裝工具,最后選定了NSIS,最主要的原因一是開源、二是靈活。
下面把我的要求簡單列舉下:
1、需要檢查系統環境是否滿足要求
2、需要界面友好的安裝過程
3、需要一些自定義界面,在安裝過程中來獲取一些必須的信息
4、需要根據界面的選擇來執行或跳過一些安裝過程
5、需要操作數據庫
6、需要操作IIS
7、需要使用PowerShell命令設置AD/Exchange/Lync
8、需要操作注冊表,用于標識安裝步驟以用于卸載或回滾的執行
經過調查發現NSIS都能實現,但它有自己的一套腳本語言,需要學習成本,如果有編程基礎這個其實不難,下載一個“NSIS用戶手冊”、一個"NSIS"(腳本編譯)、一個“HM NIS Edit”(腳本編輯)一切就可以開始啦!
基本知識
那么首先,我們先看一下“NSIS用戶手冊”吧,你總得先了解一下NSIS這個東西的基本介紹和腳本的基本結構吧。
我把了解的最重要的東西列舉一下,其他涉及到細節或遇到難題就可以隨時查詢用戶手冊或者google萬能的網絡:
1、安裝程序的主體腳本文件 .nsi,可以包含一個或多個頭文件 .nsh
頭文件可以通過把它劃分為一個或多個代碼塊來幫你編排你的腳本,你也可以在頭文件里加入功能函數或宏,并且在多個安裝程序里包含頭文件,這樣可以更容易的升級你的程序,并且使你的腳本很容易的讓人看懂。
2、一個安裝程序的基本結構包含應用程序的基本信息定義、頭文件引用、安裝程序屬性設置、安裝程序頁面、區段(安裝過程腳本)和函數(安裝頁面創建之前、顯示前和離開前的代碼)等
應用程序的基本信息定義:產品的名稱、版本、發布者、網站等信息;頭文件引用:!include ***.nsh;
安裝程序屬性設置:安裝程序語言、安裝程序名稱、輸出安裝文件、默認安裝目錄等信息;
安裝程序頁面:內建頁面(歡迎頁面、許可頁面、目錄選擇頁面、組件選擇頁面、安裝記錄頁面、完成頁面)、自定義頁面;
區段:安裝程序執行的實體,每一個 NSIS 安裝程序包含一個或多個區段;
函數:最終要的是頁面的回調函數(每個內建頁面有三個回調函數(預置函數、顯示創建函數和離開函數)、自定義的頁面僅有兩個回調函數(創建函數和離開函數))、
再就是安裝的回調函數(.onInit、.onInstFailed、.onInstSuccess等)、還可以有一些自定義的函數;
3、保存值和使用值
可以使用Var命令來聲明變量,使用變量來保存值,所有定義的變量都是全局的,即使在區段或函數內定義。所以你可以聲明變量、代碼中對變量進行各種操作(賦值、比較、字符串操作等,使用變量需要加$),下面一個簡單的例子:
Var str1 Var hasValue Function StrOperStrCpy hasValue False ; $hasValue = False${If} $hasValue == TrueMessageBox MB_OK "$str1"${EndIf}StrCpy $str1 "Hello," ; $str1 = Hello,StrCpy $str1 "$str1World" ; $str1 = Hello,WorldStrCpy hasValue True ; $hasValue = True${If} $hasValue == TrueMessageBox MB_OK "$str1"${EndIf} FunctionEnd?另外一個保存值的方式是放入堆棧中,堆棧都知道是“先進后出”的,最重要的兩個命令就是Push和Pop,下面一個簡單的例子:
Var str1 Function StackOperPush "Hello"Pop $str1 ; $str1 = HelloPush "$str1 World" Pop $str1 ; $str1 = Hello WorldMessageBox MB_OK "$str1" FunctionEndNSIS腳本有一些內置的變量,如:$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9;這些變量可以像用戶變量一樣使用,但不用聲明這些變量;另外還有一些特殊含義的內置變量,如:$INSTDIR、$OUTDIR等。
NSIS腳本還有一些常量,如:$PROGRAMFILES,$DESKTOP,$WINDIR,$STARTMENU,$EXEDIR等等,有需要可以查看幫助文檔。
4、指令
NSIS腳本的執行是依靠一個個的指令,這些指令包括字符串操作指令、數學操作指令、文件操作指令、注冊表讀寫指令、用戶界面指令、流程控制指令等等,具體指令可以隨時查看用戶手冊,另外你還可以通過插件來擴展它的能力,這些插件通常是一個DLL文件,關于插件以后章節會詳細說明。
以上,我們通過快速瀏覽NSIS用戶手冊,了解了腳本的基本結構和基本語法方面的信息。下面,我們需要搭建NSIS的開發和編譯環境。
編譯環境
下載了NSIS最新的安裝包,根據向導一步步安裝即可,安裝完成后會在系統目錄上有NSIS目錄,里面就有用戶手冊和一些腳本例子,另外就是在腳本文件.nsi點擊右鍵會出來NSIS快捷菜單,如下圖所示:
編輯/IDE工具
編譯環境都好了,接下來就該說到編輯腳本的工具了,最簡單的是用文本文件,其實任何可以編輯文本文件的工具都可以,但一是沒有任何格式不好看,再就是對于一個才開始編輯NSIS腳本的新手來說一頭霧水,不知從何下手啊,好了,工具來了,下載HM NIS Edit最新版本,這是一個針對NSIS的免費的編輯/集成開發工具,安裝后就可以使用啦,我能告訴你它不光讓腳本更容易讀寫,最最打動我的其實是它的新建腳本向導功能,我在無從下手時通過向導生成的腳本省了很多工夫,也通過這些腳本更深刻的理解了腳本的結構和一些語法信息,再就是通過菜單NSIS可以直接編譯腳本,腳本編譯過程的輸出信息會在輸出界面顯示,錯誤直接定位,界面如下所示:
好了,基本介紹啰啰嗦嗦這么多,應該有點記憶了吧,下章我們就從制作一個簡單的NSIS安裝包開始吧!
總結
- 上一篇: apache根据ip分发_腾讯广告进入“
- 下一篇: Linux下解决发布Qt程序报错:it