之前的程序即使是按键发布,产生的也只是一个RAR文件包,客户拿到之后需要解压之后放在某文件夹下,然后执行index.bat文件。这和我们常用的安装软件方法不太相同,所以这里增强安装形象。
使用NSIS可以创建应用程序的安装和卸载包。这个程序是编译安装卸载脚本来实现生产安装程序的。所以我们首先需要编写脚本。编写脚本使用HM NIS Edit程序,使用这个程序可以由向导产生安装脚本。
首先我们将按键发布的源程序拷贝到E:\www.dongsuqin.cn\a文件夹下,内容为:
再由HM向导开始编写安装脚本,安装图标选择favicon.ico文件,第五步选择应用程序文件时,将所有文件添加到右侧。Vendor的内容需要新建一个section存进去。第六步修改快捷方式为index.bat文件。生成的脚本基本可行,但是不知为何需要在vendor的section下面加上一行SetOutPath "$INSTDIR\vendor\lib",这样才能递归建立vendor的路径。
整个文件为:
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "userview"
!define PRODUCT_VERSION "2012"
!define PRODUCT_PUBLISHER "gongqingkui@126.com"
!define PRODUCT_WEB_SITE "http://www.stdu.educ.n"
!define PRODUCT_DIR_REGKEY"Software\Microsoft\Windows\CurrentVersion\App Paths\makensis.exe"
!define PRODUCT_UNINST_KEY"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "D:\www.dongsuqin.cn\a\favicon.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\License.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\makensis.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\userview"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Section "MainSection" SEC01
SetOutPath"$INSTDIR"
SetOverwrite ifnewer
File"${NSISDIR}\makensis.exe"
CreateDirectory"$SMPROGRAMS\userview"
CreateShortCut"$SMPROGRAMS\userview\userview.lnk" "$INSTDIR\index.bat"
CreateShortCut"$DESKTOP\userview.lnk" "$INSTDIR\makensis.exe"
File"${NSISDIR}\License.txt"
File"D:\www.dongsuqin.cn\a\userview.jar"
File"D:\www.dongsuqin.cn\a\Licence.txt"
File"D:\www.dongsuqin.cn\a\index.bat"
File"D:\www.dongsuqin.cn\a\favicon.ico"
SectionEnd
Section "vendor" SEC02
SetOutPath"$INSTDIR\vendor\lib"
File"D:\www.dongsuqin.cn\a\vendor\lib\sqljdbc4.jar"
File"D:\www.dongsuqin.cn\a\vendor\lib\mysql-connector-java-5.1.7-bin.jar"
File"D:\www.dongsuqin.cn\a\vendor\lib\junit.jar"
SectionEnd
Section -AdditionalIcons
WriteIniStr"$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut""URL" "${PRODUCT_WEB_SITE}"
CreateShortCut"$SMPROGRAMS\userview\Website.lnk""$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut"$SMPROGRAMS\userview\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller"$INSTDIR\uninst.exe"
WriteRegStr HKLM"${PRODUCT_DIR_REGKEY}" """$INSTDIR\makensis.exe"
WriteRegStr${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayName" "$(^Name)"
WriteRegStr${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString""$INSTDIR\uninst.exe"
WriteRegStr${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayIcon" "$INSTDIR\makensis.exe"
WriteRegStr${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY}"${PRODUCT_UNINST_KEY}" "URLInfoAbout""${PRODUCT_WEB_SITE}"
WriteRegStr${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBoxMB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
Function un.onInit
MessageBoxMB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?"IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete"$INSTDIR\${PRODUCT_NAME}.url"
Delete"$INSTDIR\uninst.exe"
Delete"$INSTDIR\junit.jar"
Delete"$INSTDIR\mysql-connector-java-5.1.7-bin.jar"
Delete"$INSTDIR\sqljdbc4.jar"
Delete"$INSTDIR\favicon.ico"
Delete"$INSTDIR\index.bat"
Delete"$INSTDIR\Licence.txt"
Delete"$INSTDIR\userview.jar"
Delete"$INSTDIR\License.txt"
Delete"$INSTDIR\makensis.exe"
Delete"$SMPROGRAMS\userview\Uninstall.lnk"
Delete"$SMPROGRAMS\userview\Website.lnk"
Delete"$DESKTOP\userview.lnk"
Delete"$SMPROGRAMS\userview\userview.lnk"
RMDir"$SMPROGRAMS\userview"
RMDir "$INSTDIR"
DeleteRegKey${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM"${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
编译执行之后产生了和上文favicon.ico图标类似的安装文件setup.exe。双击此文件就可以完成安装。
参考