Как обновить запущенную программу в Go [duplicate]

Интересно, что ни один из ответов на этой странице не упоминает два крайних случая, надеюсь, никто не возражает, если я их добавлю:

Случай с краем # 1: одновременный доступ к Словарю

Родовые словари в .NET не являются потокобезопасными, а иногда могут бросать NullReference или даже (чаще) a KeyNotFoundException при попытке получить доступ к ключу из двух параллельных потоков. Исключение в этом случае является довольно ошибочным.

Случай с краем # 2: небезопасный код

Если код NullReferenceException задан кодом unsafe, вы можете посмотреть на переменные указателя , и проверьте их на IntPtr.Zero или что-то в этом роде. Это одно и то же («исключение нулевого указателя»), но в небезопасном коде переменные часто переводятся в типы значений / массивы и т. Д., И вы ударяете головой о стену, задаваясь вопросом, как тип значения может исключение.

(Еще одна причина для небезопасного использования небезопасного кода, если вам это нужно)

4
задан Jason Champion 26 August 2011 в 01:07
поделиться

2 ответа

  1. Запуск exe загружает новый, помещает его где-то
  2. Запуск exe переименовывает себя во что угодно (например .exe.tmp)
  3. Запуск exe помещает загруженный exe, где
  4. Запуск exe запускает загруженный exe
  5. Загруженный exe проверяет файл .exe.tmp, если найден, удаляет его и убивает старую версию процесс
  6. Выполнено
9
ответ дан Maxem 25 August 2018 в 11:10
поделиться

Мне нравится метод добавления / удаления инструмента patcher / maintenance / feature. Даже если по какой-то причине вам нужно что-то обновить как тривиальное, я не вижу здесь «парадокса цыпленка или яйца», это скорее «одна рука омывает другое».

  1. Проверка приложений сервер для обновлений, если таковые имеются, проверьте, обновляется ли патчер, если необходимо, патчер приложений
  2. Патчер выполняется как отдельный процесс, загружает обновление и уведомляет приложение о запросах на его установку
  3. Вы согласны с тем, что приложение завершает работу с уведомлением патчера, патчер распаковывает данные, заменяет exe, делает дополнительные вещи, которые могут понадобиться новой версии, и запускает ее и завершает
1
ответ дан dtech 25 August 2018 в 11:10
поделиться
Другие вопросы по тегам:

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