【问题标题】:Java Packager Tool : custom install locationJava Packager Tool:自定义安装位置
【发布时间】:2015-06-05 00:57:26
【问题描述】:

我正在使用Java Packager Tool 解决“自包含应用程序”生成问题。默认情况下,“.exe”包安装在“C:\Program Files (x86)”下,但我想将其安装到自定义位置:例如“C:\MyApp”。

为了生成我的包,我在 Maven 构建中使用了 Ant 任务:

<target xmlns:fx="javafx:com.sun.javafx.tools.ant">

    <property name="jre.dir" value="${env.JAVA_HOME}/jre" />
    <property name="version" value="0.0.3" />

    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
        uri="javafx:com.sun.javafx.tools.ant" classpath="${env.JAVA_HOME}/lib/ant-javafx.jar" />

    <echo message="// ----------------------------------- //" />
    <echo message="//     START JAVAPACKAGER ANT TASK     //" />
    <echo message="// ----------------------------------- //" />

    <fx:deploy nativeBundles="exe" outdir="${basedir}/packager"
        outfile="MyApp_${version}">

        <fx:application name="MyApp" mainClass="com.myfirm.myapp.bootstrap.BootstrapMain">
            <fx:argument>-bundlesDir=./bundles/</fx:argument>
        </fx:application>

        <fx:resources>
            <fx:fileset dir="${project.basedir}/target"
                includes="${project.name}-${project.version}-jar-with-dependencies.jar" />
            <fx:fileset dir="${project.basedir}" includes="bundles/*.jar" />
        </fx:resources>

        <fx:info title="MyApp ${version}" vendor="MyFirm">
            <fx:icon href="${project.basedir}/myapp.ico" kind="default" width="32" height="32" depth="8" />
        </fx:info>

        <fx:preferences install="true" shortcut="true" />

        <fx:platform basedir="${jre.dir}"/>   

    </fx:deploy>
</target>

有人解决这个问题吗?并且可以告诉我更多关于如何更精确地配置生成的本机捆绑包的信息吗?

提前致谢。

编辑

在 Windows 下,我找到了一种方法:通过编辑 jar %JAVA_HOME%\lib\ant-javafx 中的文件 com\oracle\tools\packager\windows\template.iss。罐。但是这个解决方案似乎很丑陋而且不便携!所以我现在正在寻找一种在我的 ant 任务中覆盖它的方法......

【问题讨论】:

  • 安装程序的安装目录取决于 Windows 的 INNO/WIX 设置。
  • @ItachiUchiha 是的,我知道 INNO/WIX,但它们都不允许指定自定义安装程序安装目录,我可以看到 here,表 7-2
  • 你可能想通过WIX Documentation for custom path。如果你使用 Inno,它也有类似的功能。
  • @ItachiUchiha 好的,但是我在哪里可以从我的构建脚本中覆盖它??
  • 您不能在构建文件中使用自定义打包程序时编写自己的脚本并执行它。

标签: java deployment ant javafx packaging


【解决方案1】:

对于额外的文档,Tib Us 所做的是编辑 %JAVA_HOME%\lib\ant-javafx.jar。您可以使用7-Zip(或其他)打开该 jar 文件并更新其内容。


在 com\oracle\tools\packager\windows\template.iss 中,更改这一行:

DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME

收件人:

DefaultDirName={pf}\APPLICATION_NAME

{pf} 是一个 Inno Setup 常量,指向 32 位或 64 位 Program Files 文件夹。见Inno Setup Help


如果您想在 Program Files 中安装,那么更改会很有帮助:

PrivilegesRequired=APPLICATION_INSTALL_PRIVILEGE

收件人:

PrivilegesRequired=admin

另外,如果您的程序将被非管理员用户使用并且将写入程序文件中的文件夹,那么您将需要一些special folder permissions。这是在 Program Files 中运行的应用程序的一些 background on permissions


您可能还想添加这个,以确保使用新的安装位置:

UsePreviousAppDir=No

这个解决方案并不理想,但总比没有好。

【讨论】:

  • 编辑 JDK 不是实现您的目标所必需的。只需将template file 用作drop-in resource。 javapackager 仍将替换所有 UPPER_WITH_UNDERSCORE 变量。
【解决方案2】:

从 jar 文件中获取模板很好——或者download it here——但是你不需要在它所在的地方编辑它。

获得该模板后,您可以将其用作drop-in resource。所有看起来像SOME_VARIABLE(即大写字母且使用下划线)的变量仍将被javapackager 替换。

这个解决方案更便携,因为它不涉及编辑 JDK;只需将您的模板作为YourAppName.iss 包含在package/windows/ 中即可。

【讨论】:

    【解决方案3】:

    用户选项 -BinstalldirChooser=true

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2019-02-05
      • 2019-08-05
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多