2015-03-31 2 views
2

Я работаю над созданием «Self-Contained Application», используя Java Packager Tool. По умолчанию пакет «.exe» установлен в «C: \ Program Files (x86)», но я хотел бы установить его в пользовательское местоположение: например, C: \ MyApp.Инструмент Java Packager: пользовательское место установки

Чтобы создать свой узелок, я использую задачу Ant внутри Maven сборки:

<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> 

ли кто-нибудь обойти эту проблему? И мог бы рассказать мне больше о том, как более точно настроить сгенерированный собственный пакет?

Спасибо заранее.

EDIT

В операционной системе Windows, я нашел способ сделать это: путем редактирования файла COM \ оракул \ инструменты \ упаковщик \ Windows \ template.iss в банке% JAVA_HOME% \ Lib \ муравей -javafx.jar. Но это решение кажется уродливым и не переносимым! Итак, теперь я ищу способ переопределить его в моей задаче муравьев ...

+1

Зачем использовать Ant-задачу внутри сборки Maven, когда у вас есть [плагин maven] (http://zenjava.com/javafx/maven/), чтобы сделать все это? – ItachiUchiha

+0

Каталог установки установщиков зависит от установки INNO/WIX для Windows. – ItachiUchiha

+0

@ItachiUchiha Да, я знаю о INNO/WIX, но ни один из них не позволяет указать каталог установки инсталляторов, поскольку я вижу [здесь] (https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/self-contains-packaging.html), Таблица 7-2 –

ответ

1

Для дополнительной документации, что мы делали Tib, было отредактировано% JAVA_HOME% \ lib \ ant-javafx.jar. Вы можете использовать 7-Zip (или другие), чтобы открыть этот файл jar и обновить его содержимое.


В ком \ оракула \ инструменты \ упаковщик \ Windows \ template.iss, измените эту строку:

DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME 

To:

DefaultDirName={pf}\APPLICATION_NAME 

{pf} является настройка Inno константа, указывающая на 32-разрядной или 64-разрядной папке Program Files. См. Inno Setup Help.


Если вы хотите установить в Program Files, то полезно изменить:

PrivilegesRequired=APPLICATION_INSTALL_PRIVILEGE 

To:

PrivilegesRequired=admin 

Кроме того, если ваша программа будет используется пользователями, не являющимися администраторами, и будет записывать в свою папку в Program Files, тогда вам понадобится special folder permissions. Ниже приведен пример background on permissions для приложения, работающего в Program Files.


Вы также могли бы добавить к этому, чтобы убедиться, что новое место установки используется:

UsePreviousAppDir=No 

Это решение не является идеальным, но лучше, чем ничего.