2012-04-26 4 views
3

Google Chrome браузер имеет супер-гладкую систему обновления в Windows. Он не требует административных привилегий, и он обновляется без вмешательства пользователя.Как создать самообновление в стиле Chrome в Windows?

Я пытаюсь создать что-то похожее на это, и был бы признателен за любые советы о том, как это сделать.

Первая часть их трюка заключается в том, что они не устанавливаются в Program Files, как это делают большинство программ Windows, вместо этого они устанавливаются в C:\Users\USER_NAME\AppData\Local\Google\Chrome\Application. Это позволяет их программному файлу изменять себя без административных привилегий.

Внутри этого каталога я вижу, что есть не только chrome.exe, но и old_chrome.exe. Поиск в Интернете, я обнаружил, что хром поддерживает себя как old_chrome, если обновление плохо, он все равно может что-то запустить.

Как сделать это, чтобы создать вспомогательное приложение, входящее в состав установочного пакета, которое вы передаете выполнение (я предполагаю, что это как-то выполнимо), и это вспомогательное приложение выполняет переименование и перезапуск файла chrome.exe, когда готово? (Если это так, предположительно, это вспомогательное приложение, в свою очередь, удаляется chrome.exe при запуске, объясняя, почему я не вижу его сидящим.) Нет никакого способа просто переименовать chrome.exe в old_chrome.exe и скопировать и запустить новый chrome.exe. ?

Если это лучший способ сделать что-то вроде этой работы, есть ли какие-либо готовые решения для этого, чтобы я мог просто влиться в мой проект, учитывая, что это похоже на довольно общую функциональность, или мне придется Что-то вроде этого скажешь?

В качестве альтернативы, если есть лучший способ, что это такое? (Для того, что стоит, подход Chrome кажется мне намного более элегантным и простым, чем новый подход Mozilla с использованием сервисов)

+0

Это * может * быть подходящим для программистов.stackexchange.com, но даже тогда это слишком большая проблема –

ответ

1

Хорошо, получилось, что это работает.

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

Затем вы можете просто выполнить новый исполняемый файл из старого исполняемого процесса, а затем выйти из старого.

Voila, без эскалации своп новой версии для старого.

 Смежные вопросы

  • Нет связанных вопросов^_^