你的位置:首页 > 操作系统

[操作系统]Nsis制作启动Tomcat服务的exe安装包教程


一. 准备工作

  下载nsis相关工具包,点击此下载

    1. 安装程序:nsis-2.46-setup.exe

    2. 编辑程序:cnisedit203.exe

    3. 帮助文档:NSIS205帮助文档.rar

    4. 第三方库:ExecCmd.dll、AddPath.nsh、WriteEnvStr.nsh

 

二. 安装nsis-2.4.6-setup.exe

  1. 安装完后,右键nsi格式的文件,如果没有出现Compile NSIS Script和Compile NSIS Script(Choose Compressor)两个选项,

  可尝试右键nsi格式文件---属性---常规---更改打开方式为记事本。

   2. 将ExecCmd.dll复制到"NSIS安装路径\Plugins"下

  

三. 制作nsi打包脚本:erp1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi

 1 ;-------------------------------常量定义------------------------------- 2 ;定义产品名称常量 3 !define PRODUCT_NAME "办公自动化系统" 4  5 ;定义产品版本常量 6 !define PRODUCT_VERSION "1.0.0" 7  8 ;资源路径常量 9 !define RESOURCE_CATALOG "resource" 10  11 ;目标路径常量 12 !define TARGET_CATALOG "target" 13  14 ;定义JDK资源存放路径常量 15 !define JDK_RESOURCE_CATALOG "jdk1.6.0_21" 16  17 ;定义TOMCAT的资源存放路径常量 18 !define TOMCAT_RESOURCE_CATALOG "apache-tomcat-6.0.33" 19  20 ;定义JAVA_HOME常量常量 21 !define JAVA_HOME "$INSTDIR\${JDK_RESOURCE_CATALOG}" 22  23 ;定义CATALINA_HOME常量常量 24 !define CATALINA_HOME "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}" 25  26 ;定义反安装键值常量 27 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 28  29 ;定义反安装ROOT键值常量 30 !define PRODUCT_UNINST_ROOT_KEY "HKLM" 31  32  33  34 ;------------------------------第三方库导入------------------------------- 35 !include "MUI.nsh" 36  37 ;导入打包程序第三方库 38 !include "third\AddPath.nsh" 39 !include "third\WriteEnvStr.nsh" 40  41  42  43 ;------------------------------图标定义------------------------------- 44  45 !define MUI_ABORTWARNING 46 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" 47 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" 48  49  50  51 ;------------------------------安装步骤向导界面定义------------------------------- 52  53 ;欢迎页面 54 !insertmacro MUI_PAGE_WELCOME 55  56 ;授权页面 57 !insertmacro MUI_PAGE_LICENSE "..\${RESOURCE_CATALOG}\licence.txt" 58  59 ;目录选择页面 60 !insertmacro MUI_PAGE_DIRECTORY 61  62 ;安装页面 63 !insertmacro MUI_PAGE_INSTFILES 64  65 ;完成页面 66 !insertmacro MUI_PAGE_FINISH 67  68 ;反安装页面 69 !insertmacro MUI_UNPAGE_INSTFILES 70  71 ;语言选择 72 !insertmacro MUI_LANGUAGE "SimpChinese" 73  74  75  76 ;------------------------------打包后安装文件名/输出路径/安装路径定义------------------------------- 77  78 ;产品名称及产品版本 79 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 80  81 ;输出文件名称 82 OutFile "..\${TARGET_CATALOG}\${PRODUCT_NAME}-${PRODUCT_VERSION}.exe" 83  84 ;程序安装路径 85 InstallDir "$PROGRAMFILES\${PRODUCT_NAME}-${PRODUCT_VERSION}" 86  87 ;显示安装进度 88 ShowInstDetails show 89  90 ;显示反安装进度 91 ShowUnInstDetails show 92  93  94  95 ;------------------------------提示对话框定义------------------------------- 96  97 ;安装前提示 98 Function .onInit 99  MessageBox MB_YESNO "请先确认该电脑上没有安装JDK、Apache Tomcat软件。是否继续?" IDYES NoAbort100    Abort101   NoAbort:102 FunctionEnd103 104 105 ;反安装提示106 Function un.onInit107  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2108  Abort109 FunctionEnd110 111 112 113 ;------------------------------菜单以及注册表信息注册-------------------------------114 115 ;菜单注册116 Section -AdditionalIcons117  SetOutPath $INSTDIR118  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"119  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"120 SectionEnd121 122 123 ;注册表注册124 Section -Post125  WriteUninstaller "$INSTDIR\uninst.exe"126  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"127  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"128 SectionEnd129 130 131 132 133 ;------------------------------资源复制打包-------------------------------134 135 ;将RESOURCE_CATALOG下的所有文件资源拷贝至安装目录下136 Section "RESOURCE_COPY" SEC01137  sectionin 1138  sectionin RO139  SetOutPath "$INSTDIR\${RESOURCE_CATALOG}"140  SetOverwrite try141  File /r "..\${RESOURCE_CATALOG}\*.*"142 SectionEnd143 144 145 146 147 ;------------------------------环境变量注册及反注册-------------------------------148 149 ;注册环境变量150 Section -EnvironmentVariables151  ;JDK安装根路径152  Push JAVA_HOME153  Push '${JAVA_HOME}'154  Call WriteEnvStr155  Push '${JAVA_HOME}\bin'156  Call AddToPath157  158  ;TOMCAT安装根路径159  Push CATALINA_HOME160  Push '${CATALINA_HOME}'161  Call WriteEnvStr162  Push '${CATALINA_HOME}\bin'163  Call AddToPath164 165 SectionEnd166 167 168 169 ;反注册环境变量170 Function un.removeEnvPath171  Push JAVA_HOME172  Call un.DeleteEnvStr173  Push '${JAVA_HOME}\bin'174  Call un.RemoveFromPath175 176  Push CATALINA_HOME177  Call un.DeleteEnvStr178  Push '${CATALINA_HOME}\bin'179  Call un.RemoveFromPath180 181 FunctionEnd182 183 184 185 ;------------------------------服务的安装/启动/停止/反安装-------------------------------186 187 ;安装并启动后台服务188 Section -Service189  Call InstallTomcatService190  191  Call startTomcatService192 SectionEnd193 194 195 ;安装TOMCAT服务196 Function InstallTomcatService197  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"198  ExecCmd::exec /TIMEOUT=10000 "service.bat install"199 FunctionEnd200 201 202 ;启动TOMCAT服务203 Function startTomcatService204  SetOutPath "${CATALINA_HOME}\bin"205  ExecCmd::exec /TIMEOUT=120000 "net start Tomcat6"206 FunctionEnd207 208 209 ;停止TOMCAT服务210 Function un.stopTomcatService211  ExecCmd::exec /TIMEOUT=120000 "net stop Tomcat6"212 FunctionEnd213 214 215 ;删除TOMCAT服务216 function un.removeTomcatService217  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"218  ExecCmd::exec /TIMEOUT=120000 "service.bat remove"219 functionend220 221 222 223 ;------------------------------反安装-------------------------------224 225 Section Uninstall226  ExecCmd::exec /TIMEOUT=120000 "taskkill /im tomcat6.exe /f"227 228  Call un.stopTomcatService 229  230  Call un.removeTomcatService 231 232  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"233  RMDir "$SMPROGRAMS\${PRODUCT_NAME}"234 235  Delete "$INSTDIR\uninst.exe"236  RMDir /r "$INSTDIR"237 238  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"239  240  Call un.removeEnvPath241  SetAutoClose true242 SectionEnd

View Code

 

四. 编译前准备

  1. 新建resource、target、script三个文件夹

  2. 将jdk1.6.0_21、tomcat6.0.33放置到resource文件夹下

  3. 将erp1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi放置到script文件夹下

  4. 在script下新建third文件夹,将AddPath.nsh、WriteEnvStr.nsh放置到该文件夹下

 

五. 编译nsi脚本

  右键nsi脚本,选择Compile NSIS Script进行编译,最终在target目录下生成exe安装包。