Я не & ldquo; получаю & rdquo; как программа может обновлять себя Как я могу сделать свое обновление программного обеспечения?

Для компиляции вы можете просто инициировать вызов оболочки для компилятора csc.

C # Примеры угловых оболочек

РЕДАКТИРОВАТЬ: Или еще лучше , используйте CodeDOM, как предложил Нолдорин ...

23
задан Sergio Tapia 17 November 2009 в 12:44
поделиться

9 ответов

Вам необходимо ознакомиться с Click Once Deployment .

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

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

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

15
ответ дан 28 November 2019 в 18:31
поделиться

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

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

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

17
ответ дан 28 November 2019 в 18:31
поделиться

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

  • Программное обеспечение определяет, что оно нуждается в обновлении
  • Программное обеспечение запускает исполняемый файл пакетного обновления (на этом этапе программа завершается)
  • Обновление загружает необходимые файлы в какую-то временную папку
  • Обновление применяет исправления
  • Обновление перезапускает программное обеспечение
1
ответ дан 28 November 2019 в 18:31
поделиться

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

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

1
ответ дан 28 November 2019 в 18:31
поделиться

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

1
ответ дан 28 November 2019 в 18:31
поделиться

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

6
ответ дан 28 November 2019 в 18:31
поделиться

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

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

1
ответ дан 28 November 2019 в 18:31
поделиться
sudo easy_install mysql-python

установит модуль MySQLdb, чтобы вы могли работать с MySQL из Python, или, если вы хотите работать с virtualenv (что вам следует),

sudo easy_install virtualenv virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PIP_VIRTUALENV_BASE=$WORKON_HOME
source /usr/local/bin/virtualenvwrapper_bashrc
mkvirtualenv mysite
pip install mysql-python django

поместит вас в virtualenv с текущая установка django (вы можете указать, какая версия, например, django == 1.1.1) и установленный модуль MySQLdb. Использование virtualenv позволит вам иметь отдельные среды для разных проектов, поэтому вы можете устанавливать разные модули и даже использовать разные версии этих модулей (или Python) для разных проектов. Чтобы оставить вас virtualenv, просто введите команду

deactivate

или, чтобы переключиться на среду 'foo' type

workon foo

Вам также следует, если вы собираетесь использовать virtualenv, добавить эти три строки в свой ~ / .bash_profile (на OS X, ~ / .bashrc обычно в Linux): ClickOnce на самом деле тоже очень хороший метод, возможно, лучше, но дает меньше контроля. Главный исполняемый файл приложения достаточно прост, чтобы избежать его обновления или необходимости обновлять его.

0
ответ дан 28 November 2019 в 18:31
поделиться

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

  • пользователь запускает приложение
  • приложение запускает «средство обновления» (другую программу)
  • средство обновления извлекает из Интернета, если более новая версия существует
  • , если это так, предложите пользователю обновить
  • , который принимает пользователь, программа обновления загружает новый установочный пакет (который может быть инкрементным)
  • программа обновления закрывает приложение (или, лучше, спрашивает пользователя для этого) и запускает новый установщик.
16
ответ дан 28 November 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: