Подтвердить что ты не робот

Я не "получаю", как программа может обновлять себя. Как я могу обновить программное обеспечение?

Скажем, я создаю файл .exe, и все персиковое. Замечательно, что это работает.

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

Кажется, я не могу обернуться вокруг проблемы.

Спасибо.

EDIT: Прошу прощения за путаницу, но я имел в виду более разумный ответ. Есть ли что-то особенное в моем коде, которое мне нужно разрешить для обновления?

Например, если я хочу добавить новую функцию, как добавить "метод" к уже упакованному .exe?: S Это имеет меня в вертлюге.

4b9b3361

Ответ 1

Вам нужно посмотреть Нажмите "Развернуть развертывание".

Включение ClickOnce позволяет публиковать приложения на базе Windows для совместного использования веб-сервера или сетевого файла для упрощенной установки. Visual Studio предоставляет полную поддержку публикации и обновления приложений, развернутых с помощью ClickOnce. Развертывание ClickOnce доступно для проектов, созданных с помощью Visual Basic, Visual С# и Visual J #, но не для Visual С++.

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

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

Ответ 2

Популярным решением является фактически отдельный процесс замены необходимых файлов.

Вы когда-нибудь замечали, что Firefox должен перезагружаться всякий раз, когда он обновляется? Это связано с тем, что отдельный процесс (updater.exe) загружает файлы, закрывает firefox, заменяет файлы, а затем снова запускает firefox.

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

Ответ 3

Обычно процесс выглядит следующим образом:

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

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

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

Ответ 4

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

Ответ 5

Для окон (как правило, из-за блокировки окна .exe файла во время его выполнения)

  • Программное обеспечение определяет необходимость обновления
  • Программное обеспечение запускает исполняемое исполняемое исполняемое обновление (на данный момент программное обеспечение выходит)
  • Обновление загружаемых файлов в какую-то временную папку
  • Обновление применяет исправления
  • Обновление перезапускает программное обеспечение

Ответ 6

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

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

Ответ 7

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

Ответ 8

Вы не изменяете свой текущий .exe.

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

Ответ 9

С кодовой точки зрения мне нравится подход, состоящий из простого интерфейса IRun и другого, называемого IUpdated:

public interface IRun()
{
  public void Run();
}

public interface IUpdated()
{
  public void Update();
}

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

Основной исполняемый файл приложения выполнит следующие действия:

  • Прочитайте файл updater.cfg, подключитесь к предоставленному местоположению и проверьте обновления обновления.
  • Если есть обновления, загрузите обновленные dlls и updater.cfg
  • Использование утилиты обновления updater.dll и запуск метода Update().

Метод обновления выполняет те же действия для обновлений для реального приложения.

Наконец

  1. Загрузите "core.dll" и запустите метод Run().

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