如何创建包含 Tomcat 和 MySQL 的 Java webapp 安装程序 (.exe)?”

Posted

技术标签:

【中文标题】如何创建包含 Tomcat 和 MySQL 的 Java webapp 安装程序 (.exe)?”【英文标题】:How to create Java webapp installer (.exe) that includes Tomcat and MySQL?" 【发布时间】:2010-10-25 19:12:25 【问题描述】:

如何使用Java创建一个结合tomcat、mysql和war文件的安装程序并输出一个最终的exe?

【问题讨论】:

你认为你可以更具体一点,你想让exe在系统上安装tomcat和mysql还是你想让它成为一个exe,将tomcat和mysql作为守护进程运行还是什么? 是的,exe安装程序需要一次安装tomcat、mysql、web应用和db脚本。最后,用户只需要启动tomcat和mysql服务即可。转到浏览器可以访问网络应用程序。 有人可以编辑问题标题,使其更具描述性吗? (“,或其他内容。)谢谢。 【参考方案1】:

您可以使用任何安装程序,真的。我个人用过InnoSetup,很简单,但安装时几乎可以执行任何任务。

在您的情况下,您可能希望将 Tomcat 文件放在某个地方,包括 webapp。自定义一些配置文件并以静默模式运行 MySQL 安装程序。所有这些都可以通过 InnoSetup 完全实现。

如果您需要更大的灵活性,可以查看NSIS,这是另一个非常简单但非常强大的安装程序应用程序。

【讨论】:

感谢您的推荐。InnoSetup 很好,易于使用。 有人发布了一个关于如何使用 Inno Setup 执行此操作的后续问题:***.com/questions/938925/…【参考方案2】:

可能的选项已经在几个问题中大致介绍过,尤其是:

What’s the best way to distribute Java applications? What is the best installation tool for java? What are good InstallAnywhere replacements for installing a Java EE application?

...还有其他问题tagged java + installer

虽然这些问题中提到的一些选项不能产生自给自足的 .exe 安装程序,但不可否认。如果您可以使用商业工具,我可以个人推荐install4j(费用$);除其他外,它可以创建 .exe 安装程序 (details about my experiences with it)。或者,有关从 Java 程序生成 Windows 可执行文件的更简单、免费的工具,请参阅Launch4j。

更新我的 install4j 建议,基于 OP 的评论:

是的,exe安装程序需要安装 tomcat、mysql、web应用和db 一次编写所有脚本。最后,用户 只需要启动tomcat和 mysql服务。去浏览器可以 访问网络应用程序。

使用 install4j,

您可以很好地捆绑 Tomcat、MySQL 和您的 web 应用程序 您也可以从安装程序中自动启动服务(或按照您的建议将其留给用户) 如果您愿意,安装程序甚至可以直接启动浏览器并将其指向您的 web 应用 :-)

我刚刚用 install4j 做了类似的事情(捆绑应用程序服务器、webapp、运行数据库脚本和许多其他的东西;但是没有捆绑数据库),所以我相对确定它可以完成。我不知道您是否可以使用 Launch4j 等免费工具(轻松)做到这一点。

【讨论】:

-1 上述任何内容均未涵盖此内容。他显然是在谈论使用 WAR 而不是 java 应用程序而是 java webapp 安装 tomcat 和 mysql。 嗯,它已经在一定程度上被覆盖了,因为例如使用 install4j,您可以包含 Tomcat、MySQL、WAR 文件或任何您想要的文件。 我的意思是,如果我们正在讨论为 Java 软件创建 .exe 安装程序,那么无论它是否是 Web 应用程序,可能的工具都是一样的。 仅在您上次更新之后,您仍然以安装 jars 为中心,这与所要求的非常不同,而且它显然不是“java 软件”吗? 不,我从来没有以安装 JAR 为中心。如果你看例如install4j (ej-technologies.com/products/install4j/features.html),你会发现它几乎可以做任何事情,即使它专门用于安装 Java 软件。如果 .exe 安装程序是必需的(看起来是这样),我仍然认为最合适的工具可能是我所指的那些。【参考方案3】:

这是我对这个问题的简约解决方案。我已经下载了没有安装程序的 tomcat 和 MySQL 安装,所以我只是解压缩了它们,我尝试了它们工作正常。 此时您将安装war文件到tomcat,并将相关架构安装到mysql。因此,当您复制文件夹时,所有内容都会被复制。你可以测试它是如何工作的。也许您可以对它们进行一些调整,但对我来说,它们开箱即用就可以正常工作,因为我的应用程序要求不高。 除此之外,我已经下载了 32 位和 64 位版本的程序,因此它们都可以安装。 我使用 Inno setup 打包安装程序。基本上它只通过选择 32 或 64 架构复制两个文件夹,并将 tomcat 和 mysql 都安装为 Windows 服务。

[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName=pf\MyApp
DefaultGroupName=MyApp
Compression=lzma2
SolidCompression=yes
OutputDir=output   
; "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
; On all other architectures it will install in "32-bit mode".
ArchitecturesInstallIn64BitMode=x64
; Note: We don't set ProcessorsAllowed because we want this
; installation to run on all architectures (including Itanium,
; since it's capable of running 32-bit code too).

[Files]              
; Install x64 if running in 64-bit mode (x64; see above), x86.exe otherwise.   
Source: "mysql-5.5.13-winx64\*.*"; DestDir: "app\mysql"; Check: Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "mysql-5.5.13-win32\*.*"; DestDir: "app\mysql"; Check: not Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs  
; Install x64 if running in 64-bit mode (x64; see above), x86.exe otherwise.   
Source: "apache-tomcat-6.0.32-x64\*.*"; DestDir: "app\tomcat"; Check: Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "apache-tomcat-6.0.32-x86\*.*"; DestDir: "app\tomcat"; Check: not Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
;   
Source: "start.bat"; DestDir: "app"; DestName: "start.bat"; 
Source: "stop.bat"; DestDir: "app"; DestName: "stop.bat"; 

[Icons]    
Name: "group\Start MyApp"; Filename: "app\start.bat"
Name: "group\Stop MyApp"; Filename: "app\stop.bat"

[Run]     
; install mysql and tomcat as services
Filename: "app\mysql\bin\mysqld.exe"; Parameters: "--install MyApp_MySQL"
Filename: "app\tomcat\bin\service.bat"; Parameters: "install"   
Filename: "app\start.bat"; Description: cm:LaunchProgram,cm:AppName; Flags: nowait postinstall skipifsilent

[UninstallRun]   
; uninstall mysql and tomcat as services  
Filename: "app\stop.bat";
Filename: "app\mysql\bin\mysqld.exe"; Parameters: "--remove MyApp_MySQL" 
Filename: "set"; Parameters: "CATALINA_HOME=app\tomcat"
Filename: "app\tomcat\bin\tomcat6.exe"; Parameters: "//DS//MyApp_Tomcat"

[CustomMessages]
AppName=MyApp
LaunchProgram=Start MyApp after finishing installation

现在要运行您的应用,您只需启动/停止已注册的服务即可。 start.bat

NET START MyApp_MySQL
NET START MyApp_Tomcat
START "" "http://localhost:8080/myapp/" 

stop.bat

NET STOP MyApp_MySQL
NET STOP MyApp_Tomcat

对我来说它工作得很好。

也许您可以包括 JRE 安装以及,导致一些 comps 可能没有它。 如果有人知道如何 检查是否有tomcat和mysql端口 已经采取了,以及如何 请在 conf 文件中更改它们 告诉我们。 另外,如果您可以检查 IP 地址并输入它而不是 本地主机会很棒。

问候

阿米尔

【讨论】:

【参考方案4】:

我建议您为此使用 Java,一个 installer.jar。由于您无论如何都想运行tomcat,因此无需放入exe文件。我们已经做了类似的事情,在 Ant API 的帮助下编写了一个 jar 安装程序(Ant 以编程方式使用)。

【讨论】:

你能否提供更多关于这方面的信息,我想了解更多关于它以及它是如何完成的。 从 Apache 网站下载 Ant jar 并使用 API 玩一下。而不是使用 XML 命令 u 使用类 Copy 并运行一些方法。 哦,我明白你的意思了。所以你在编译时安装它而不是将安装部署到客户端/服务器机器上? 是的,installer.jar 可以从 Mercurial 存储库下载。在此之后,安装程序获得控制权,下载软件(也从存储库),编译并将其部署为服务。【参考方案5】:

您可以为此使用BitRock InstallBuilder(费用为 $)。有关此类程序的示例,请查看 Alfresco、Liferay 等应用程序安装程序,包括 Tomcat、MySQL 等,地址为BitNami

【讨论】:

【参考方案6】:

更好的方法是使用IzPack,它比其他方法更好,因为它只需要打包一次,可以在任何具有相同编译jar的操作系统上使用。

我个人用它来打包我的 web 应用程序的 tomcat、mysql 和一些其他先决条件。

我使用Launch4J 从 IzPack 生成的 jar 文件创建可执行文件 (.exe)。

【讨论】:

以上是关于如何创建包含 Tomcat 和 MySQL 的 Java webapp 安装程序 (.exe)?”的主要内容,如果未能解决你的问题,请参考以下文章

mysql如何查出父分类下面的所有子分类中的站点信息

mysql如何查出父分类下面的所有子分类中的站点信息

我如何使用部署在战争 Spring Boot 应用程序中的 mysql jdbc 驱动程序

在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?

Tomcat Servlet 和 MySQL

Docker的Centos7容器配置Tomcat和MySQL并打成基础镜像