У нас есть приложение .Net, которое использует ClickOnce для автоматического обновления. Но проблема с Click Once заключается в том, что все сборки получают обновления независимо от каких-либо изменений в проекте или нет. Я думаю, что вручную обновляет толькоизменил dlls в предыдущую опубликованную папку ClickOnce и обновил манифест с помощью MageUI.exe. Я также думаю, что до инкремент изменил сборки, чтобы мы могли отслеживать, какие сборки изменились, просмотрев папку пользователя пользователя, в которой установлено приложение ClickOnce. Я хотел бы знать, подходит ли это подход? Благодарю.Поддержание версии сборки в ClickOnce?
ответ
Я думаю, что это не нужно. В то время как диалог обновления обеспечивается ClickOnce не говорит вам так, ClickOnce не будет загружать файлы, если выполняются следующие условия: хэш
- этот файл является тем же
- временной штамп файла является то же самое.
- Для сборок, может возникнуть необходимость в сильной назвать их
Вместо этого он будет копировать файлы из предыдущей версии.
Так что если вы используете сильные имена и не перестраиваете сборки, когда они не изменились, ClickOnce должен делать именно то, что вы хотите.
Here является официальным источником говоря
При обновлении приложения ClickOnce не загружает все файлы для новой версии приложения, если файлы не изменились. Вместо этого он сравнивает хеш-подписи файлов, указанных в манифесте приложения для текущего приложения, против подписей в манифесте для новой версии. Если подписи файлов отличаются, ClickOnce загружает новую версию. Если сигнатуры совпадают, файл не изменился с одной версии на другую. В этом случае ClickOnce копирует существующий файл и использует его в новой версии приложения. Этот подход не позволяет ClickOnce загружать все приложение снова, даже если изменились только один или два файла.
Да, это правда, но когда решение построено, все манифеста манифеста меняются независимо от того, есть какие-то изменения в коде или нет. –
Да, вы правы. Вы должны были бы поместить проекты в разные решения и вручную обновлять ссылки на сборку в своем «основном» проекте. Я согласен с тем, что это гораздо менее удобно, чем все они в одном решении. Но все же IMO намного лучше, чем пытаться заставить ClickOnce выполнять частичное обновление при изменении хеш-подписей. – wkl
Для нашего приложения нам также необходимо установить флажок «Полноправное приложение» в настройках проекта для частичного обновления DLL, а не просто сильно называть – VMAtm
- 1. Утилита .NET ClickOnce и неправильные сборки, вызванные после обновленной версии
- 2. ClickOnce неправильно обнаруживает сервер новой версии версии
- 3. Поддержание версии разработчика веб-приложения
- 4. Обновление ClickOnce, управление перескакиванием версии
- 5. Отображение версии развертывания ClickOnce в приложении WPF
- 6. Поддержание разной сборки для разных ветвей
- 7. Путь к каталогу последней версии приложения ClickOnce
- 8. Обновление сборки без развертывания clickonce снова
- 9. Обновления ClickOnce, оставляющие ранние версии на диске
- 10. Обновление приложения ClickOnce без набегания номера версии
- 11. Как опубликовать приложение ClickOnce, используя определение сборки?
- 12. Как развернуть две версии ClickOnce одновременно?
- 13. ClickOnce проверяет обновления, начиная со следующей версии
- 14. Ошибка развертывания ClickOnce из-за Microsoft.VisualStudio.Shell.Interop.9.0 Версии 9.0.0.0, отсутствующей в глобальном кэше сборки (GAC)
- 15. Разный URL-адрес ClickOnce для каждой сборки?
- 16. Запретить развертывание отладочной сборки с помощью ClickOnce
- 17. Обеспечение последней версии с развертыванием clickonce
- 18. Изменение версии сборки в C#
- 19. Имена и версии сборки
- 20. Загрузка последней версии сборки
- 21. Как изменить номер версии сборки после сборки?
- 22. Развертывание ClickOnce с помощью MSBuild -> Как передать текущий номер сборки для версии приложения/или автоинкремента
- 23. Поддержание различных сборок сборки через модули в Android Studio
- 24. Поддержание нескольких рабочих пространств для каждой сборки в Hudson
- 25. Развертывание ClickOnce с сборками Roslyn: несоответствие версии манифеста
- 26. Получение версии сборки от AssemblyInfo.cs
- 27. Версия файла против сборки версии
- 28. System.Addin & ClickOnce
- 29. Как запустить этап сборки публикации/clickonce в Jenkins (VS2012)
- 30. Изменения, внесенные в событие сборки, не сохраняются при публикации clickonce
Звучит как проблема, ожидающая случившегося, если вы спросите меня. Что делать, если один клиент пропускает определенное обновление «в промежутке». Он получит новую версию, но не может содержать некоторые изменения, внесенные в предыдущую версию, которые он не получил. – user1429080
Итак, после клика после установки мы проверили verifiy версию # всех DLL. Итак, если update 1 имеет dll с версией # 1.1.1.1, а update 2 имеет другую dll с версией 1.1.1.2, то обновите 3 щелчка, как только установка должна иметь dll 1 с версией 1.1.1.1 и dll 2 с версией 1.1.1.2 вдоль с изменениями, которые вносятся в обновление 3. Фактически, последний клик после выпуска будет обновлен для добавления инкрементных dll с использованием mage ui, и все клиенты получат такую же версию, поэтому, если клиент находится в более старой версии, он тоже получит обновлено до последнего. –
Но разве это не означает, что каждый выпуск должен иметь все во всех предыдущих выпусках + изменения для текущей версии? Смысл, каждый релиз станет «более толстым», пока в какой-то момент в следующем выпуске не должно быть всего включенного?В любом случае, насколько я могу судить, единственный способ поддержать обновление от * любой старой версии до текущей версии - включить все в каждую версию. Если у вас ограниченный набор пользователей и вы можете контролировать, что они регулярно обновляются, то, возможно, это может быть сделано для работы ... – user1429080