在windows的环境上做一键部署启动java项目! 准备工作: 1、下载免安装的Mysql5.7、Tomcat6.0、JDK1.7 (根据电脑系统类型选择对应的位数,根据项目选择版本!大同小异) 2、下载Inno Setup打包工具(http://www.jrsoftware.org/isdl.php) 3、测试用的虚拟机,Windows Server 2012 R2系统 开始: 1、文件放置 建立一个文件夹,把解压文件全部放到该目录下: java JDK放到了tomcat里边(后来知道了,位置不重要,bat文件中管理好路径即可,不想改了。jdk下不到免安装版可以直接复制安装的) war包放到tomcat\webapps下(测试时建议先不要放,环境没问题了再放) 2、配置mysql mysql解压后建立my.ini文件和data文件夹(文件夹不要放东西,否则注册服务会有问题:initialize specified but the data directory has files in it. Aborting.idata目录下有文件了,所以格式化失败),放在mysql根目录下
[mysqld]
port=3306
basedir=C:\guncab\mysql-5.7.28-winx64
datadir=C:\guncab\mysql-5.7.28-winx64\data
max_connections=200
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8
在bin文件下建立mysql_init.bat文件。 mysql_init.bat内容如下: 首先是注册服务,然后启动服务,修改密码,创建数据库,导入文件。
cd /d %~dp0
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
echo -----mysql init succee-----
mysqld install mysql
echo -----mysql service install succee-----
net start mysql
pause;
"%cd%\mysqladmin" -u root password 123456
echo 修改密码完毕
cd ..
"%cd%\bin\mysql.exe" -uroot -p123456 < "%cd%\changePsd.sql"
"%cd%\bin\mysql.exe" -uroot -p123456 < "%cd%\create.sql"
"%cd%\bin\mysql.exe" -uroot -p123456 guncab< "%cd%\guncab.sql"
echo 创建数据库完成,建表完毕
exit
changePsd.sql,create.sql,guncab.sql(项目数据库文件)位置如下:
changePsd.sql内容如下:
use mysql;
select 'host' from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
select 'host' from user where user='root';
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
create.sql内容如下:创建guncab数据库。
CREATE DATABASE guncab;
“%cd%\bin\mysql.exe” -uroot -p123456 guncab< “%cd%\guncab.sql” 数据库的名称,根据自己数据库的名称进行修改。
3、配置JDK环境变量 在tomcat根目录下,建立set_env.bat文件,目的是配置java环境变量。 set_env.bat文件内容:
@echo off
echo
cd ..
echo "%~dp0"
echo "%cd%"
set jdkpath=%cd%\apache-tomcat-6.0.53\bin\java\jdk1.7.0_80
echo %jdkpath%
setx JAVA_HOME "%jdkpath%" -m
setx CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
echo %Path%
echo %Path%|find /i "%java_home%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
setx Path "%%JAVA_HOME%%\bin;%Path%"
)
exit
4.配置Tomcat tomcat/bin目录下建立tomcat_start.bat文件。 tomcat_start.bat文件内容:
echo -------tomcat begin--------
call "%~dp0%service.bat" install tomcat6
echo -------tomcat install end------------------
sc config tomcat6 start= auto
net start tomcat6
rem 下面两句是设置到服务里自动启动的
wmic service where name="tomcat6" changestartmode "automatic"
wmic service where name="tomcat6" startservice
exit
在这里有一个坑,先写一下,如果不修改service.bat,最后打包成的exe文件安装后,net start tomcat6 这部启动不起来,查找了好多资料,个人认为其实就是java环境配置了但未生效导致,所以要在service.bat中@echo off后添加下边代码。
setlocal
rem 添加java路径,第一次启动服务就可以了
set LOCA_LHOME=%~dp0
set JAVA_HOME=%LOCA_LHOME%java\jdk1.7.0_80
set JRE_HOME=%LOCA_LHOME%java\jdk1.7.0_80\jre
5.配置Inno setup
Inno setup软件具体使用,自行琢磨。准备一个guncab.ico文件,作为生成exe的图标。[Run]下边的按顺序执行,我的配置:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
; 基本配置
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
; 单独标识,可以通过 工具自动生成 点击工具--- 生成GUID
AppId={{CA54341C-6F6A-4C4F-BB9B-EFA6C8786387}}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; 默认安装路径
DefaultDirName=C:\guncab
DefaultGroupName={#MyAppName}
; 软件名称
OutputBaseFilename=guncab
; 软件图标
SetupIconFile=C:\guncab\guncab.ico
; 压缩方式
Compression=lzma
; yes 可以使文件更小
SolidCompression=yes
; 必需有管理员权限才能安装
PrivilegesRequired=admin
; 安装密码
;Password=itdragon
; 开启加密,可能还需要一个dll文件
;Encryption=yes
; 语言配置
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
; 安装文件
[Files]
; 安装部署的源文件路径(一种全部,一种分开)
; Source: "C:\guncab\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
;拷贝tomcat
Source:"C:\guncab\apache-tomcat-6.0.53\*";DestDir:"{app}\apache-tomcat-6.0.53";Flags:igNoreversion recursesubdirs createallsubdirs
;拷贝mysql
Source:"C:\guncab\mysql-5.7.28-winx64\*";DestDir:"{app}\mysql-5.7.28-winx64";Flags:igNoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
; 快捷键
[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\系统名称"; Filename: http://localhost:8080/guncab/
;Name: "{commondesktop}\启动服务"; Filename: "{app}\apache-tomcat-6.0.53\bin\startup.bat"
[INI]
;修改数据库配置文件
Filename:"{app}\mysql-5.7.28-winx64\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\mysql-5.7.28-winx64"
Filename:"{app}\mysql-5.7.28-winx64\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\mysql-5.7.28-winx64\data"
Filename:"{app}\mysql-5.7.28-winx64\my.ini";Section:"mysqld";Key:"port"; String:"3306"
Filename:"{app}\mysql-5.7.28-winx64\my.ini";Section:"client";Key:"port"; String:"3306"
; 程序安装成功后执行以下服务脚本
[Run]
Filename: "{app}\apache-tomcat-6.0.53\set_env.bat";
Filename: "{app}\mysql-5.7.28-winx64\bin\mysql_init.bat";
Filename: "{app}\apache-tomcat-6.0.53\bin\tomcat_start.bat";
; 指定在卸载第一步要执行以下服务脚本
[UninstallRun]
Filename: "{app}\mysql-5.7.28-winx64\bin\mysql_delete.bat";
[UninstallDelete]
Type:filesandordirs;Name:"{app}\apache-tomcat-6.0.53"
Type:filesandordirs;Name:"{app}\mysql-5.7.28-winx64"
修改好guncab.iss文件,执行编译,没问题后就会输出Output文件夹,内含exe文件。 此处再说一下,[UninstallRun],建立mysql_delete.bat文件,卸载软件会执行此文件。 mysql_delete.bat放在mysql-5.7.28-winx64\bin目录下,内容如下,
@echo off
title 软件正在卸载中,请不要关闭
color 0a
echo 停止并删除应用服务
net stop Tomcat6
sc delete Tomcat6
echo 停止并删除数据库
net stop MySQL
sc delete MySQL
echo 删除环境变量
wmic ENVIRONMENT where "name='CLASSPATH'" delete
wmic ENVIRONMENT where "name='JAVA_HOME'" delete
echo 删除完成
另外:新安装系统可能会缺少文件,vc++环境,建议先用DirectXRepair修复一下。
|