Каков наилучший способ прекратить работу программы, а затем запустить дополнительный код из программы, которая завершается? Например, что было бы лучшим способом для самообслуживания программы самостоятельно?Самообновление
ответ
У вас есть несколько вариантов:
Вы можете использовать другой EXE-файл приложения, чтобы сделать автоматическое обновление. Вероятно, это лучший метод.
Вы также можете переименовать exe программы во время ее работы. Следовательно, вы можете получить файл с какого-либо сервера обновлений и заменить его. При следующем запуске программы он будет использовать новый .exe. Затем вы можете удалить переименованный файл при запуске.
Я не знаю, как это сделать без второй программы, которую запускает основная программа перед выключением. Программа 2 загружает и устанавливает изменения, а затем перезагружает основную программу.
Мы сделали что-то подобное в нашем предыдущем приложении. Мы зафиксировали завершение программы (в .NET 2.0) либо с помощью кнопки X, либо с кнопки закрытия, а затем начали фоновый процесс обновления, который пользователь не видел. Он проверил бы сервер (приложение клиент-сервер) на обновление, и если бы он был доступен, он загрузился бы в фоновом режиме с помощью BITS. Затем, в следующий раз, когда приложение откроется, он поймет, что появилась новая версия (мы установили флаг) и вытащили сообщение, предупреждающее пользователя о новой версии, и кнопку, чтобы щелкнуть, если они хотели просмотреть новые добавленные функции к этой версии.
Это упростит, если у вас есть дополнительное приложение, выполняющее обновления. Вы должны выполнить приложение «updater», а затем внутри него ждать выхода другого процесса. Если вам нужен доступ к обычным DLL-приложениям и тому подобное, но они также нуждаются в обновлении, вы можете запустить программу обновления из вторичного местоположения с уже обновленными DLL, чтобы они не использовались в исходном местоположении.
Это будет действительно полезно знать, на каком языке мы говорим здесь. Я уверен, что могу дать вам несколько действительно полезных советов для этого в PowerBuilder или Cobol, но на самом деле это не совсем то, что вам нужно! Если вы говорите о Java, то, возможно, вы можете использовать закрытый крючок - отлично работает для меня.
Если вы используете приложение .NET, вы можете использовать ClickOnce. Если вам нужна небольшая настройка, вы можете посмотреть в другом месте.
У нас есть внешний процесс, который выполняет обновление для нас. Когда он находит обновление, он загружает его в дополнительную папку, а затем ждет, пока основное приложение завершит работу. При выходе он заменяет все текущие файлы. Основной процесс просто запускает процесс обновления каждые 4 часа. Поскольку процесс обновления будет ждать выхода из основного приложения, основное приложение не должно выполнять какую-либо специальную обработку, кроме запуска приложения обновления.
Это побочный вопрос, но если вы планируете писать свой собственный процесс обновления, я бы посоветовал вам изучить использование какого-либо сжатия, чтобы (1) сохранить при загрузке и (2) предоставить один файл для вытягивания с сервера обновлений.
Надеюсь, что имеет смысл!
Еще одна вещь, которую следует учитывать, заключается в том, что большинство «основных» приложений, которые я использовал (FileZilla, Paint.NET и т. Д.), Имеют обновление, удаляющее предыдущую версию приложения, а затем выполнение новой установки новой версии приложения.
Я понимаю, что это не сработает для действительно больших приложений, но это похоже на «предпочтительный» процесс для приложений малого и среднего размера.
- 1. Самообновление ORM
- 2. Самообновление .net CF application
- 3. Как сделать самообновление Java-приложения?
- 4. Ошибка при composer.phar самообновление (Symfony)
- 5. OData WCF Сервис Самообновление DataModel
- 6. Как сделать самообновление Java-приложения?
- 7. Как сделать самообновление метки часов в киви?
- 8. Самообновление каждые 10 секунд виджета Handler.postDelayed problem
- 9. Самообновление класса модели POCO из внешнего webservice
- 10. самообновление композитора не работает на OSX
- 11. как запустить самообновление composer.phar в travis
- 12. Как сделать самообновление файла (Native C++)
- 13. composer.phar: скачать новую версию или сделать самообновление?
- 14. Как настроить самообновление log4j без перезапуска tomcat?
- 15. Кто-нибудь сделал самообновление изменчивого представления таблицы на основе RACSignal?
- 16. Как создать самообновление в стиле Chrome в Windows?
- 17. Macport самообновление не удалось горный лев. Раньше он работал нормально
- 18. Как пропустить «самообновление композитора», но до сих пор «компоновщик установки» с capistrano
- 19. Composer \ Downloader \ TransportException по composer.phar самообновление в 2 приложения Zend Framework
- 20. iPad webapp: фиксированный нижний колонтитул и масштабируемый контент
- 21. Как обновить композитор на окнах?
- 22. самосовершенствование композитора на Openshift не дает разрешения?
- 23. XAMPP composer PHP Неустранимая ошибка: Class 'Phar' не найден
- 24. RCP на основе плагинов или функций?
- 25. Приложения для самообновления Windows IOT
- 26. Oracle корпоративного управления менеджером облака 13с растяжимость скачать агент не удался
- 27. Избегайте повторной отправки данных на странице обновления
- 28. Html form onsubmit редактировать текстовое поле в форме?
- 29. Qt5 можно определить более одной конфигурации сборки?
- 30. Ошибка в Travis CI Процесс сборки для приложения php