Как программа запуска приложений обновляет себя? - PullRequest
19 голосов
/ 20 января 2012

Пусковые установки являются наиболее распространенными в играх.Подумайте о League of Legends, Starcraft II или почти любой MMO.Перед тем, как начать игру, у вас есть небольшое приложение запуска, которое заботится об обновлениях и исправлениях.

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

Мой конкретный проект будет на C #, но меня интересует концептуально подобное C ++ и/ или Java-решения для дальнейшего использования.

Ответы [ 3 ]

5 голосов
/ 20 января 2012

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

2 голосов
/ 20 января 2012

Если вы находитесь в мире .NET, существует стратегия развертывания под названием «Нажмите один раз».Это было создано для решения проблемы, которую вы описали ...

ClickOnce - это технология развертывания, которая позволяет создавать самообновляющиеся приложения на базе Windows, которые можно устанавливать и запускать с минимальным взаимодействием с пользователем.Развертывание ClickOnce преодолевает три основные проблемы, присущие развертыванию:

Источник: Click Once

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

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

1 голос
/ 20 января 2012

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

...