Можно ли настроить ClickOnce на удаление старых опубликованных каталогов? - PullRequest
22 голосов
/ 01 октября 2010

Может ли ClickOnce быть настроен для удаления из старых опубликованных каталогов?

Или

Кто-нибудь написал код, который удалит из этих каталогов публикации (возможно,сохраняя последние 10)?

В настоящее время каждый раз, когда выполняется публикация ClickOnce, на сервере IIS создается новый каталог.Этот новый каталог содержит копию всего приложения, которое загружается.Старые каталоги больше не используются и просто занимают много места.

Вот пример создаваемых имен каталогов.Как вы можете видеть, номер версии приложения используется в имени.
EduBenesysNET_1_0_1_0
EduBenesysNET_1_0_1_1
….
EduBenesysNET_1_0_1_192
EduBenesysNET_1_ * 101 * на основе * 191 * 0 на основе (у нас было 191)строит с каждым каталогом, оставшимся там.При размере одной сборки около 50 МБ вы можете увидеть, как хранение старых каталогов на жестком диске начнет разрушаться.

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

Ответы [ 2 ]

13 голосов
/ 01 октября 2010

Хороший вопрос (+1) - можно подумать, что это как-то возможно ...

Глядя немного ближе, мы обнаруживаем, что наблюдаемое поведение публикации на самом деле не является функцией технологии ClickOnce, а является одним из Мастер публикации Visual Studio - см., Например, раздел Структура папки публикации ClickOnce in Процесс публикации ClickOnce :

Если вы вручную создаете или обновляете публикацию приложения ClickOnce, используя Mage или пользовательский инструмент, вы не ограничены этой папкой и структурой файла . Для любой конкретной публикации ClickOnce цепочка зависимостей включает следующее: [...] [emphasis mine]

Пошаговое руководство : развертывание приложения ClickOnce вручную дает тот же вывод, т. Е. Структура папок, используемая VS, является просто (разумным) соглашением / подходом.

К сожалению, мастер публикации VS не предлагает удаления старых версий, по крайней мере, он нигде не виден и не документирован. Однако, учитывая, что полученная структура папок является просто артефактом процесса сборки, вы можете также добавить пользовательский шаг сборки, выполнив это просто - выяснение деталей (то есть доступ к свойствам автоматизации VS для получения последней опубликованной версии и т. Д.) за пределами вашего вопроса, хотя;)

Относительно вашего подвопроса:

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

Определенно, это не проблема, это зависит только от того, сколько из них вы хотите сохранить для операций отката, см., Например, Можно ли удалить предыдущие старые версии из папки публикации, созданной ClickOnce?

2 голосов
/ 03 октября 2010

Краткий ответ: это не то, что встроено в развертывание Visual Studio или ClickOnce, и вам нужно будет найти другой способ сделать это, возможно, с помощью сценария, который вы запускаете на своем сервере.

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

...