nsis是乙個用於生成安裝程式的軟體,用nsi指令碼可以很方便地寫出乙個安裝包。最大的優點就是免費。vs自帶的建立msi安裝包能實現的功能比較單一,聽說有微軟有另乙個專門做安裝包的軟體能實現更強大的功能,不過比vs pro還要貴……。所以如果只是最簡單的安裝、解除安裝,msi足夠了,如果想多提供一些功能,又不想多花錢的話,nsis或是inno都是不錯的選擇。其中nsis更靈活一些。inno更簡單一些。
目前發現的nsis的主要缺點是:不支援在安裝過程中取消安裝。如果你覺得這個功能很重要的話,還是不要用nsis了。
下面就從最簡單的說起——如何用nsis建立乙個安裝包。建議見看看nsis的幫助文件。因為下面的內容主要介紹幫助文件還沒有講到的部分。
nsis的user manual第二章「
tutorial: the basic
」是這樣描述指令碼的結構的。
required is the outfile instruction, which tells nsis where to write the installer, and one section.
大意就是說乙個nsi指令碼只要有乙個outfile指令和乙個section就可以了。就是下面這個樣子:
outfile "min.exe"
section
sectionend
乙個什麼也沒有做的installer就大功告成了。但是這樣的示例對於學習nsi指令碼可以說一點兒幫助也沒有。因為我們需要的是乙個可以完成基本功能的安裝程式,而不是乙個連「hello world」都沒有輸出的可執行檔案。而nsis的user manual從頭到尾沒有給出乙個完整的示例,並解釋一下。這篇文章將向大家介紹乙個功能基本完整的,行為基本正確的安裝程式指令碼。文中不會介紹nsi的語法,語法請參考
user manual。
環境準備:
首先,如果大家還沒有安裝nsis,請先從
nsi指令碼的編輯器推薦notepad++。可以從
需求描述:
我們將要實現的installer需要滿足下面幾個要求:
1.介面看上去別太土:因為很不幸,nsis編譯出來的程式預設的風格很win 98。要使用mui2庫來生成乙個比較xp風格的安裝包。關於mui2包的使用,可以參考。
2.支援安裝日誌:安裝時把安裝的檔案記錄下來,主要用於解除安裝時只刪除安裝程式安裝的檔案。
3.支援多語言。這個就不用解釋了吧。
4.基本的頁面。這個是自帶的,也不用怎麼解釋。
示例**:
下面是乙個比較完整的安裝,但是功能還不是很完整,因為具體功能就要自己加了。
; 標頭檔案應該放在最上面,
c++也是這樣。
!include "mui2.nsh"
!include "uninstallfromlog.nsh" ;
解除安裝時要用的乙個標頭檔案,沒有在預設安裝包裡,可以從這裡
; 然後是一些基本的設定
requestexecutionlevel user
; 引數的定義
!define mui_abortwarning
!define mui_finishpage_norebootsupport
; 安裝頁面定義
!insertmacro mui_page_welcome
!insertmacro mui_page_license "license.txt"
!insertmacro mui_page_directory
!insertmacro mui_page_instfiles
!insertmacro mui_page_finish
; 解除安裝頁面定義
!insertmacro mui_unpage_welcome
!insertmacro mui_unpage_confirm
!insertmacro mui_unpage_instfiles
!insertmacro mui_unpage_finish
; 介面語言定義,想多支援就多加,但是加的語言,受
os限制不一定能顯示出來,必須放在頁面的定義之後。
!insertmacro mui_language "simpchinese"
!insertmacro mui_language "english"
; 開啟安裝時的
log功能,必須是第乙個
section
section"-logseton"
logset on
sectionend
; 然後是安裝段和解除安裝段
section"install"
setoutpath
$instdir
writeuninstaller
$instdir\uninstaller.exe
sectionend
sectionuninstall
call un.createlogfromfile
call un.removedirectoriesfromlog
delete
$instdir\install.log
delete
$instdir\uninstaller.exe
rmdir
$instdir
sectionend
; 最後是各個函式,最好放在最後。
; 安裝程式的初始化函式,顯示了語言選擇頁面
function.oninit
!insertmacro mui_langdll_display
functionend
functionun.oninit
!insertmacro mui_ungetlanguage
functionend
快樂無極部落格
也給出了一種根據log檔案進行解除安裝的另乙個標頭檔案,原理一樣,大家可以參考一下。
NSIS安裝包製作流程
參考 開始建立安裝模板 輸入相關係資訊 設定安裝程式的圖示等資訊 設定使用者安裝目錄,此處的授權檔案要改,否則找不到檔案報錯。新增檔案 新建組之類的,主要是為了使用者選擇安裝元件的過程可選,這裡要注意一下,當檔案數過多的時候,還是用組的形式好一些,要不然軟體一直卡死。著重注意一下,目的目錄一定一定要...
NSIS程式安裝包製作
啟動nsis程式主介面,選擇 視覺化指令碼編輯器 vnisedit 選單,開始製作自己的安裝包 選擇 使用指令碼嚮導建立新的指令碼檔案 確定 進步指令碼嚮導,下一步 第一步,這裡填寫應用程式的一些基本資訊,下一步 第二步,這裡是選擇安裝包的圖示,生成的檔名,程式語言等,使用預設的就可以,不需要修改 ...
使用NSIS製作安裝包 2
乙個完整的安裝應用程式的指令碼。include mui.nsh define mui abortwarning define mui icon contrib graphics icons orange install nsis.ico define mui unicon contrib graph...