Исправьте приложение

Я должен создать стандартную программу исправления для своего приложения, это является действительно маленьким, но я должен обновлять его ежедневно или еженедельно как делает xdelta, и другие работают? я читал вокруг о тех, но я не понял большую часть его, пользователю нельзя предложить вообще

10
задан user302823 10 April 2010 в 21:40
поделиться

6 ответов

Хорошо, этот пост был помечен мета из-за предоставленных ответов, поэтому я собираюсь взвесить это.

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

Есть два способа обновить двоичный образ: заменить его собственной программой или заменить его с помощью какой-либо формы управления пакетами. Например, системы Linux используют rpm и т. Д. Для распространения обновлений пакетов. В среде Windows ваши возможности ограничены тем, что установлено, если вы не находитесь в корпоративной сети. Если да, попробуйте упаковку WSUS и MSI. Это облегчит вам жизнь, или ClickOnce, как кто-то упомянул.

Однако, если вы этого не сделаете, вам необходимо иметь в виду следующее:

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

Я не думаю, что для ваших целей xdelta в любом случае даст вам много пользы. Просто замените все изображение.

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

1
ответ дан 4 December 2019 в 04:21
поделиться

Что это за приложение? Возможно, вы могли бы использовать clickonce для развертывания приложения.Clickonce очень легко позволяет отправлять обновления вашим пользователям.

Вкратце: Clickonce создает установку, которая позволяет вашим пользователям устанавливать приложение с веб-сервера или из общей папки, вы включаете автоматические обновления, и всякий раз, когда вы размещаете новую версию приложения на сервере, приложение будет автоматически (или попросите пользователя) обновить приложение. Фреймворк clickonce позаботится обо всем остальном - загрузит обновление, выяснит, какие файлы были изменены и должны быть загружены снова, и выполнит обновление. Вы также можете проверить / выполнить обновление программно .

Тем не менее, clickonce оставляет вам мало контроля над фактической процедурой установки, и у вас нет даже близко к свободе создания собственного .msi.

1
ответ дан 4 December 2019 в 04:21
поделиться

В зависимости от размера вашего приложения, вы, вероятно, разделите его на несколько dll, exe и других файлов.

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

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


Edit:

Другой способ сделать это - (после компиляции нового exe) сравнить новый exe со старым и просто отправить различия программе обновления. Затем он внесет соответствующие изменения.

0
ответ дан 4 December 2019 в 04:21
поделиться

Вы можете разместить свою функцию в отдельной DLL. Таким образом, вы можете просто заменить DLL вместо исправления всей программы. (Предполагается, что Windows является целевой платформой для программы на C #.)

-1
ответ дан 4 December 2019 в 04:21
поделиться

Я бы не стал использовать решение для исправлений, поскольку оно действительно усложняет ситуацию, когда у вас много ревизий. Как решение для исправлений будет обрабатывать различные версии, требующие обновления? Что если пользователь A отстает от текущей ревизии на 10 ревизий? Или 100 ревизий и т.д.? Вероятно, будет лучше просто загрузить последние exe(s) и dll(s) и заменить их.

Тем не менее, я думаю, что этот вопрос SO о тихих обновлениях может помочь вам.

1
ответ дан 4 December 2019 в 04:21
поделиться

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

Он называется wyUpdate.

Хотя клиент обновления (wyUpdate) имеет открытый исходный код, для создания и публикации патчей используется платный инструмент wybuild.

1
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

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