Лучший метод для реализации программного обеспечения Самообновления

Немного неясный тильда тильды "оператор", который вызывает скалярный контекст.

print ~~ localtime;

совпадает с

print scalar localtime;

и отличающийся от

print localtime;
11
задан eyllanesc 21 March 2019 в 21:49
поделиться

5 ответов

Как насчет развертывания ClickOnce ?

6
ответ дан 3 December 2019 в 03:36
поделиться

Я без проблем использую второй метод. Просто убедитесь, что скачанная сборка правильно загрузилась. ;)

Запустите Update.exe и дайте ему сделать следующее:

  1. загрузите новый update.exe как update.ex_
  2. переименуйте update.exe в update.bak (вы можете переименовать его, но не перезаписывать )
  3. переименуйте update.ex_ в update.exe
  4. перезапустите update.exe

Я делаю это без каких-либо проблем, поэтому он протестирован и работает в реальной среде примерно у 400 клиентов, как мы говорим.

9
ответ дан 3 December 2019 в 03:36
поделиться

То, как мы это делаем с помощью нашего внутреннего приложения:

Ярлык приложения указывает на средство обновления.

  1. Отображаются уведомления о простоях / крайние сроки.
  2. выполняет средство обновления проверка обновлений.
  3. Обновления загружаются и устанавливаются.
  4. Приложение запущено.
  5. Приложение выполняет обновление программы обновления (проверяет наличие Updater.fp7.gz в папке / update)

Редактировать: Упс - пропущен шаг 5.

1
ответ дан 3 December 2019 в 03:36
поделиться

Другой вариант: когда главное приложение хочет обновить себя, оно запускает новый процесс обновления и затем закрывается. Тем временем порожденный процесс ожидает закрытия основного приложения (исчезновение процесса), а затем обновляет все необходимые файлы (включая .exe). После этого просто перезапускается основное приложение и завершается процесс обновления.

8
ответ дан 3 December 2019 в 03:36
поделиться

В проекте, над которым я работал, было 2 исполняемых файла. Назовем их A и B.

Единственная причина, по которой существует A, - это начало B. Итак, когда B («настоящее» приложение) загрузило обновление, оно могло заменить A, если это было необходимо.

Если приложение было перезапущено (через A), A проверил, загрузил ли B какие-то файлы, и заменил их перед запуском B.

3
ответ дан 3 December 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: