Развертывание ClickOnce оставляет несколько версий (да, больше чем два)

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

Согласно документации и другим вопросам о Переполнении стека, это, как предполагается, только оставляет текущие и предыдущие версии на диске. Однако каждый раз, когда я развертываю проект и обновляю клиент, я получаю другую копию всего EXE, DLL и файлов данных. Я не вношу изменений вообще в приложение, просто продвижение развертываются снова в Visual Studio.

Как я решаю эту проблему?

Проблема, кажется, происходит и в Windows 7 и в Windows XP, а также 64-разрядном и 32-разрядном Windows.

Я сделал разность папок, где версия установлена, и следующие файлы отличаются:

MyApp.exe.manifest
MyApp.exe.cdf-ms
MyDll1.cdf-ms
MyDll2.cdf-ms

Никакие фактические исполняемые файлы не отличаются, ни MyApp.manifest, MyDll1.manifest, и т.д.

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

ClickOnce является просто очевидным таинственным черным квадратом?

20
задан Peter Mortensen 11 September 2012 в 23:40
поделиться

4 ответа

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

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

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

6
ответ дан 30 November 2019 в 01:35
поделиться

Вы проверяете их сразу? Они не исчезают даже через день или около того? Предполагается, что служба ClickOnce удаляет старые версии. Если вы устанавливаете последнюю версию в качестве обязательного обновления, удаляет ли она другие версии? (Для этого установите минимальную требуемую версию в диалоговом окне "Обновления" на ту же версию, которую вы устанавливаете).

0
ответ дан 30 November 2019 в 01:35
поделиться

Служба мусорщика является частью механизма ClickOnce; он запускается автоматически, и вы не можете получить к нему прямой доступ. Он должен приходить и очищать старые версии.

Вопрос по минимальной версии. Если вы развертываете новую версию и устанавливаете минимальную требуемую версию на новую версию №, обновляет ли приложение до этой версии? Затем оставляет прежние на диске?

Есть ли какой-нибудь узор, который вы можете увидеть? Есть ли ограничение на количество кэшируемых развертываний?

В теневых папках есть что-то, что щекочет по краям мою память; файлов на самом деле нет. Я проведу небольшое исследование, просмотрю свои записи и посмотрю, что найду.

Что это за приложение? WinForms / WPF / VSTO?

Когда вы говорите, что это кешированные папки, какая это папка? Для приложения winforms, например, есть две папки, созданные для каждой версии (xxxxtion ... и xxxxexe ... или что-то в этом роде), плюс куча папок - по одной для каждой сборки, включенной в развертывание - это кешированные версии сборок, чтобы не загружать их каждый раз, если они не изменились. Вы видите кратные папки xxxxtion и xxxxexe?

1
ответ дан 30 November 2019 в 01:35
поделиться

Как удалить

Очистить кэш Click-Once (версионность)

Из документации:

Приложения ClickOnce, размещенные в Интернете, ограничены в объеме пространства, которое они могут занимать, квотой, ограничивающей размер кэша ClickOnce. Размер кэша применяется ко всем онлайн-приложениям пользователя; одно частично доверенное онлайн-приложение ограничено в занятии половины пространства квоты. Установленные приложения не ограничены размером кэша и не учитываются в лимите кэша. Для всех приложений ClickOnce кэш сохраняет только текущую версию и ранее установленную версию. По умолчанию клиентские компьютеры имеют 250 МБ памяти для хранения онлайн-приложений ClickOnce. Файлы данных не учитываются в этом лимите. Системный администратор может увеличить или уменьшить эту квоту на конкретном клиентском компьютере, изменив ключ реестра HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\OnlineAppQuotaInKB, который представляет собой значение DWORD, выражающее размер кэша в килобайтах. Например, чтобы уменьшить размер кэша до 50 МБ, измените это значение на 51200

-1
ответ дан 30 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

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