Могу ли я использовать программу запуска install4j для перезапуска приложения Java?

Мне нужно перезапустить приложение с графическим интерфейсом Java в ответ на действие пользователя, аналогично перезапуску eclipse при переключении рабочих пространств.

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

Ваше здоровье


person Dave West    schedule 11.06.2012    source источник


Ответы (1)


Это не функция в install4j. Однако вы можете снова запустить программу запуска, используя java.lang.ProcessBuilder и вызвав System.exit().

Если средство запуска представляет собой средство запуска с одним экземпляром графического интерфейса, вы должны использовать другой исполняемый файл, который ожидает закрытия средства запуска, а затем перезапускает исходный исполняемый файл. Это можно легко сделать с помощью пользовательского приложения-установщика, которое содержит действие «Выполнить средство запуска» в своем узле «Автозагрузка». Пользовательское приложение-установщик запускается через API с аргументами

-q -wait 20

т. е. он выполняется в автоматическом режиме (без графического интерфейса) и ожидает максимум 20 секунд, пока все установленные программы запуска отключатся. Чтобы показать индикатор выполнения, добавьте

-splash "Restarting application"

к аргументам. Код для запуска пользовательского приложения установки выглядит следующим образом:

import java.io.IOException;
import com.install4j.api.launcher.ApplicationLauncher;

try {
    ApplicationLauncher.launchApplication("ID", new String[] {
       "-q","-wait","20"
    }, false, null);
} catch (IOException e) {
    e.printStackTrace();
    //TODO handle invocation failure
}

где ID нужно заменить на ID пользовательского приложения-установщика.

person Ingo Kegel    schedule 12.06.2012
comment
Привет, это также работает для одного экземпляра приложения с графическим интерфейсом Windows ?? - person harsh; 27.10.2013
comment
Нет, в этом случае все сложнее, см. мой обновленный ответ. - person Ingo Kegel; 04.11.2013
comment
На сегодняшний день вариант -wait, похоже, был исключен. Как это может быть достигнуто сегодня? Более того, как я могу передать аргументы командной строки в программу запуска? - person Rosso; 25.10.2018
comment
Параметр -wait не был удален. Какую проблему вы испытываете? Обратите внимание, что этот параметр доступен только для приложений-установщиков, а не для сгенерированных программ запуска. - person Ingo Kegel; 25.10.2018
comment
Пробовал запускать перезапуск.exe из командной строки с параметром -wait... Значит, это невозможно? Параметр -wait работает только при подаче на вызов API? (Что было бы идеально для меня) - person Rosso; 25.10.2018
comment
Нет, это не имеет ничего общего с API, вы можете передать его в командной строке, а также до тех пор, пока restarter.exe является приложением-установщиком. - person Ingo Kegel; 25.10.2018
comment
Хорошо, я как-то разобрался. Сейчас я использую приложение-установщик с выключенным вызовом запуска и выполнением действия запуска. Однако можно ли передать аргументы командной строки исполняемой программе запуска? - person Rosso; 26.10.2018
comment
Выяснил это сам. Я использую переменные установщика, переданные в установщик с помощью -VmyVar=test, а затем передаю их в средство запуска в действии выполнить средство запуска. - person Rosso; 26.10.2018