使用Inno Setup软件制作PostgreSQL+MongoDB+Tomcat+Java环境Windows一键安装包

本文主要是介绍使用Inno Setup软件制作PostgreSQL+MongoDB+Tomcat+Java环境Windows一键安装包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于经常开发Java Web项目的童鞋来说,在进入到企业工作后,或多或少的会遇到需要制作可以一键安装的当前代码/服务的软件包,即exe格式的Windows软件安装包,可以通过向导式的部署进行快速的在Windows环境上进行部署。

这里以PostgreSQL+MongoDB+Tomcat+Java环境为例,进行Inno Setup脚本的编写与打包一些思路。

准备很重要,这里准备好如下的介质:

增强版的Inno Setup5.5

免安装版的Windows格式的PostgreSQL11.4,需要一些.NET环境依赖

免安装版的Windows格式的MongoDB3.2

免安装版的Windows格式的JDK1.7

免安装版的Windows格式的Tomcat7

和一些其他相关的脚本文件和图标,如下所示:

在打包前建议应该初始化好相关的配置数据。本文的打包总体思路为:先初始化好一些数据,然后编写Inno Setup脚本、Bat安装脚本、Bat启动与停止脚本。

 一、相关服务初始化

1、初始化PostgreSQL

由于默认情况PG数据库会多创建一个账户,所以建议在打包前提前初始化好相关的PG数据库,使用类似如下命令先初始化:

当前目录\pgsql\bin\initdb.exe -U postgres -W --locale=C -E UTF8 -D 当前目录\pgsql\data

这样在当前目录下的PG数据库下会产生一个初始的数据目录,如果有一些需要创建的系统库和脚本,建议在打包前完成导入。

2、初始化MongoDB

对于MongoDB也是类似,建议打包前初始化相关的数据目录,类似如下的命令:

当前目录\mongodb\bin\mongod.exe --dbpath "当前目录\mongodb\data\db"

3、初始化Tomcat

对于Tomcat建议修改server.xml中的相关默认端口与一些设置,如果要以服务方式运行,需要修改bin目录下的service.bat文件中的相关服务显示名称与一些JVM的参数设置(文件下方),类似如下:

"%EXECUTABLE%" //IS//%SERVICE_NAME% ^--Description "系统Web服务信息" ^--DisplayName "%DISPLAYNAME%" ^--Install "%EXECUTABLE%" ^--LogPath "%CATALINA_BASE%\logs" ^--StdOutput auto ^--StdError auto ^--Classpath "%CLASSPATH%" ^--Jvm "%JVM%" ^--StartMode jvm ^--StopMode jvm ^--StartPath "%CATALINA_HOME%" ^--StopPath "%CATALINA_HOME%" ^--StartClass org.apache.catalina.startup.Bootstrap ^--StopClass org.apache.catalina.startup.Bootstrap ^--StartParams start ^--StopParams stop ^--JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-D%ENDORSED_PROP%=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;-Dfile.encoding=utf-8;-Xms2048m;-Xmx8048m;-XX:PermSize=256M;-XX:MaxPermSize=512m;-XX:+DisableExplicitGC;-XX:MaxTenuringThreshold=15;-XX:+UseConcMarkSweepGC;-XX:+CMSParallelRemarkEnabled;-XX:+UseCMSCompactAtFullCollection;-XX:CMSMaxAbortablePrecleanTime=500;-XX:LargePageSizeInBytes=128m;-XX:+UseFastAccessorMethods;-XX:+UseCMSInitiatingOccupancyOnly;-XX:CMSInitiatingOccupancyFraction=50;-Dcom.sun.management.jmxremote.port=9909;-Dcom.sun.management.jmxremote.ssl=false;-Dcom.sun.management.jmxremote.authenticate=false;" ^--JvmOptions9 "--add-opens=java.base/java.lang=ALL-UNNAMED#--add-opens=java.base/java.io=ALL-UNNAMED#--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" ^--JvmMs 2048 ^--JvmMx 8048

二、ISS脚本主要内容

对于打包来说,主要编写的就是ISS脚本,去指定一些安装包的内部信息。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "Java Web管理系统(单机版)"
#define MyAppVersion "V1.0(20190918)"
#define MyAppPublisher "XX有限公司"
#define MyAppURL "http://www.baidu.com"
#define MyAppExeName "install.bat"[Setup]
WizardImageFile=first.bmp
; 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.)
AppID={{AF4FC710-848A-4030-B00B-B85440001A30}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
VersionInfoCopyright=Copyright(c) 2019
DefaultDirName=c:\system
;默认开始菜单名 开始菜单中创建文件夹的名称
DefaultGroupName=Java Web管理系统(单机版)
DisableProgramGroupPage=yes
; 设置安装协议文件 安装前文件 安装后文件
LicenseFile=C:\soft20190911\license.txt
InfoBeforeFile=C:\soft20190911\before.txtOutputDir=C:\soft_output
OutputBaseFilename=setup0911
SetupIconFile=C:\soft20190911\pbocc.ico
UninstallDisplayIcon=C:\soft20190911\pbocc.ico
Compression=lzma2/Max
SolidCompression=true
VersionInfoProductName=Java Web管理系统(单机版)
VersionInfoProductVersion=0.0.1
VersionInfoVersion=0.0.0.1
; 以管理员模式运行
PrivilegesRequired=admin
; 安装程序安装密码 是否加密
Password=123456
Encryption=yes[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Languages\ChineseSimp.isl"[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone[Files]
Source: "C:\soft20190911\start.bat"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\soft20190911\*"; 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}";IconFileName: "{app}\install.ico"
Name: "{group}\停止系统"; Filename: "{app}\stop.bat";IconFileName: "{app}\stop.ico"
Name: "{group}\启动系统"; Filename: "{app}\start.bat";IconFileName: "{app}\start.ico"
;Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\start.bat"
; 桌面快捷
Name: "{commondesktop}\启动系统"; Filename: "{app}\start.bat"; Tasks: desktopicon;IconFileName: "{app}\start.ico"
Name: "{commondesktop}\访问系统"; Filename: "{app}\systempage"; Tasks: desktopicon;IconFileName: "{app}\pbocc.ico"
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "初始化当前系统环境"; Flags: shellexec postinstall skipifsilent
; Filename: "http://localhost:9190/soft"; Description: "自动访问服务http://localhost:9190/soft"; Flags: postinstall shellexec skipifsilent;
[UninstallRun]
Filename:"{app}\uninstall.bat";
[UninstallDelete]
Type:filesandordirs;Name:"{app}\pgsql" 
Type:filesandordirs;Name:"{app}\tomcat"
Type:filesandordirs;Name:"{app}\jdk1.7"
Type:filesandordirs;Name:"{app}\vcredist_x64.exe"
Type:filesandordirs;Name:"{app}\mongodb"
Type:filesandordirs;Name:"{app}\*"
Type:files;Name:"{app}\InstallUtil.InstallLog"[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010F300000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E74486569676874034C010B436C69656E74576964746803F1010D4578706C6963697457696474680301020E4578706C696369744865696768740372010D506978656C73506572496E636802600A54657874486569676874020C00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D655061676500F10C544269746D6170496D6167651157697A6172644269746D6170496D6167650A4269746D617046696C65060966697273742E626D700000000000[Code]
{ RedesignWizardFormBegin } // 不要删除这一行代码。
// 不要修改这一段代码,它是自动生成的。
procedure RedesignWizardForm;
begin
{ ReservationBegin }// 这一部分是提供给你的,你可以在这里输入一些补充代码。{ ReservationEnd }
end;
// 不要修改这一段代码,它是自动生成的。
{ RedesignWizardFormEnd } // 不要删除这一行代码。procedure InitializeWizard();
beginRedesignWizardForm;
end;

三、安装、卸载、启动、停止相关脚本

1、安装脚本install.bat,只负责安装

@echo offtitle 软件配置安装中,请不要手动关闭
color 0aecho =====================================================================
echo                   初始化Java Web管理系统     
echo =====================================================================cd /d %~dp0 echo 后台开始安装.Net环境,请稍后。。。
start /wait %cd%\vcredist_x64.exe /install /quiet
start /wait %cd%\vc_redist.x64 /install /quietecho .Net环境成功echo 准备初始化系统数据服务
"%cd%\pgsql\bin\pg_ctl.exe" register -N softpostgresql -D "%cd%\pgsql\data"
sc config softpostgresql start= demand
rem net start softpostgresql
echo ======================初始化系统数据服务完成========================= echo 准备初始化配置数据服务
cd .> %cd%\mongodb\mongo.conf
echo port=29031 >>  %cd%\mongodb\mongo.conf
echo dbpath=%cd%\mongodb\data >>  %cd%\mongodb\mongo.conf
echo logpath=%cd%\mongodb\logs\mongo.log >>   %cd%\mongodb\mongo.conf           
echo logappend=true >>  %cd%\mongodb\mongo.conf
echo auth=true >>  %cd%\mongodb\mongo.confsc create softmongodb binpath=  "%cd%\mongodb\bin\mongod.exe --config  %cd%\mongodb\mongo.conf  --service"
echo ======================初始化配置数据服务完成=========================echo 准备初始化系统Web服务
set JAVA_HOME=%~dp0%jdk1.7
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
set PATH=%JAVA_HOME%\bin;%PATH%;
set POSTGRES_HOME=%~dp0%pgsql
set CATALINA_HOME=%~dp0%tomcat
set CATALINA_BASE=%~dp0%tomcatcall "%~dp0%tomcat\bin\service.bat" install softtomcat7
sc config softtomcat7 start= demand
echo ======================初始化系统Web服务完成=========================echo Java Web系统安装完成,祝使用愉快~
paus

2、卸载uninstall.bat脚本

@echo off 
title 系统正在卸载中,请不要关闭 
color 0a
echo =====================================================================
echo                   开始卸载Java Web管理系统     
echo =====================================================================echo %~dp0%jdk1.7set JAVA_HOME=%~dp0%jdk1.7
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
set PATH=%JAVA_HOME%\bin;%PATH%;
set POSTGRES_HOME=%~dp0%pgsql
set CATALINA_HOME=%~dp0%mydctomcat
set CATALINA_BASE=%~dp0%mydctomcatecho 停止并删除系统Web服务
for /f "skip=3 tokens=4" %%i in ('sc query softmongodb') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softmongodbif "%errorlevel%"=="0" (echo 配置数据信息服务已关闭)else (echo 配置数据信息服务停止失败)
) else (echo 配置数据信息服务当前未启动
)
cd /d %~dp0
call "%cd%\tomcat\bin\service.bat" remove softtomcat7echo 停止并删除系统数据服务
for /f "skip=3 tokens=4" %%i in ('sc query softpostgresql') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softpostgresqlif "%errorlevel%"=="0" (echo 系统数据信息服务已关闭)else (echo 系统数据信息服务停止失败)
) else (echo 系统数据信息服务当前未启动
)
sc delete softpostgresqlecho 停止并删除系统配置数据服务
for /f "skip=3 tokens=4" %%i in ('sc query softmongodb') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softmongodbif "%errorlevel%"=="0" (echo 配置数据信息服务已关闭)else (echo 配置数据信息服务停止失败)
) else (echo 配置数据信息服务当前未启动
)
sc delete softmongodbtitle 系统卸载处理完成
echo 卸载完成。。。。

3、启动start.bat脚本

@echo off
title 系统正在启动中。。。
color 0a
set JAVA_HOME=%~dp0%jdk1.7
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
set PATH=%PATH%;%JAVA_HOME%\bin;
set POSTGRES_HOME=%~dp0%pgsql
set CATALINA_HOME=%~dp0%tomcat 
echo =====================================================================
echo                   开始启动Java Web管理系统     
echo =====================================================================for /f "skip=3 tokens=4" %%i in ('sc query softmongodb') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (echo 配置数据信息服务处于运行状态
) else (net start softmongodbif "%errorlevel%"=="0" (echo 配置数据信息服务已启动)else (echo 配置数据信息服务启动失败,可能的原因为服务未正确初始化、未设置管理员权限等)
)for /f "skip=3 tokens=4" %%i in ('sc query softpostgresql') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (echo 系统数据信息服务已经处于运行状态
) else (net start softpostgresqlif "%errorlevel%"=="0" (echo 系统数据信息服务已启动)else (echo 系统数据信息服务启动失败,可能的原因为服务未正确初始化、未设置管理员权限等)
)for /f "skip=3 tokens=4" %%i in ('sc query softtomcat7') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (echo Web服务已经处于运行状态
) else (net start softtomcat7if "%errorlevel%"=="0" (echo Web服务已启动,请稍等1-2分钟,再打开浏览器访问:http://localhost:9190/soft地址或单机版桌面快捷访问方式,即可访问。)else (echo 系统启动失败,可能的原因为服务未正确初始化、未设置管理员权限等)
)title 系统处理完成pause

4、停止stop.bat脚本

@echo off
title 系统正在停止
color 0a
echo =====================================================================
echo                   开始停止Java Web管理系统     
echo =====================================================================for /f "skip=3 tokens=4" %%i in ('sc query softtomcat7') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softtomcat7if "%errorlevel%"=="0" (echo Web服务已成功停止)else (echo Web服务停止失败)
) else (echo Web服务当前未启动
)for /f "skip=3 tokens=4" %%i in ('sc query softmongodb') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softmongodbif "%errorlevel%"=="0" (echo 配置数据信息服务已关闭)else (echo 配置数据信息服务停止失败)
) else (echo 配置数据信息服务当前未启动
)for /f "skip=3 tokens=4" %%i in ('sc query softpostgresql') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (net stop softpostgresqlif "%errorlevel%"=="0" (echo 系统数据信息服务已关闭)else (echo 系统数据信息服务停止失败)
) else (echo 系统数据信息服务当前未启动
)echo 软件停止处理完成
pause

以上就是当前制作一键安装包的主要内容,基本的流程就是:

1、先准备好相关软件截止和环境,包括了数据库、Java、Tomcat、.Net安装包等。

2、然后编写ISS脚本,声明相关软件的描述信息,包括安装时的步骤、密码、安装后执行的脚本、桌面图标、卸载步骤等。

3、单击Inno Setup工具栏上的编译图标即可,编译成功后在系统上双击安装,安装后会调用install.bat脚本进行初始化。

4、当需要启动和停止时,单击桌面或开始菜单中的快捷图标即可。

注意事项:

1、当制作的安装在Windows10上运行时,相关的Bat脚本会手动管理员权限的控制,无法执行,有2中解决办法:其一是关闭Windows10默认的管理员权限的控制;其二是在安装结束后,在快捷方式上鼠标右键设置为管理员权限。这样4个核心的bat脚本即可执行。

希望可以帮助到有需要的人。

这篇关于使用Inno Setup软件制作PostgreSQL+MongoDB+Tomcat+Java环境Windows一键安装包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411488

相关文章

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S