Я должен создать стандартную программу исправления для своего приложения, это является действительно маленьким, но я должен обновлять его ежедневно или еженедельно как делает xdelta, и другие работают? я читал вокруг о тех, но я не понял большую часть его, пользователю нельзя предложить вообще
Хорошо, этот пост был помечен мета из-за предоставленных ответов, поэтому я собираюсь взвесить это.
xdelta - это программа для двоичных различий, которая вместо того, чтобы предоставить вам полный образ, дает вам только то, что изменилось и где. Пример текстового различия будет иметь знаки + и - перед строками текста, показывая вам, что они были добавлены или удалены в новой версии.
Есть два способа обновить двоичный образ: заменить его собственной программой или заменить его с помощью какой-либо формы управления пакетами. Например, системы Linux используют rpm и т. Д. Для распространения обновлений пакетов. В среде Windows ваши возможности ограничены тем, что установлено, если вы не находитесь в корпоративной сети. Если да, попробуйте упаковку WSUS и MSI. Это облегчит вам жизнь, или ClickOnce, как кто-то упомянул.
Однако, если вы этого не сделаете, вам необходимо иметь в виду следующее:
Я не думаю, что для ваших целей xdelta в любом случае даст вам много пользы. Просто замените все изображение.
Измените , если пользователю не должно быть предложено вообще, просто перезагрузите приложение. Однако я настоятельно рекомендую проинформировать пользователя о том, что вы разговариваете в его сети, и попросить разрешения сделать это / включить режим обновления вручную, иначе такие люди, как я, заблокируют его.
Что это за приложение? Возможно, вы могли бы использовать clickonce для развертывания приложения.Clickonce очень легко позволяет отправлять обновления вашим пользователям.
Вкратце: Clickonce создает установку, которая позволяет вашим пользователям устанавливать приложение с веб-сервера или из общей папки, вы включаете автоматические обновления, и всякий раз, когда вы размещаете новую версию приложения на сервере, приложение будет автоматически (или попросите пользователя) обновить приложение. Фреймворк clickonce позаботится обо всем остальном - загрузит обновление, выяснит, какие файлы были изменены и должны быть загружены снова, и выполнит обновление. Вы также можете проверить / выполнить обновление программно .
Тем не менее, clickonce оставляет вам мало контроля над фактической процедурой установки, и у вас нет даже близко к свободе создания собственного .msi.
В зависимости от размера вашего приложения, вы, вероятно, разделите его на несколько dll, exe и других файлов.
Можно сделать так, чтобы основная программа проверяла наличие обновлений. Если обновления доступны, основная программа закрывается, и за дело берется программа обновления - обновляет старые файлы, создает новые и удаляет текущие файлы в соответствии с инструкциями, отправленными вместе с файлом исправления (вероятно, в сжатом формате, например .zip), загруженным программой обновления.
Если ваше приложение небольшое (скажем, один exe), достаточно, чтобы программа обновления просто заменила один exe.
Edit:
Другой способ сделать это - (после компиляции нового exe) сравнить новый exe со старым и просто отправить различия программе обновления. Затем он внесет соответствующие изменения.
Вы можете разместить свою функцию в отдельной DLL. Таким образом, вы можете просто заменить DLL вместо исправления всей программы. (Предполагается, что Windows является целевой платформой для программы на C #.)
Я бы не стал использовать решение для исправлений, поскольку оно действительно усложняет ситуацию, когда у вас много ревизий. Как решение для исправлений будет обрабатывать различные версии, требующие обновления? Что если пользователь A отстает от текущей ревизии на 10 ревизий? Или 100 ревизий и т.д.? Вероятно, будет лучше просто загрузить последние exe(s) и dll(s) и заменить их.
Тем не менее, я думаю, что этот вопрос SO о тихих обновлениях может помочь вам.
Существует решение для эффективного исправления - оно работает на всех платформах и может работать в совершенно бесшумном режиме, не позволяя пользователю ничего заметить. На .NET оно обеспечивает бесшовную интеграцию процесса обновления с помощью пользовательского UserControl, декларативно привязанного к событиям из вашего собственного пользовательского интерфейса.
Он называется wyUpdate.
Хотя клиент обновления (wyUpdate) имеет открытый исходный код, для создания и публикации патчей используется платный инструмент wybuild.