nsis脚本: Tomcat JDK MYSQL

本文介绍了一个用于安装Java项目的NSIS安装脚本示例。该脚本定义了项目的基本信息,如名称、版本等,并详细展示了如何通过NSIS创建安装程序来安装Java应用及其相关组件,包括设置环境变量和服务安装。
; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Java项目"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "Vimesly"
!define PRODUCT_WEB_SITE "http://localhost:50081"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\appletviewer.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; 定义系统环境变量的 注册表key值
!define WriteEnvStr_RegKey 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_WELCOMEFINISHPAGE_BITMAP "D:\360Downloads\aa.bmp"
!define MUI_ICON "D:\360Downloads\安装.ico"
!define MUI_UNICON "D:\360Downloads\卸载.ico"
!define MUI_WELCOMEPAGE_TITLE "\r\n 测试项目 1.0 测试版"
!define MUI_WELCOMEPAGE_TEXT " 测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息测试信息。 \r\n\r\n 软件制作:安会锋(Vimesly) \r\n\r\n $_CLICK"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "D:\360Downloads\ceshi\doc\协议.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "SimpChinese"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\Java-web"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
BrandingText "软件制作:安会锋(vimesly)"

Section "MainSection" SEC01
SetOutPath "$INSTDIR\doc"
SetOverwrite try
File "D:\360Downloads\ceshi\doc\协议.txt"
CreateDirectory "$SMPROGRAMS\Java项目"
CreateShortCut "$SMPROGRAMS\Java项目\Java项目.lnk" "$INSTDIR\doc\协议.txt"
CreateShortCut "$DESKTOP\Java项目.lnk" "$INSTDIR\doc\协议.txt"
SetOutPath "$INSTDIR\jdk1.6\bin"
File "D:\360Downloads\ceshi\jdk1.6\bin\appletviewer.exe"
....... File "D:\360Downloads\ceshi\tomcat\work\Catalina\localhost\_\SESSIONS.ser"
SectionEnd

Section -AdditionalIcons
SetOutPath $INSTDIR
#安装服务
call regExpandStr
call installService
call startService
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\Java项目\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\Java项目\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\jdk1.6\bin\appletviewer.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\jdk1.6\bin\appletviewer.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 "regExpandStr"
SetOverwrite ifnewer
;设置jdk环境变量
WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" "$INSTDIR\jdk1.6"
;设置catalina_home
WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_HOME" "$INSTDIR\tomcat"
#第一次是使环境变量修改对其他进程有效;刷新环境变量
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
SetOverwrite on
functionend

;注册服务
Function "installService"
detailprint "install mysql Service..."
Sleep 2000
SetOutPath "$INSTDIR\tomcat\bin"
nsExec::Exec 'cmd /c service install tomcat6'
nsExec::Exec 'cmd /c sc config tomcat6 start= auto'
detailprint "install tomcat Service success..."
Sleep 2000
SetOutPath "$INSTDIR\mysql\bin"
nsExec::Exec 'cmd /c mysqld3306 install MySQL5.1'
detailprint "install mysql Service success..."
detailprint "install tomcat Service..."
functionend

; 启动服务
Function "startService"
detailprint "start tomcat..."
nsExec::Exec 'cmd /c sc start tomcat6'
detailprint "start tomcat success..."
detailprint "start mysql..."
nsExec::Exec 'cmd /c sc start MySQL5.1'
detailprint "start MySQL5.1 success..."
functionend

;停止服务
Function "un.stopService"
detailprint "正在停止tomcat服务......."
nsExec::Exec 'cmd /c sc stop tomcat6'
detailprint "停止tomcat服务成功......."
detailprint "正在停止mysql服务......."
nsExec::Exec 'cmd /c sc stop MySQL5.1'
detailprint "停止mysql服务成功......."
functionend

;删除服务
Function "un.uninstService"
detailprint "正在卸载tomcat服务......."
nsExec::Exec 'cmd /c sc delete tomcat6'
detailprint "卸载tomcat服务成功......."
detailprint "正在卸载mysql服务......."
nsExec::Exec 'cmd /c sc delete MySQL5.1'
detailprint "卸载mysql服务成功......."
functionend

;清空环境变量
Function "un.emptyRegExpandStr"
#删除 系统环境变量JAVA_HOME 和 CATALINA_HOME
#卸载的时候必须设置JAVA_HOME 和 CATALINA_HOME两个环境系统变量为空,或者删除这两个系统变量。否则会出现NSIS选择系统变量的错误(NSIS会自动选择之前有值的系统变量,而不是选择当前刚设置的系统变量)
detailprint "正在删除相关环境变量......."
WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" ""
sleep 1000
;设置TOMCAT环境变量CATALINA_HOME
WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_HOME" ""
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 Uninstall
#开始停止/卸载服务
call un.stopService
call un.uninstService
call un.emptyRegExpandStr
#删除所有安装目录文件
detailprint "正在删除安装目录......."
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\tomcat\work\Catalina\localhost\_\SESSIONS.ser"
......
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
一.环境变量配置 ; 定义系统环境变量的 注册表key值 !define WriteEnvStr_RegKey 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' ;设置环境变量 Function "regExpandStr" SetOverwrite ifnewer ;设置jdk环境变量 WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" "$INSTDIR\jdk1.8.0_131" ;设置CATALINA_DIR WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_DIR" "$INSTDIR\tomcat\bin" ;设置CATA_LINA WriteRegExpandStr ${WriteEnvStr_RegKey} "CATA_LINA" "$INSTDIR\tomcat" ;设置path ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;C:\windows\system32;$INSTDIR\redis;$INSTDIR\mysql\bin;$INSTDIR\Java\jdk1.8.0_131\bin;" #第一次是使环境变量修改对其他进程有效;刷新环境变量 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 SetOverwrite on functionend ;注册服务 Function "installService" detailprint "------------------------------------install tomcat Service..." Sleep 2000 SetOutPath "$INSTDIR\tomcat\bin" nsExec::Exec 'cmd /c service install' nsExec::Exec 'cmd /c sc config tomcat8 start= auto' ;设置服务自动开启 detailprint "------------------------------------install tomcat Service success..." detailprint "install mysql Service..." Sleep 2000 SetOutPath "$INSTDIR\mysql\bin" nsExec::Exec 'cmd /c $INSTDIR\mysql\bin\mysqld.exe" -install Mysql --defaults-file="$INSTDIR\\mysql\\my.ini' detailprint "install mysql Service success..." detailprint "------------------------------------install redis Service..." Sleep 2000 SetOutPath "$INSTDIR\redis" nsExec::Exec 'cmd /c redis-server --service-install redis.windows.conf' detailprint "install redis Service success..." functionend ; 启动服务 Function "startService" detailprint "------------------------------------start tomcat..." nsExec::Exec 'cmd /c sc start Tomcat8' detailprint "------------------------------------start tomcat success..." detailprint "------------------------------------start mysql..." nsExec::Exec 'cmd /c sc start mysql' detailprint "------------------------------------start MySQL success..." detailprint "------------------------------------start redis..." ;nsExec::Exec 'cmd /c sc redis-server --service-start --service-name redis' detailprint "------------------------------------start redis success..." functionend ;停止服务 Function "un.stopService" detailprint "正在停止tomcat服务......." nsExec::Exec 'cmd /c sc stop tomcat8' detailprint "停止tomcat服务成功......." detailprint "正在停止mysql服务......." nsExec::Exec 'cmd /c sc stop mysql' detailprint "停止mysql服务成功......." detailprint "正在停止redis服务......." nsExec::Exec 'cmd /c sc redis-server --service-stop --service-name redis' detailprint "停止redis服务成功......." functionend ;删除服务 Function "un.uninstService" detailprint "正在卸载tomcat服务......." nsExec::Exec 'cmd /c sc delete tomcat8' detailprint "卸载tomcat服务成功......." detailprint "正在卸载mysql服务......." nsExec::Exec 'cmd /c sc delete mysql' detailprint "卸载mysql服务成功......." detailprint "正在卸载redis服务......." nsExec::Exec 'cmd /c sc delete redis' detailprint "卸载redis服务成功......." functionend ;清空环境变量 Function "un.emptyRegExpandStr" #删除 系统环境变量JAVA_HOME 和 CATALINA_HOME #卸载的时候必须设置JAVA_HOME 和 CATALINA_HOME两个环境系统变量为空,或者删除这两个系统变量。否则会出现NSIS选择系统变量的错误(NSIS会自动选择之前有值的系统变量,而不是选择当前刚设置的系统变量) detailprint "正在删除相关环境变量......." functionend 二.校验mac地址 #序列号 校验页面 Page custom check_serial_number Var "MacAddress" Function check_serial_number Call .GetMacAddress #MessageBox MB_OK '当前机器Mac地址为:$MacAddress' ${if} $MacAddress == '00-50-56-C0-00-08' ${OrIf} $MacAddress == '00-50-56-C0-00-081' #MessageBox MB_OK '已授权' ${Else} MessageBox MB_OK '未授权,请联系经销商并授权!' ;SendMessage $HWNDPARENT 0x408 3 0 #页面跳转 Call onClickClose ${EndIf} FunctionEnd #获取主机MAC地址 Function .GetMacAddress System::Call Iphlpapi::GetAdaptersInfo(i,*i.r0) System::Alloc $0 Pop $1 System::Call Iphlpapi::GetAdaptersInfo(ir1r2,*ir0)i.r0 StrCmp $0 0 0 finish loop: StrCmp $2 0 finish System::Call '*$2(i.r2,i,&t260;.s,&t132;.s,i.r5)i.r0' ;Unicode版将t改为m IntOp $3 403 + $5 StrCpy $6 "" ${For} $4 404 $3 IntOp $7 $0 + $4 System::Call '*$7(&i1;.r7)' IntFmt $7 "X" $7 StrCpy $6 "$6$7" StrCmp $4 $3 +2 StrCpy $6 "$6-" ${Next} StrCpy $MacAddress $6 Goto loop finish: System::Free $1 FunctionEnd 三.关闭按钮功能 ;点击右上角关闭按钮 Function onClickClose FindProcDLL::FindProc "${PRODUCT_NAME}.exe" Sleep 500 Pop $R0 ${If} $R0 != 0 KillProcDLL::KillProc "${PRODUCT_NAME}.exe" ${EndIf} FunctionEnd
JTM 说明文档 ---------------------------------------------------------------------------------- http://www.shopxx.net ---------------------------------------------------------------------------------- 一、什么是JTM JTM是Win32下绿色免费的JDK + Tomcat + MySQL环境集成工具。通过JTM用户无需对JDKTomcatMySQL进行任何安装和配置即可迅速搭建支持JSP + MySQL的服务器运行环境。 二、系统需求及集成软件 1. 系统需求: 内存: 256MB 可用空间: 至少 200MB 可用剩余空间 操作系统: Windows 2000/XP/2003/Vista/7 2. 集成软件: JDK 1.6 Tomcat 6.0 MySQL 5.1 三、安装使用 1. 下载JTM ( http://www.shopxx.net ) 2. 下载后将软件解压至任意位置( 安装路径只允许包含数字、字母、空格、\、/、:、.、- ) 3. 运行 "JTM.bat" 根据提示进行相关操作 四、程序说明 Tomcat默认端口:8080 MySQL默认端口:3306 MySQL默认用户名:root MySQL默认密码:root 目录结构 X:\安装路径 | +---JTM.bat (系统控制台) | +---jdk (JDK 程序目录) | +---tomcat (Tomcat 程序目录) | | | +---webapps (站点目录) | | | +---conf (Tomcat 配置目录) | +---mysql (MySQL 程序目录) | +---my.ini (MySQL 配置文件) | +---data (MySQL 数据库目录) 五、许可协议 1、您可以完全免费的使用JTM. 2、JTM是一个集成工具,其中各组件的许可协议是独立分开的. 3、您在使用JTM过程中必须保留JTM名称、网址、版权等信息. 六、常见问题 1、运行程序提示 "JTM安装路径包含特殊字符" 怎么办? 修改程序安装路径,并确保路径只包含数字、字母、空格、\、/、:、.、-. 2、Tomcat端口被占用Tomcat无法正常启动,如何处理? 运行 "JTM.bat" 根据提示修改Tomcat端口. 3、MySQL端口被占用MySQL无法正常启动,如何处理? 运行 "JTM.bat" 根据提示修改MySQL端口. 4、MySQL root密码忘记了,怎么办? 运行 "JTM.bat" 根据提示修改MySQL root密码. 5、如何在Windows Vista下使用JTM? Windows Vista的UAC可能会阻止服务用普通用户身份启动,请右键点击 "JTM.bat",选择 "属性" 在选项卡 "兼容性" 里,勾选 "请以管理员身份运行该程序". 6、如何在Windows 7下使用JTM? Windows 7的UAC可能会阻止服务用普通用户身份启动,请右键点击 "JTM.bat",选择 "以管理员身份运行".
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值