分发应用程序时自动无缝地安装 JVM
Automatic and seamless way to install a JVM when distributing app
假设我想以类似本机的方式分发 Java 桌面应用程序。是否有 tool/technique 来构建 Java 桌面应用程序安装程序,如果系统上不存在 JVM,它会自动无缝地安装 JVM?
为没有 JVM 的用户安装 Java 应用程序需要两个步骤(首先安装 JVM,然后安装应用程序)。我想通过一步过程(或尽可能多的一步过程)来匹配安装典型本机桌面应用程序的体验。
对于 Windows,我建议使用 NSIS installer 来包装 JRE 和您的程序的安装。这将允许真正的 "installation",即。 JRE 将安装到 Program Files
,并且可以从 Windows 控制面板 ("public JRE") 中卸载它。您需要为此捆绑 JRE 安装程序。
或者,您可以将整个 JRE ("private JRE") 与您的程序捆绑在一起。您可以使用 Launch4J 将 Java 应用程序(VM 选项、类路径等)的启动配置为 EXE 文件,将 JRE 作为您的分发文件夹之一,并指向 Launch4J 以使用它。
或者,只需将解压缩的 JRE ("private JRE") 放在您的发行版的其中一个文件夹中,并使用相对路径来使用该文件,而不是系统上安装的文件。
私有 JRE 的优势在于您可以控制它的 Java 版本。使用 public JRE,用户可以卸载它或更改版本,然后抱怨您的程序无法运行 ;)
对于 Linux,如果您将应用程序作为 RPM 分发,您只需声明一个 Java 包作为您的依赖项。 Linux 包管理器应该处理这一切。另一方面,您仍然可以将 JRE 捆绑在自己的 RPM 中,以独立于用户计算机上安装的 "main" 版本。
假设我想以类似本机的方式分发 Java 桌面应用程序。是否有 tool/technique 来构建 Java 桌面应用程序安装程序,如果系统上不存在 JVM,它会自动无缝地安装 JVM?
为没有 JVM 的用户安装 Java 应用程序需要两个步骤(首先安装 JVM,然后安装应用程序)。我想通过一步过程(或尽可能多的一步过程)来匹配安装典型本机桌面应用程序的体验。
对于 Windows,我建议使用 NSIS installer 来包装 JRE 和您的程序的安装。这将允许真正的 "installation",即。 JRE 将安装到 Program Files
,并且可以从 Windows 控制面板 ("public JRE") 中卸载它。您需要为此捆绑 JRE 安装程序。
或者,您可以将整个 JRE ("private JRE") 与您的程序捆绑在一起。您可以使用 Launch4J 将 Java 应用程序(VM 选项、类路径等)的启动配置为 EXE 文件,将 JRE 作为您的分发文件夹之一,并指向 Launch4J 以使用它。
或者,只需将解压缩的 JRE ("private JRE") 放在您的发行版的其中一个文件夹中,并使用相对路径来使用该文件,而不是系统上安装的文件。
私有 JRE 的优势在于您可以控制它的 Java 版本。使用 public JRE,用户可以卸载它或更改版本,然后抱怨您的程序无法运行 ;)
对于 Linux,如果您将应用程序作为 RPM 分发,您只需声明一个 Java 包作为您的依赖项。 Linux 包管理器应该处理这一切。另一方面,您仍然可以将 JRE 捆绑在自己的 RPM 中,以独立于用户计算机上安装的 "main" 版本。