一个完整的安装应用程序的脚本。
!include "MUI.nsh"
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install-nsis.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall-nsis.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-nsis.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-nsis.bmp"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "SimpChinese"
!define PRODUCT_NAME $InstallName
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "YiStudio"
InstallDir "$PROGRAMFILES\YiStudio\MIS\"
BrandingText "YiStudio"
ShowInstDetails show
ShowUnInstDetails show
Name $InstallName
OutFile "ModernUI.exe"
var "InstallName"
var "LinkName"
var "ApplicationName"
Function .onInit
StrCpy $InstallName "XXX信息管理系统"
StrCpy $LinkName "XXX信息管理系统.lnk"
StrCpy $ApplicationName "MIS.exe"
FunctionEnd
Section "MainSection" SECMain
SetOverwrite ifnewer
;程序运行所需的所有东西
;含有文件夹的
SetOutPath "$INSTDIR\XML"
File /r /x .svn D:\SharpDevelop2\MIS\Main\bin\Debug\XML\*.*
;可执行程序等
SetOutPath "$INSTDIR"
File /r /x .svn D:\SharpDevelop2\MIS\Main\bin\Debug\*.*
CreateDirectory "$SMPROGRAMS\$InstallName"
CreateShortCut "$SMPROGRAMS\$InstallName\$LinkName" "$INSTDIR\$ApplicationName"
CreateShortCut "$DESKTOP\$LinkName" "$INSTDIR\$ApplicationName"
WriteUninstaller "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\$InstallName\卸载$LinkName" "$INSTDIR\uninst.exe"
Exec "$INSTDIR\MIS.exe"
SectionEnd
;这是一个特殊的Section 要包括卸载程序的话必须有此Section 且Section的名字就是Uninstall
Section Uninstall
Delete "$DESKTOP\XXX信息管理系统.lnk"
Delete "$SMPROGRAMS\XXX信息管理系统\*.*"
SetOutPath "$DESKTOP"
RMDir "$SMPROGRAMS\XXX信息管理系统"
RMDir /r "$INSTDIR"
SectionEnd
脚本中红色的部分可实现安装完成后自动运行程序的功能。