【问题标题】:Running install4j on 64bit JRE in Win在 Win 中在 64 位 JRE 上运行 install4j
【发布时间】:2012-06-05 10:54:49
【问题描述】:

当用户安装了 32 位或 64 位 JRE 时,是否可以通过 Install4J 创建一个可以在两种情况下运行的 Windows 媒体文件?

我有一个案例,我正在包装一个不需要 64 位操作系统功能的应用程序。所以我选择了一个 32bit (Install4J) 的可执行文件来生成。最终,当我们尝试在安装了 64 位 JRE 的 64 位 Win7 上安装时遇到问题。安装程序抱怨缺少 32 位 JRE。

在 Install4J 的帮助指南中,我发现了以下内容:

在 Windows 上,本机可执行文件可以是 32 位或 64 位可执行文件。如果您的应用程序需要 64 位 JRE,您可以选择为媒体文件生成 64 位安装程序和启动程序。 请注意,无法创建同时适用于 64 位和 32 位 JRE 的启动器。由于启动器通过加载 JVM DLL 以 JNI 接口启动 JVM,因此架构必须相同。如果您同时针对 32 位和 64 位 JRE 和操作系统,则必须为它们生成不同的媒体文件。

我希望粗体字是指您确实需要特定 64 位功能的情况。

有什么帮助吗?提前致谢。

【问题讨论】:

  • 显然您需要两个媒体文件。

标签: install4j


【解决方案1】:

很遗憾,目前这是不可能的。我建议使用 32 位 JRE 包。这适用于 32 位 Windows 和 64 位 Windows。已经安装的 64 位 JRE 的情况可能并不那么重要。

【讨论】:

  • 嗨 Ingo 对此有任何更新 - 此功能是否可用
  • 没有变化。我们不打算为 Windows 开发 32 位/64 位混合安装程序。
  • 产品启动时是否可以查看JRE版本/架构(安装成功后点击可执行)
  • JRE 位数由System.getProperty("sun.arch.data.model") 给出,您可以通过com.install4j.api.Util.is64BitWindows() 检查 64 位 Windows
【解决方案2】:

我已经设法找到实际上是“黑客”的解决方案。

这个想法是将适当的 32 位 Java 打包为捆绑包,并指示 Install4J 不要使用用户的 Java 并且不要依赖它。作为输出,Install4J 将在安装应用程序本身的同一级别上创建“jre”文件夹。通过这样做,当用户在机器上没有安装 JRE 时,甚至可以同时运行安装程序和应用程序。

我创建此类 Install4J 配置的方式如下:

  • 打开“Media”,然后打开“Windows”(如果您想为 Unix 或 Mac 捆绑 JRE,也可以选择其他任何方法)
  • 选择“捆绑的 JRE”
  • 选中“捆绑以下 JRE”,然后找到所需的 Java 版本
  • 不要选中“安装为共享 JRE”和“仅在未找到其他合适的 JRE 时安装”(这会将 JRE 放置在您安装应用程序的文件夹中)

【讨论】:

  • 启动器和安装程序是 32 位或 64 位,具体取决于媒体文件向导中的设置。在任何情况下,您的配置都只能使用 32 位 JRE。
【解决方案3】:

较新版本的 install4j 在媒体文件中有一个32 / 64 位 开关。我想从 install4j 4 开始。

你仍然需要在目标环境中有一个匹配的 JRE,或者在你编写 bundle 的时候。如果安装程序大小不是问题,捆绑是更安全的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2013-06-22
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多