2012-02-26 2 views
4

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

Спасибо !.

+0

Пользователи часто не хотят «тихих автоматических обновлений», и в общем случае они невозможны из-за разрешений/привилегий/UAC. Вам нужен новый план обновления. –

+1

Приложение установлено в данных локального приложения (для поддержки автоматических обновлений), которое всегда имеет полные права доступа. – simha

ответ

0

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

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

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

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

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

+2

Изменение/Замена/Удаление исполняемого исполняемого файла может не сработать, но переименование/перемещение выполняется в xp, vista и windows 7. – simha

+0

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

1

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

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