網頁

搜尋此網誌

2014年5月2日 星期五

NSIS 建置 Windows 安裝程式

NSIS (Nullsoft Scriptable Install System) 是一套建置 Windows 安裝程式 (installers) 的開源軟體,用來將程式或文件打包成一個執行檔給客戶安裝使用。NSIS 採用腳本 (Script) 的方式建置 Windows 安裝程式,有點像寫程式的方式,先撰寫一個副檔名為 .nsi 的 Script,再利用 MakeNSIS 編譯 .nsi 檔案,將可以得到安裝程式的執行檔。

NSIS 提供大量的範例可以參考,因此學習 NSIS 不會很困難,加上外掛 (plug-in) 程式,我們可以快速地建置相當專業的安裝程式。雖然 NSIS 的指令很多,但不用擔心,實際會用的指令不不超過 20 個,有需要再查找就行了,缺點大概就是只有英文的操作介面吧!除了 NSIS 這個開源軟體之外,還有 Inno Setup 和 WiX Toolset 這兩套免費軟體可以使用,大家有興趣不妨比較看看。

學習 NSIS 最重要的是了解 .nsi 檔案的內容,Script 中有幾個重要觀念如下:

  • 安裝程式屬性 (Installer Attributes)
    這是用來設定安裝程式的行為,例如安裝路徑、名稱、圖示、版本資訊等,屬於全域的設定。詳細參閱http://nsis.sourceforge.net/Docs/Chapter4.html#4.8
  • 頁面 (Pages)
    可以將安裝程式顯示的每個視窗當作一個頁面,NSIS 內建數個頁面類型,例如版權頁面用來顯示版權資訊,元件頁面讓用戶選擇安裝元件等。頁面之間是有先後順序的,在撰寫 Script 要特別注意,頁面主要是利用 Page 和 UninstPage 兩個指令進行設定。詳細參閱http://nsis.sourceforge.net/Docs/Chapter4.html#4.5
  • 章節 (Sections)
    可以把 NSIS 的章節當作程式元件來看,例如一個安裝程式需要安裝兩個軟體,這時候就需要兩個章節,在元件頁面的視窗就會看到兩個軟體元件。比較注意的是每個章節會有一個名稱作為元件名稱,如果是 Uninstall 或字首為un.的名稱則是用在移除的元件。詳細參閱http://nsis.sourceforge.net/Docs/Chapter4.html#4.6
  • 指令 (Instructions)
    指令占了 NSIS 說明的大部分,包含檔案操作、登錄檔 (Registry) 操作、程式或系統的呼叫執行等等,基本上都是安裝或移除會用到的操作指令。詳細參閱http://nsis.sourceforge.net/Docs/Chapter4.html#4.9
  • 函式 (Functions)
    將常用的操作定義成函式以避免重複,特別的是 NSIS 定義一些回呼函式,我們可以撰寫一些操作讓 NSIS 執行時呼叫,例如啟動或關閉 NSIS 時執行某些工作。詳細參閱http://nsis.sourceforge.net/Docs/Chapter4.html#4.7
  • 編譯時期命令 (Compile Time Commands)
    這是用來設定 NSIS 編譯的行為,常用的命令有引用外掛 (plug-in) 程式、定義常數等。詳細參閱http://nsis.sourceforge.net/Docs/Chapter5.html

最後,介紹 NSIS 的安裝,NSIS 有兩種版本,一種是 NSIS ( http://nsis.sourceforge.net/ 網站上面的版本) ,另一種是 Unicode NSIS。如果不需要多國語言,以英語為安裝程式的語言,那麼兩種版本的 NSIS 是沒有什麼差異,但若希望安裝程式顯示中文或其他多國語言,則建議採用 Unicode NSIS,比較不會出現亂碼的情形。必須注意的是,Unicode NSIS的 .nsi 檔案必須是 UTF-8 編碼的 Script ,這樣 Unicode 版本的 MakeNSIS 才能正常編譯。此外,這兩種版本是可以同時安裝在一個系統上的。

###

1 則留言:

  1. 這裡也有NSIS教學哦!http://seesawworld.blogspot.tw/2016/02/1-nsis.html

    回覆刪除

熱門文章