星期五, 12月 23, 2005

NSIS, 免費的 Install System

終於找到一個free, 而且還是open source的install System.
可以拿來取代InstallShield了。

NSIS 全名是Nullsoft Scriptable Install System,是一個幫你製做安裝程式的開源軟體。基本上的製作方式是一段script file, 交由NSIS compiler 幫你製成installation executable.

Script file對於software development 當然是重點。
基本上的script file由幾個主要要件組成,包含
  1. Installer Attribute: 這是這個Installer的主要屬性,例如這個installer 是什麼名稱。
  2. Pages: 控制Installer執行時,要顯示幾個頁面,可以做成Install Wizard安裝精靈。
  3. Sections: 區段,script file 至少要含個section, 每一個section就代表一個component, 可以在Component Pages裡被選擇是否要被安裝。UnInstaller 的section會在section name加上"un."的prefix。
  4. Function: 可分為User function 與Callback function。User function就是自行定義的function,寫好後自行呼叫,Callback function是定義好後有特定event可被系統呼叫執行。




底下是因為太久沒用,所以又K了好久的Document所寫基本的功能。可以用來當成Template。

#----------------- Attribute Start ---------------------

Outfile install.exe ; Generated setup file
Name "ProductName" ; Name your module here
InstallDir $PROGRAMFILES\Productname ; The destination folder.

; Request application privileges for Windows Vista
RequestExecutionLevel admin

Page directory
Page instfiles
UninstPage instfiles

#----------------- Section Start ---------------------
Section "Installer Section"
CreateDirectory $INSTDIR
SetOutPath $INSTDIR
File "..\Release\Product.exe" ; The program file you really want to install, use "file" command to install it.
WriteUninstaller $INSTDIR\uninstaller.exe
SectionEnd

; Delete Installed file plus the uninstaller
Delete $INSTDIR\*.exe
RMDir $INSTDIR

#----------------- Function Section Start ---------------------
# Call back function
Function .onInit

# Prevent execute the installer at second time.
# Create MutexA 3rd arguemnt should be changed to a uniquie value
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "Atrust") i .r1 ?e'
Pop $R0

StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
Abort
FunctionEnd





Tag: 介紹, Open Source, Installation System, InstallShield.

沒有留言: