可以拿來取代InstallShield了。
NSIS 全名是Nullsoft Scriptable Install System,是一個幫你製做安裝程式的開源軟體。基本上的製作方式是一段script file, 交由NSIS compiler 幫你製成installation executable.
Script file對於software development 當然是重點。
基本上的script file由幾個主要要件組成,包含
- Installer Attribute: 這是這個Installer的主要屬性,例如這個installer 是什麼名稱。
- Pages: 控制Installer執行時,要顯示幾個頁面,可以做成Install Wizard安裝精靈。
- Sections: 區段,script file 至少要含個section, 每一個section就代表一個component, 可以在Component Pages裡被選擇是否要被安裝。UnInstaller 的section會在section name加上"un."的prefix。
- 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.
沒有留言:
張貼留言