Inno Setup
InnoSetup 是一个免费的 Windows 安装程序制作软件
下载地址:官网地址
#define MyAppName "自定义程序名称"
#define MyAppVersion "V1.0"
#define MyAppPublisher "自定义程序出版商"
#define MyAppURL "http://www.xxxx.com/"
; 基本配置
[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.)
; 单独标识,可以通过innosetup-QSP-5.6.1.exe 工具自动生成
AppId={{0167D65D-549A-4BA3-B88A-4814EC5A1D35}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; 默认安装路径
DefaultDirName=C:\MyService\
DefaultGroupName={#MyAppName}
; 软件名称
OutputBaseFilename=MyAPPService
; 软件图标
SetupIconFile=C:\Springboot\logo.ico
; 压缩方式
Compression=lzma
; yes 可以使文件更小
SolidCompression=yes
; 必需有管理员权限才能安装
PrivilegesRequired=admin
; 安装密码
;Password=itdragon
; 开启加密,可能还需要一个dll文件
;Encryption=yes
; 语言配置
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
; 安装文件
[Files]
; 安装部署的源文件路径
Source: "C:\Springboot\*"; DestDir: "{app}"; 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}\快捷HTTP地址"; Filename: http://localhost:8080
;Name: "{commondesktop}\Mysql数据初始化脚本"; Filename: "{app}\mysql\init-data.bat"
Name: "{commondesktop}\安装须知"; Filename: "{app}\安装须知.doc"
; 程序安装成功后执行脚本
[Run]
Filename: "{app}\init-jdk.bat";
Filename: "{app}\init-vcredist-x86.bat";
Filename: "{app}\mysql-5.7.28-win32\bin\init-mysql.bat";
Filename: "{app}\myService\init-myProject.bat ";
Filename: "{app}\dll-file\dll-move.bat";
点击Inno Setup上的compile按钮开始编译,编译成功后会在一个Output目录夹生成exe文件,这个Output目录一般和iss文件在同一层。
JDK安装部署
@echo off
cls
echo.
set myjavapath=%cd%\ConfigFiles\Java\jdk1.8.0_131
IF EXIST "%myjavapath%"\bin\java.exe (
echo.
echo 发现已经安装java程序,注册环境变量请按任意键
echo.
echo.
goto SETENV
)
echo.
echo 正在安装jdk,请不要执行其他操作
echo.
echo 请稍等,这个时间大约需要二、三分钟
echo.
start /WAIT %cd%\jdk-8u131-windows-i586.exe /qn INSTALLDIR="%cd%\ConfigFiles\Java\jdk1.8.0_131"
echo 程序安装完毕,正在注册环境变量
echo.
goto SETENV
:SETENV
echo
::如果有的话,先删除ClASS_PATH
wmic ENVIRONMENT where "name='CLASS_PATH'" delete
::创建JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%myjavapath%"
::创建CLASS_PATH
wmic ENVIRONMENT create name="CLASS_PATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;"
::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串
call set xx=%Path%;%%%%JAVA_HOME%%%%\jre\bin;%%%%JAVA_HOME%%%%\bin
::echo %xx%
::将返回显的字符重新赋值到path中
wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%xx%"
echo.
echo JDK环境变量设置成功
echo.
echo.
:END
exit
将init-jdk.bat与jdk的安装包放在同级目录下
MySQL安装部署
cd /d %~dp0
cd ..
del /F %cd%\my.ini
echo 删除完成
echo [mysql]>> my.ini
echo default-character-set=utf8>> my.ini
echo [mysqld]>> my.ini
echo port = 3306>> my.ini
echo basedir=%cd%>> my.ini
echo datadir=%cd%\data>> my.ini
echo max_connections=200>> my.ini
echo character-set-server=utf8>> my.ini
echo default-storage-engine=INNODB>> my.ini
echo wait_timeout=2147483>> my.ini
echo interactive_timeout=2147483>> my.ini
echo my.ini生成成功
set inipath=%cd%\my.ini
cd bin
"%cd%\mysqld.exe" -install mysql --defaults-file="%inipath%"
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
net start mysql
sc config mysql start=auto
net stop mysql
net start mysql
echo 安装完毕
"%cd%\mysqladmin.exe" -u root password root
echo 修改密码完毕
cd ..
"%cd%\bin\mysql.exe" -uroot -proot < "%cd%\initsql\myInitSql.sql"
echo 数据库初始化完成
exit;
init-mysql.bat放到压缩版的mysql的bin目录下,myInitSql.sql数据库初始化SQL。我直接使用的Navicat导出的SQL。
create database IF NOT EXISTS myDatabase character set utf8;
set global character_set_database=utf8;
set global character_set_server=utf8;
USE myDatabase ;
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `t_handwriting_image`
-- ----------------------------
DROP TABLE IF EXISTS `t_handwriting_image`;
CREATE TABLE `t_handwriting_image` (
`image_number` int(30) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(30) DEFAULT NULL,
`id_number` varchar(20) DEFAULT NULL,
`image_type` int(10) DEFAULT NULL,
`image_dimension` varchar(10) DEFAULT NULL,
`image_digits` int(20) DEFAULT NULL,
`image_status` int(10) DEFAULT NULL,
`image` mediumblob,
`department_id` int(30) DEFAULT NULL,
`creat_timestamp` datetime DEFAULT NULL,
PRIMARY KEY (`image_number`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_handwriting_image
-- ----------------------------
winsw使用
用途:使用Spring Boot开发的Web项目,打包生成了一个jar包,部署在Windows服务器中,设置为开机启动
下载地址:GitHub
我使用的是winsw-v2.2.0,将Git Hub中下载的WinSW.NET4.exe和sample-minimal.xml文件及springboot项目的jar包放在同一个文件夹中
将winsw执行程序跟xml改成同样的名字
编辑myProjectService.xml文件
<configuration>
<!--安装成Windows服务后的服务名-->
<id>myProjectServiceID</id>
<!--显示的服务名称-->
<name>myProjectServiceName</name>
<!--对服务的描述-->
<description>此处可填写该服务的描述</description>
<!--这里写java的路径,如何配置了环境变量直接写"java"就行-->
<executable>java</executable>
<!--Xmx256m 代表堆内存最大值为256MB -jar后面的是项目名-->
<arguments>-Xmx256m -jar myProject.jar</arguments>
<!--日志模式-->
<logmode>rotate</logmode>
</configuration>
部署
将init-myProject.bat 放到 myProjectService.exe 同级目录下
echo -------myProjectService begin--------
"%cd%\myProjectService.xml.exe" install myProjectService
echo -------myProjectService install end------------------
sc config myProjectService start= auto
net start myProjectService
exit
至此大功告成。
在VM虚拟机上部署遇到的坑
安装mysql时缺少.NET Framework组件,init-vcredist-x86.bat将.NET Framework组件静默安装
start /wait %cd%\vcredist_x86.exe /q /norestart
exit
如果缺少其它的.NET Framework组件,同理。
参考文章:
https://blog.csdn.net/qq_19558705/article/details/80968807
https://www.jianshu.com/p/af90db4b54e3