Автообновление приложения Windows без использования отдельной программы - PullRequest
4 голосов
/ 26 февраля 2012

Я ищу способы включить автоматическое автоматическое обновление для моего приложения Windows. Процесс обновления должен быть таким, чтобы только измененные файлы загружались и заменялись. Итак, я планировал интегрировать его с моим приложением. Учитывая возможность переименования / перемещения исполняемого файла (или его папки), можно ли использовать приложение для обновления? Опасно ли переименование / перемещение исполняемого файла? Каковы все преимущества использования отдельной программы обновления по сравнению с использованием самого приложения для ее обновления?

Спасибо!.

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

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

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

0 голосов
/ 26 февраля 2012

Операционная система Windows не позволит вам перезаписать работающее приложение. Вам нужно другое приложение, чтобы сделать это. Один процесс, который у меня есть, заключается в том, что у меня загружаются файлы приложения-загрузчика, но если они используются, им присваивается расширение .update.

Мое приложение, когда оно запускается, ищет любые файлы с таким расширением в папке и подпапках. Если он найдет его, он запустит приложение-патчер и завершит свою работу. Патчер ждет, пока программные файлы освободятся, а затем переместил файлы .update поверх файлов приложения и перезапускает приложение.

Требуется доля секунды для запуска при наличии обновлений, но пользователь не замечает.

Дополнительно: Преимущество отдельной программы обновления заключается в модульности и чистоте. Вы можете повторно использовать программное обеспечение для обновления, и его код, вероятно, не является основным для того, что делает ваше приложение. Плюс, если вы не сделаете его многопоточным, это повлияет на интерактивность вашего приложения во время его работы.

Я видел, как многие программисты используют монолитный подход к развертыванию (со статическими сборками), однако модульность по-прежнему имеет значительные преимущества, если вы спросите меня.

...