2017-01-31 2 views
1

С Install4j Я пытаюсь сделать безмолвное обновление без остановки приложения, которое оно обновляет. Я получаю следующую ошибку: «Приложение запущено. Закройте все экземпляры и запустите этот установщик еще раз.« Есть ли способ обойти это. Я вызываю установщик из своего кода со следующим кодом:Install4j silent upgrade без закрывающего запуска приложения

String [] args = new String[1]; 
args[0] = "-q"; 
ApplicationLauncher.launchApplicationInProcess("6661", args, new ApplicationLauncher.Callback() { 
        @Override 
        public void exited(int i) { 
         logger.info("The installer exited"); 
        } 

        @Override 
        public void prepareShutdown() { 
         logger.info("Calling the prepareShutowon fuction"); 
        } 
       }, ApplicationLauncher.WindowMode.DIALOG, null); 

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

ответ

0

С Install4j Я пытаюсь сделать безмолвное обновление, не закрывая приложение, которое оно обновляет.

Это невозможно, поскольку файлы JAR для Windows и исполняемые файлы не могут быть перезаписаны, если они используются исполняемым исполняемым файлом.

В обновлении вам нужно запустить действие «Завершить работу при запуске» перед запуском нового установщика. Вероятно, вы удалили это действие из конфигурации по умолчанию. Новый установщик может автоматически перезапустить приложение с помощью действия «Выполнять запуск» на экране «Готово».

+0

Один из способов, которым я обходился, - это установить мое приложение в подкаталог под номером версии. Так что это будет что-то вроде «MyApp -> 1.0.0 -> AppFiles». Теперь мое обновление создаст новый подкаталог, например «MyApp -> 2.0.0-> AppFiles». @Ingo – jovacoder

Смежные вопросы