Подтвердить что ты не робот

При развертывании ClickOnce оставляет несколько версий (да, более двух)

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

В соответствии с документацией и другими вопросами о переполнении Qaru предполагается оставить только текущую и предыдущую версии на диске. Однако каждый раз, когда я развертываю проект и обновляю клиент, я получаю еще одну копию всех файлов 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 только кажущимся таинственным черным ящиком?

4b9b3361

Ответ 1

Я думаю, что на самом деле я наконец понял это. По какой-то неизвестной (и неприемлемой, откровенно) причине очистка старых версий не произойдет, если новая версия запущена - она ​​просто терпит неудачу.

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Мы попытались реализовать код, который частично удалит некоторые старые папки в каталоге ..\Apps\2.0, однако при откате назад к предыдущей версии, если предполагается, что предыдущая версия находится там, но была удалена нашим кодом, ClickOnce doesn ' t проверить, удалили ли его и перезагрузили, вместо этого он предполагает, что он все еще там, а затем установка становится поврежденной, и ИТ-персоналу необходимо вручную переустановить для каждого пользователя, прежде чем они смогут снова использовать приложение! Ужасно, если у вас 50 пользователей.

Если кто-то знает способ заставить ClickOnce повторно загружать все зависимые файлы заново до/после обновления, я хотел бы знать!

Ответ 5

Как удалить

Очистить кеш-клик после клика

Из документов:

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