Создание апдейтера

2

VS 2008 SP1

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

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

Я просто хочу быть уверенным, потому что я не могу заменить установленные файлы на обновленные. Когда приложение будет запущено. Так что действительно приложение не может удалить/заменить себя.

Итак, я думал, что могу загрузить в другой каталог, если программа установлена ​​в этом каталоге "program files/application/1.0.0", тогда я могу загрузить файлы в "program files/application/1.0.1" ".

Однако, когда программа перезагружается, как она может знать, что она должна выполняться из каталога 1.0.1?

Я не могу использовать clickonce или блок обновления для этого.

Большое спасибо за любой совет,

  • 0
    ClickOnce имеет некоторые из этих функций, я думаю.
  • 0
    Почему вы не можете использовать ClickOnce?
Теги:

6 ответов

1
Лучший ответ

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

c:\program files\mycompany\myapp\loader (the newer version will point to the latest directory)
c:\program files\mycompany\myapp\v1.0
c:\program files\mycompany\myapp\v1.1

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

  • 0
    Есть ли пример кода, который показывает, что вы подразумевали под оберткой, которая проверяет версию и самостоятельно перезаписывает?
  • 0
    Извините за супер поздний ответ. Быстрый пример - вы пишете консольное приложение с файлом конфигурации, который обновляется. Это загружает из центрального местоположения. Этот файл конфигурации может указывать на каталог и запускать соответствующее приложение. Вы могли бы сделать это более разумным, если бы «обновляли» (или удаляли) старые вещи.
3

Хорошим вариантом является создание независимого приложения Updater.

Программа обновления загрузит новейшую версию и убьет/заменит старый.

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

Обновление может проверить, запущено ли приложение, и попросить пользователя выйти из приложения или убить его самостоятельно.

Простите мой английский...

Удачи.

2

Все это уже сделано для вас, если вы используете развертывание ClickOnce (свойства проекта, публикация).

  • 0
    roboUK упомянул, что ClickOnce не вариант.
  • 0
    Для этого приложения я не могу использовать clickOnce. Любые другие идеи будут приветствоваться.
1

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

Я сделал ClickOnce Deployment и независимое приложение для обновления, они оба работают хорошо. Очевидно, что у вас будет больше гибкости над обновляющим приложением, которое вы создаете самостоятельно, однако ClickOnce также может быть настроен для установки таких предварительных условий, как .NET Framework, установщик Windows и т.д.... для запуска вашего приложения.

1

Wix Clickthrough может удовлетворить ваши потребности: http://wix.sourceforge.net/clickthrough.html

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню