Каков наилучший способ создания развертываний ClickOnce

Наша команда разрабатывает распределенные приложения winform. Мы используем ClickOnce для развертывания и очень довольны им.

Тем не менее, мы обнаружили, что проблема с ClickOnce заключается в создании развертываний. У нас есть стандартные среды dev/test/production и они должны иметь возможность создавать развертывания для каждого из них, которые устанавливают и обновляются отдельно друг от друга. Кроме того, мы хотим контролировать, какие сборки будут развернуты. Просто потому, что сборка была скомпилирована, не означает, что мы хотим, чтобы она была развернута.

Очевидным первым выбором для создания развертываний является Visual Studio. Тем не менее, VS действительно не решает указанные проблемы. Следующая строка - это инструмент SDK, Mage. Маг работает нормально, но создание развертываний довольно утомительно, и мы не хотим, чтобы каждый разработчик имел наш сертификат подписи кода и пароль.

В результате мы создали собственное приложение для развертывания, которое использует версию Mage для командной строки для создания файлов манифеста ClickOnce.

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

Ответы

Ответ 1

Я бы посмотрел на msbuild. Он построил в задачи для обработки развертываний Clickonce. Я включил некоторые ссылки, которые помогут вам начать работу, если вы хотите пойти по этому пути. Это то, что я использую, и я нашел его в соответствии с моими потребностями. При хорошем процессе сборки с использованием msbuild вы сможете выполнить раздавливание болей, которые вы почувствовали.

Вот подробный отчет о том, как генератор манифеста ClickOnce работает с MsBuild.

Ответ 2

Я использовал nAnt для запуска общей стратегии сборки, но передал параметры в MSBuild для компиляции и создания пакета развертывания.

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

Так мы справлялись с несколькими производственными средами: у нас были отдельные экземпляры нашего приложения для США, Канады и Европы, поэтому каждая сборка завершила бы создание девяти развертываний, по три для dev, qa и prod.