Самостоятельный установщик JavaFX с установкой Inno 5 - разрешить пользователю изменять каталог установки

Я использую Ant для создания самораскрывающегося EXE для приложения JavaFX.

В настоящее время Inno Setup помещает EXE здесь: C:\Users\имя_пользователя\AppData\Local\имя приложения

Я хотел бы разместить это в другом месте и предоставить пользователю возможность переопределить это. Однако я не могу найти настройки Ant, чтобы изменить это.

Возможно ли это?

Спасибо!

Ответ 1

На самом деле вы не можете изменить это, используя ANT. Однако, как вы уже знаете, механизм развертывания использует Inno Setup, и вы можете изменить его поведение.

Во время задачи fx:deploy ANT создается файл по умолчанию ApplicationName.iss. Этот файл по умолчанию содержит, например, параметр, который отвечает за каталог установки. Этот файл по умолчанию создается только в том случае, если вы не предоставили никаких настроек самостоятельно. Поэтому я рекомендую запустить ANT script, скопировать файл по умолчанию и изменить его. Если вы включаете флаг verbose задачи fx:deploy, вы можете использовать вывод консоли, чтобы узнать, где создается файл по умолчанию, и где задача ANT выполняет поиск вашего настроенного файла перед созданием по умолчанию:

<fx:deploy
    ...
    verbose="true">

    <fx:info title="${appname}" vendor="${vendor}"/>
    ...
</fx:deploy>

В моем случае я нашел файл по умолчанию в

C:\Users\gfkri\AppData\Local\Temp\fxbundler3627681647438085792\windows

и пришлось поместить настроенный файл в

package/windows/ApplicationName.iss

относительно ANT сборки script.

Если вы дошли до этого, вы найдете строку DisableDirPage=Yes в вашем файле ApplicationName.iss. Измените его на DisableDirPage=No, и пользователь получит возможность изменить каталог установки.

Далее вы найдете параметр DefaultDirName. Если вы хотите установить приложение на C:\Program File\ApplicationName по умолчанию, вы можете использовать константу {pf} например. DefaultDirName={pf}\ApplicationName.

Ответ 2

Оригинальный ответ больше не верен, потому что эта функция добавлена ​​в JDK (просто не знаю, когда, но она была там при использовании 1,8.0u60 или около того).

Просто добавьте <installdirChooser> в качестве некоторого <bundleArguments> и установите его на true:

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.4.0</version>
    <configuration>
        <mainClass>your.mainclass</mainClass>
        <verbose>true</verbose>
        <bundleArguments>
            <identifier>SOME-GUID-USED-FOR-UPDATE-DETECTION</identifier>
            <installdirChooser>true</installdirChooser>
        </bundleArguments>
    </configuration>
</plugin>

Отказ от ответственности: Я сторонник javafx-maven-plugin