安裝包製作 NSIS專案的基本結構

2021-09-08 06:47:13 字數 3144 閱讀 6935

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...