Java Packager工具:自定义安装位置

时间:2015-03-31 15:46:50

标签: java deployment ant javafx packaging

我正在解决"自包含的应用程序"使用Java Packager Tool生成。默认情况下,' .exe' bundle安装在" 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 。罐。但这个解决方案似乎很难看,而且不便携!所以我现在正在寻找一种方法来在我的蚂蚁任务中覆盖它...

3 个答案:

答案 0 :(得分:3)

对于额外的文档,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}是指向32位或64位Program Files文件夹的Inno Setup常量。请参阅Inno Setup Help

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

PrivilegesRequired=APPLICATION_INSTALL_PRIVILEGE

要:

PrivilegesRequired=admin

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

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

UsePreviousAppDir=No

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

答案 1 :(得分:0)

从jar文件中获取the template很好,但是您不需要对其进行编辑。

一旦有了该模板,就可以将其用作drop-in resource。所有看起来像SOME_VARIABLE的变量(即大写字母和使用下划线的变量)仍将由javapackager替换。

此解决方案具有更高的可移植性,因为它不涉及编辑JDK。只需将您的模板作为package/windows/包含在YourAppName.iss中即可。

答案 2 :(得分:0)

用户选项-BinstalldirChooser =真