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打包脚本:ims1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi
; Script generated by the HM NIS Edit Script Wizard. ;------------------------------常量定义------------------------------- ;定义产品名称常量
!define PRODUCT_NAME "企业信息管理系统" ;定义产品版本常量
!define PRODUCT_VERSION "1.0.0" ;定义发布公司名称常量
!define PRODUCT_PUBLISHER "ims" ;定义产品发布公司网址常量
!define PRODUCT_WEB_SITE "http://www.ims.com" ;定义反安装键值常量
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" ;定义反安装ROOT键值常量
!define PRODUCT_UNINST_ROOT_KEY "HKLM" ;定义开机自动启动ROOT键值常量
!define PRODUCT_AUTORUN_ROOT_KEY "HKCU" ;定义开机自动启动键值常量
!define PRODUCT_AUTORUN_KEY "Software\Microsoft\Windows\CurrentVersion\Run" ;定义系统访问地址
!define URL "http://localhost:8080/ims/index.html" ;应用路径常量
!define APP_CATALOG "app" ;资源路径常量
!define RESOURCE_CATALOG "resource" ;目标路径常量
!define TARGET_CATALOG "target" ;定义JDK资源存放路径常量
!define JDK_RESOURCE_CATALOG "java\jdk1.6.0_21" ;定义TOMCAT的资源存放路径常量
!define TOMCAT_RESOURCE_CATALOG "container\apache-tomcat-6.0.33" ;定义MYSQL的资源存放路径常量
!define MYSQL_RESOURCE_CATALOG "db\mysql-server-5.1" ;定义数据存放路径常量
!define DATA_RESOURCE_CATALOG "data" ;定义图标存放路径常量
!define ICON_RESOURCE_CATALOG "icon" ;定义JAVA_HOME常量常量
!define JAVA_HOME "$INSTDIR\${JDK_RESOURCE_CATALOG}" ;定义CATALINA_HOME常量常量
!define CATALINA_HOME "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}" ;定义MYSQL_HOME常量常量
!define MYSQL_HOME "$INSTDIR\${MYSQL_RESOURCE_CATALOG}" ;------------------------------第三方库导入------------------------------- ; MUI 1.67 compatible ------
!include "MUI.nsh" ;导入打包程序第三方库
!include "third\AddPath.nsh"
!include "third\WriteEnvStr.nsh" ;------------------------------图标定义------------------------------- ; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" ;------------------------------安装步骤向导界面定义------------------------------- ;欢迎页面
!insertmacro MUI_PAGE_WELCOME ;授权页面
!insertmacro MUI_PAGE_LICENSE "..\${RESOURCE_CATALOG}\licence.txt" ;目录选择页面
!insertmacro MUI_PAGE_DIRECTORY ;安装页面
!insertmacro MUI_PAGE_INSTFILES ;完成页面
!insertmacro MUI_PAGE_FINISH ;反安装页面
!insertmacro MUI_UNPAGE_INSTFILES ;语言选择
!insertmacro MUI_LANGUAGE "SimpChinese" ;------------------------------打包后安装文件名/输出路径/安装路径定义------------------------------- ;产品名称及产品版本
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" ;输出文件名称
OutFile "..\${TARGET_CATALOG}\${PRODUCT_NAME}-${PRODUCT_VERSION}.exe" ;程序安装路径
InstallDir "$PROGRAMFILES\ims1.0.0" ;显示安装进度
ShowInstDetails show ;显示反安装进度
ShowUnInstDetails show ;------------------------------提示对话框定义------------------------------- ;安装前提示
Function .onInit
MessageBox MB_YESNO "请先确认该电脑上没有安装JDK、Apache Tomcat、Mysql软件。是否继续?" IDYES NoAbort
Abort
NoAbort:
FunctionEnd ;安装失败提示
Function .onInstFailed
MessageBox MB_OK "安装失败,请检查您的系统环境。"
FunctionEnd ;反安装成功提示
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd ;反安装提示
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd ;------------------------------菜单以及注册表信息注册------------------------------- ;菜单注册
Section -AdditionalIcons
SetOutPath $INSTDIR
;WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "${URL}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
;CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${URL}" "" "$INSTDIR\icon\ims.ico"
SectionEnd ;注册表注册
Section -Post
WriteRegStr ${PRODUCT_AUTORUN_ROOT_KEY} "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}" "${CATALINA_HOME}\bin\runbat.vbs"
WriteUninstaller "$INSTDIR\uninst.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}" "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 ;------------------------------资源复制打包------------------------------- ;将JDK_RESOURCE_CATALOG下的所有文件资源拷贝至安装目录下
Section "JDK_RESOURCE_COPY" SEC01
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${JDK_RESOURCE_CATALOG}"
SetOverwrite try
File /r "..\${RESOURCE_CATALOG}\${JDK_RESOURCE_CATALOG}\*.*"
SectionEnd ;将TOMCAT_RESOURCE_CATALOG下的所有文件资源拷贝至安装目录下
Section "TOMCAT_RESOURCE_COPY" SEC02
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}"
SetOverwrite try
File /r "..\${RESOURCE_CATALOG}\${TOMCAT_RESOURCE_CATALOG}\*.*"
SectionEnd ;将MYSQL_RESOURCE_CATALOG下的所有文件资源拷贝至安装目录下
Section "MYSQL_RESOURCE_COPY" SEC03
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${MYSQL_RESOURCE_CATALOG}"
SetOverwrite try
File /r "..\${RESOURCE_CATALOG}\${MYSQL_RESOURCE_CATALOG}\*.*" ;设置初始化SQL文件路径
WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "init-file" '"${MYSQL_HOME}\init.sql"'
WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "basedir" '"${MYSQL_HOME}"'
WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "datadir" '"$INSTDIR\${DATA_RESOURCE_CATALOG}\mysql"'
FlushINI "${MYSQL_HOME}\my.ini"
SectionEnd ;将DATA_RESOURCE_COPY下的所有文件资源拷贝至安装目录下
Section "DATA_RESOURCE_COPY" SEC04
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${DATA_RESOURCE_CATALOG}"
SetOverwrite try
File /r "..\${DATA_RESOURCE_CATALOG}\*.*"
SectionEnd ;将ICON_RESOURCE_COPY下的所有文件资源拷贝至安装目录下
Section "ICON_RESOURCE_COPY" SEC06
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${ICON_RESOURCE_CATALOG}"
SetOverwrite try
File /r "..\${RESOURCE_CATALOG}\${ICON_RESOURCE_CATALOG}\*.*"
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${URL}" "" "$INSTDIR\icon\ims.ico"
SectionEnd ;将APP_RESOURCE_COPY下的所有文件资源拷贝至安装目录下
Section "APP_RESOURCE_COPY" SEC07
sectionin 1
sectionin RO
SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\webapps"
SetOverwrite try
File /r "..\${APP_CATALOG}\*.*"
SectionEnd ;------------------------------环境变量注册及反注册------------------------------- ;注册环境变量
Section -EnvironmentVariables
;JDK安装根路径
Push JAVA_HOME
Push '${JAVA_HOME}'
Call WriteEnvStr
Push '${JAVA_HOME}\bin'
Call AddToPath ;TOMCAT安装根路径
Push CATALINA_HOME
Push '${CATALINA_HOME}'
Call WriteEnvStr
Push '${CATALINA_HOME}\bin'
Call AddToPath ;MySQL安装根路径
Push MYSQL_HOME
Push '${MYSQL_HOME}'
Call WriteEnvStr
Push '${MYSQL_HOME}\bin'
Call AddToPath
SectionEnd ;反注册环境变量
Function un.removeEnvPath
Push JAVA_HOME
Call un.DeleteEnvStr
Push '${JAVA_HOME}\bin'
Call un.RemoveFromPath Push CATALINA_HOME
Call un.DeleteEnvStr
Push '${CATALINA_HOME}\bin'
Call un.RemoveFromPath Push MYSQL_HOME
Call un.DeleteEnvStr
Push '${MYSQL_HOME}\bin'
Call un.RemoveFromPath
FunctionEnd ;------------------------------服务的安装/启动/停止/反安装------------------------------- ;安装并启动后台服务
Section -Service
Call InstallMySQLService
Call InstallTomcatService Call startMySQLService
Call startTomcatProcess
SectionEnd ;安装TOMCAT服务
Function InstallTomcatService
SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"
ExecCmd::exec /TIMEOUT=10000 "service.bat install"
FunctionEnd ;安装MYSQL服务
Function InstallMySQLService
ExecWait "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin\mysqld -install"
FunctionEnd ;启动TOMCAT进程
Function startTomcatProcess
SetOutPath "${CATALINA_HOME}\bin"
nsExec::Exec /TIMEOUT=120000 '"$SYSDIR\cscript.exe" "${CATALINA_HOME}\bin\runbat.vbs"'
FunctionEnd ;启动MySQL服务
Function startMySQLService
ExecCmd::exec /TIMEOUT=60000 "net start MySQL"
Sleep 1500
SetOutPath "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin"
Sleep 1500
ExecCmd::exec /TIMEOUT=60000 "mysql.exe -uroot -p123456 <ims.sql"
FunctionEnd ;停止TOMCAT服务
Function un.stopTomcatService
ExecCmd::exec /TIMEOUT=120000 "net stop Tomcat6"
FunctionEnd ;停止MySQL服务
Function un.stopMySQLService
ExecCmd::exec /TIMEOUT=20000 "net stop MySQL"
FunctionEnd ;删除TOMCAT服务
function un.removeTomcatService
SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"
ExecCmd::exec /TIMEOUT=120000 "service.bat remove"
functionend ;删除MySQL服务
function un.removeMySQLService
ExecWait "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin\mysqld -remove"
functionend ;------------------------------反安装------------------------------- Section Uninstall
ExecCmd::exec /TIMEOUT=120000 "taskkill /im tomcat6.exe /f" Call un.stopTomcatService
Call un.stopMySQLService Call un.removeTomcatService
Call un.removeMySQLService Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
RMDir "$SMPROGRAMS\${PRODUCT_NAME}" Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
RMDir /r "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegValue ${PRODUCT_AUTORUN_ROOT_KEY} "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}" Call un.removeEnvPath
SetAutoClose true
SectionEnd
四. 编译前准备
1. 新建resource、target、script三个文件夹
2. 将jdk1.6.0_21、tomcat6.0.33放置到resource文件夹下
3. 创建licence.txt文件,放置到resource文件夹下
4. 将ims1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi放置到script文件夹下
5. 在script下新建third文件夹,将AddPath.nsh、WriteEnvStr.nsh放置到该文件夹下
五. 编译nsi脚本
右键nsi脚本,选择Compile NSIS Script进行编译,最终在target目录下生成exe安装包。
nsis制作启动Tomcat服务的exe安装包教程的更多相关文章
- linux下启动tomcat服务
Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local ...
- 启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错
启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错解决办法:打开Tomcat安装后目录,进入conf文件夹,找到配置文件 ...
- linux下启动tomcat服务的命令是什么
Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/ ...
- NSIS打包electron程序为exe安装包
在我的上一篇博客已经介绍了将electron程序生成一个exe可执行文件,但是这并不是最终能够发给用户用来安装的最终安装包,下面我们就介绍如何使用NISI将我们的应用程序打包成安装包: 上一篇博客我们 ...
- NSIS打包(二)第一个安装包
基本介绍完之后,我们大概了解了NSIS中有哪些组件,现在我们通过一个简单的demo来学习如何使用这些组件. 1.环境配置 NSIS的环境非常简单,只有一个安装包,安装后即可使用. 官网:http:// ...
- Qt之程序发布以及打包成exe安装包
一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...
- Qt 程序发布以及打包成exe安装包
一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
随机推荐
- Struts 2.3.24源码解析+Struts2拦截参数,处理请求,返回到前台过程详析
Struts2官网:http://struts.apache.org/ 目前最新版本:Struts 2.3.24 Struts1已经完全被淘汰了,而Struts2是借鉴了webwork的设计理念而设计 ...
- 理解Ruby中的作用域
作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够, ...
- svn利用钩子实现代码同步到web目录
思路: 找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹.在该文件夹中添加一个post- commit文件:当有commit动作发 ...
- Rainyday.js – 使用 JavaScript 实现雨滴效果
Rainyday.js 背后的想法是创建一个 JavaScript 库,利用 HTML5 Canvas 渲染一个雨滴落在玻璃表面的动画.Rainyday.js 有功能可扩展的 API,例如碰撞检测和易 ...
- ShareDrop – 苹果 AirDrop 服务的 HTML5 实现
ShareDrop 是苹果 AirDrop 服务的 HTML5 版本,你可以直接在设备之间传输文件,而无需先上传到任何服务器.它使用 WebRTC 来实现安全的点对点文件传输.目前 ShareDrop ...
- 【移动适配】移动Web怎么做屏幕适配(一)
屏幕适配是一个很容易被忽略的问题,但对于精益求精的产品而言,是必不可少的.对于Web开发的求职者而言,也是一个必需要理解清楚的经典问题 首发于微信公众号(啃先生) 壹 | Fisrt 移动端适配的是 ...
- ReactNative ScrollView或ListView头部莫名其妙多了20px
之前在还没有加TabBarIOS时,ScrollView一直是好好的,然后随着深入,需要做其他tab页面的时候问题来了,当我把首页加入TabBarIOS.Item时..我首页中的ScrollView头 ...
- 使用Javascript来编写贪食蛇(零基础)
引用的东西都很基础,注释也很多,这里就不多说了. <head> <meta http-equiv="Content-Type" content="t ...
- 使用mac 终端利用alias设置快捷命令
在终端中输入快捷命令可以提高工作效率,同时可以少记很多命令 如何做: 首先在~/目录下编辑 .bash_profile这个隐藏文件,如果你想直接双击此文件打开编辑的话请在终端输入 Mac 显示隐藏文件 ...
- IOS 四舍五入 进一法 去尾法
float numberToRound; int result; numberToRound = 4.51; result = (int)roundf(numberToRound); NSLog(@& ...