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

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

【问题讨论】:

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

标签: java tomcat installation web-applications


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

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

...还有其他问题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)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多