一个完整的安装应用程序的脚本。
!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
脚本中红色的部分可实现安装完成后自动运行程序的功能。