У установщика Install4j показывается информация о версии - PullRequest
0 голосов
/ 17 мая 2018

Я создаю набор инсталляторов с помощью install4j и хотел бы быстрый способ проверить информацию о версии исполняемого файла инсталлятора

Традиционно для этого потребуется вызвать что-то вроде installer-name.sh --version

В идеале это работало бы без необходимости распаковывать JRE, но я заметил, что даже справка -h для установщиков install4j распаковывает JRE, поэтому я предполагаю, что это не вариант ...

Что яХотелось бы знать, что это:

  • Есть ли способ указать параметры, такие как -h, которые выполняют одну задачу (например, информация о версии печати), и затем корректно завершить работу
  • В качестве альтернативыЕсли мне нужно самому разобрать эту опцию, используя context.getExtraCommandLineArguments(), есть ли способ успешно завершить установку после выполнения определенного действия, не вызывая принудительное завершение при выходе.
    • Я бы хотел избежать ситуации, когда у меня есть одно действие, которое обрабатывает --version, а затем остальную часть моей установки в условной группе.

==============

Чтобы было ясно, что я имею в виду под последним пунктом, я хотел бы получить решение, подобное (обрамление действий установки install4j как функции Java):

if(versionRequested){
  printVersion();
  return;
}
//all the rest of my installation actions

вместо:

if(versionRequested){
  printVersion();
}
else{
  //all the rest of my installation actions
}

1 Ответ

0 голосов
/ 17 мая 2018

В узле «Запуск» установщика добавьте действие «Выполнить сценарий» со сценарием

if (Arrays.asList(context.getExtraCommandLineArguments()).contains("--version")) {
    System.out.println("Version " + context.getCompilerVariable("sys.version"));
    context.finish(0);
}
return true;

В Windows System.out.println не будет печататься на консоли, поскольку установщик являетсяПриложение с графическим интерфейсом, поэтому вам придется вызывать

Util.showMessage("Version " + context.getCompilerVariable("sys.version"));

, который также работает правильно в режиме консоли.

...