Как предотвратить дублирование обязательных файлов в папке развертывания приложения? - PullRequest
1 голос
/ 05 октября 2010

У меня есть приложение .NET 3.5 SP1 WinForms. Я настроил его для развертывания ClickOnce со следующими настройками:

Снимок экрана предварительных условий и параметров развертывания в Visual Studio 2008

  • Публикация в папку: \\ fileserver \ installers \ myapp \
  • Предварительные требования: Установщик Windows 3.1, .NET Framework 3.5 SP1
  • Загрузите необходимые компоненты из следующего расположения: \\ fileserver \ installers \ common \
  • Приложение доступно в автономном режиме (устанавливается в «Установка и удаление программ» и «Пуск»)

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

При тестировании установки на машине без .NET 3.5 все работает нормально. Он устанавливает предварительные требования и приложение и запускается без проблем.

Проблема в том, что каждый раз, когда я развертываю приложение (с помощью кнопки «Опубликовать»), Visual Studio 2008 настаивает на копировании всех необходимых файлов / папок с моего ПК для разработки в сетевое расположение (installers \ myapp). Это приводит к тому, что мое 20-мегабайтное приложение в папке занимает около 200 мегабайт. Это эффективно дублирует все, поскольку предварительные требования ~ 200 МБ уже находятся в папке installers \ common. Как я уже сказал, он устанавливается нормально. Он даже отлично устанавливается, если я удаляю предварительные требования, которые VS помещает в папку myapp, предположительно потому, что установщик в любом случае получает их из общего расположения (как указано в диалоговом окне предварительных требований).

Возможно, это тривиальная проблема, поскольку ничего не происходит неправильно, и она будет работать нормально, но это раздражает по двум причинам:

  1. Это замедляет развертывание, поскольку мне приходится передавать более 200 мегабайт по сети каждый раз, когда я публикую небольшое изменение в приложении
  2. Это теряет место на нашем файловом сервере

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

1 Ответ

0 голосов
/ 24 октября 2010

Одна вещь, которую вы можете сделать, это выполнить свои собственные предварительные условия с помощью Bootstrapper Manifest Generator. Задайте URL-адрес в том месте, где вы хотите выполнить развертывание. Затем установите в VS параметр «скачать с местоположения поставщика».

Он загрузит развертывание с URL-адреса, заданного вами в BMG, и не будет развертывать необходимые компоненты при каждой публикации приложения ClickOnce.

...