我正在解决"自包含的应用程序"使用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 。罐。但这个解决方案似乎很难看,而且不便携!所以我现在正在寻找一种方法来在我的蚂蚁任务中覆盖它...
答案 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 =真