Как самостоятельно обновить приложение во время работы - PullRequest
0 голосов
/ 19 марта 2019

У меня есть самообновляющееся автономное приложение в Windows. Текущий процесс обновления выглядит так:

  1. Главное приложение загружает файл с сервера и сохраняет его на диск с временным именем.
  2. Главное приложение выполняет вторичное приложение с параметрами.
  3. Выход из основного приложения.
  4. Вторичное приложение переименовывает временный файл, чтобы перезаписать основной app.exe.
  5. Второстепенное приложение выполняет основное приложение.
  6. Выход из вторичного приложения.

Вышеуказанные работы. Но мне интересно, возможно ли это сделать без использования дополнительного приложения? Особенно с Голангом.

Ответы [ 2 ]

3 голосов
/ 19 марта 2019

Исполняемый файл заблокирован во время работы. Однако вы можете переименовать файл, даже если вы не можете его удалить. Поэтому загрузите новое приложение во временный файл, переименуйте app.exe в app-old.exe, а затем переименуйте временный файл в app.exe. Также удалите app-old.exe перед загрузкой, начиная с увлечения переименованием.

2 голосов
/ 19 марта 2019

Нет.Windows блокирует запись или удаление исполняемого файла или DLL, когда есть какие-либо процессы, выполняющие его.

См., Например, этот вопрос SO - Блокировка исполняемых файлов: Windows делает, Linux нет.Почему?

Если все в порядке, чтобы запустить устаревшую версию приложения, и вам нужно только обновить ее при следующем запуске (пропуская шаг Secondary app executes main app. перезапускаприложения), а затем см. Sami Sallinen для переименования запущенных EXE и DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...