项目自动化之道-7.装配与部署之增强安装形象

项目自动化之道-7.安装与部署之增强安装形象

      之前的程序即使是按键发布,产生的也只是一个RAR文件包,客户拿到之后需要解压之后放在某文件夹下,然后执行index.bat文件。这和我们常用的安装软件方法不太相同,所以这里增强安装形象。

      使用NSIS可以创建应用程序的安装和卸载包。这个程序是编译安装卸载脚本来实现生产安装程序的。所以我们首先需要编写脚本。编写脚本使用HM NIS Edit程序,使用这个程序可以由向导产生安装脚本。

      首先我们将按键发布的源程序拷贝到E:\www.dongsuqin.cn\a文件夹下,内容为:

项目自动化之道-7.装配与部署之增强安装形象

      再由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。双击此文件就可以完成安装。

参考

1.      项目自动化之道-1.使用ant进行单步建构

2.      项目自动化之道-2.使用CruiseControl定时建构

3.      项目自动化之道-3.按键发布Ant

4.      项目自动化知道-4.按键发布Bat

5.      项目自动化之道-5.按键发布Bat版的jar打包改进

6.      项目自动化之道-5.安装与部署之诊断测试