java - NetBeans 和 Inno Setup 无法生成正确的 Native .exe

标签 java netbeans inno-setup native

我在 Netbeans 中创建了一个 JavaSE 应用程序,并正在使用 Inno Setup 5 生成我认为是完整的 Windows 安装,包括 JRE。按照指示,我已经检查了 NetBeans 的 Native 属性框,并且在 Path 中有 Inno Setup 5。 EXE 已生成并很好地安装,前提是目标机器已安装 Java。如果没有,则没有与 .jre 和 javac.exe 的文件关联,因此 .jar 文件不会运行。

2017 年 3 月 4 日:今天经过大量的探索和尝试,我现在更全面地了解了 NetBeans native 打包的真正作用。它创建一个安装程序 exe,当它传输到带有或不带有 JRE 的目标计算机上并在其上执行时,会创建实际的 myApp.exe 并将其放在“开始”菜单上。我的问题一直认为 myApp.jar 文件中有 JRE,所以我只是想双击 myApp.jar。如果我使用 myApp.exe 它可以工作。

但是,我现在看到我仍然有问题。 myApp 需要许多支持数据文件并从 .ini 文件中读取。因此,我将不得不创建一个 Inno 设置来单独执行这些操作,并且我的用户将不得不下载并运行两个安装程序,可以这么说。如果执行 NetBeans Native 安装程序的人使 Inno 设置文件可访问以进行编辑,那就太好了。

埃德

最佳答案

NetBeans 具有用于创建“ native ”应用程序的打包选项,即适用于 Windows 的 MyApp.exe 文件。这样做的重要性在于您获得了一个包含 JRE 的 Windows 可执行文件,这意味着最终用户无需在他/她的机器上安装 Java 或 JRE 即可运行该应用程序。

这听起来很棒,但是文档并不清楚如何使它工作,至少对我来说不是。这是我学到的。

首先,要使其工作,您必须在开发计算机上安装 Inno Setup 5 或更高版本。显然,NetBeans 创建了一个 Inno .iss 文件并运行它。

为了更好地理解它,我为 Inno AnagramGame 示例制作了一个 NetBeans 项目。要启用 Native 打包选项,首先选择 NetBeans 中的 Project,右键单击并选择 Properties|Deployment。检查 native 包装盒。这会导致将 EXE 选项放置在 NetBeans 打包菜单上。即,选择项目,右键单击并单击打包为。单击 EXE 安装程序启动构建“包”的过程。

构建安装程序需要很长时间,因为它必须积累 JRE 的所有必要部分并将其合并到包中。这也使安装程序变得很大。即使对于最小的 Java 程序,它也将是大约 35 Mb。

在对某些应用程序(例如 AnagramGame2)进行 Native 打包后,您会在 NetBeans 项目文件夹中找到以下内容:
C:\Users\Ed Sowell\Documents\NetBeansProjects\AnagramGame2\dist\anagrams.jar

C:\Users\Ed Sowell\Documents\NetBeansProjects\AnagramGame2\dist\bundles\AnagramGame2-1.0.exe

Anagrams.jar 是 AnagramGame2 应用程序的 Java 存档文件。如果您安装了 JAVA,这将通过双击实际运行项目。但是,如果您将其移动到另一台未安装 Java 或 JRE 的计算机上,它将无法执行。原因是 jar 文件不包含 JRE。我花了很长时间才认识到这一点。

现在,您可能会认为 AnagramGame2-1.0.exe 是应用程序的 native 可执行文件,但实际上不是。实际上是安装程序,这是我花了很长时间才认识到的另一件事。

那么,传说中的 Windows Native 应用程序文件在哪里呢?答案是它还没有。为了得到它,您必须运行安装程序!运行它后,您会在 C:\Users\Ed Sowell\AppData\Local\AnagramGame2 中找到非常想要的 EXE:

C:\Users\Ed Sowell\AppData\Local\AnagramGame2\AnagramGame2.exe

此外,选择适当的选项后,应用程序名称将出现在 Windows 开始菜单和桌面上。

因此,要分发 Windows Native 应用程序,您必须:

  • 创建一个 NetBeans 项目。
  • 对项目进行干净的构建
  • 为项目启用 native 打包选项
  • 将包作为| native 安装程序
  • 分发安装程序,在本例中为 AnagramGame2-1.0.exe
  • 然后您的用户运行安装程序。之后,他/她从“开始”菜单或双击桌面图标运行该应用程序。

  • 关于正确使用这个 NetBeans/Inno 设置过程,我还有很多不明白的地方。有一些小谜团,比如为什么它将最终产品的位置隐藏在 User AppData Local 中。谁会想到看那里?为什么它调用安装程序 AnagramGame2-1.0.exe 而不是 setupAnagramGame2.exe 之类的东西?但这是我尚未解决的最大问题:如何安装应用程序所需的辅助文件?或者从 INI 文件中获取所需的数据?如果在 NetBeans 进程中构建和使用的 .iss 可用,则可以对其进行编辑,但到目前为止我还没有找到它。我的猜测是它被删除了。除此之外,我唯一能想到的就是写另一个 .iss 文件来完成这项工作。不幸的是,这意味着用户必须下载并运行两个安装程序!

    关于java - NetBeans 和 Inno Setup 无法生成正确的 Native .exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42590447/

    相关文章:

    windows - 升级安装后 Vista/Win7 资源管理器快捷方式中的应用程序图标损坏

    java - 如何在 Android 中通过改造访问 JSON 响应中的特定值?

    使用 Swing 和 RXTX 进行 Java RS232 通信

    svn - 禁用 Netbeans 自动 svn 忽略?

    inno-setup - Inno Setup - 按组件定义磁盘空间

    inno-setup - 如何为以前的 Inno Setup 安装自动设置 DefaultDirName?

    java - 从 swing 中的事件处理程序启动服务器

    java - LibGDX:皮肤+自定义坐标绘制不正确

    java - 根据调用的选项卡更新组件

    maven - Netbeans RCP 项目的 IntelliJ 运行配置