项目自动化之道-7.安装与部署之增强安装形象
之前的程序即使是按键发布,产生的也只是一个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 showShowUnInstDetails 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 AbortFunctionEnd 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 trueSectionEnd
编译执行之后产生了和上文favicon.ico图标类似的安装文件setup.exe。双击此文件就可以完成安装。
参考
1. 项目自动化之道-1.使用ant进行单步建构
2. 项目自动化之道-2.使用CruiseControl定时建构
3. 项目自动化之道-3.按键发布Ant版
4. 项目自动化知道-4.按键发布Bat版
5. 项目自动化之道-5.按键发布Bat版的jar打包改进
6. 项目自动化之道-5.安装与部署之诊断测试