Сценарии для развертывания .NET

Я изучаю различные варианты развертывания пакета .NET-приложений. Развертывание - это больше, чем просто копирование файлов, нам нужно остановить / запустить службы, вызвать EXE-файл, который выполняет сценарии базы данных, инициировать несколько установок setup.exe и т. д.

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

Двумя лучшими вариантами являются CS-скрипт и PowerShell, но я оставлю решение голосования.

ОБНОВЛЕНИЕ: на основании полученных ответов я чувствую, что должен уточнить. Во-первых, люди, применяющие обновления, будут типами системных администраторов; не конечные пользователи. Так что в этом случае полноценный установщик WiX, Мудрый и т. д., Вероятно, окажется излишним.

Во-вторых, можно с уверенностью предположить, что на этих машинах будут установлены .NET 2.0 и даже PowerShell (или CS-Script, или что-то еще). Мы создаем образы, чтобы указать, что будет установлено. Проблема в том, что после того, как мы выберем образ, помимо обновлений приложений, которые мы будем писать сценарии, будет очень сложно установить «новые» приложения.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 307
6

Ответы 6

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

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

Обратной стороной использования PowerShell в качестве среды сценариев для развертывания является то, что вы должны убедиться, что на целевых компьютерах установлены .NET Framework 2.0 и PowerShell. Для этого вам понадобится сценарий, и, следовательно, вы вернетесь к исходному вопросу без PowerShell.

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

Лично мне хотелось бы иметь сценарий начальной загрузки, который обеспечивает установку PowerShell, а затем использовать PowerShell в качестве фактического сценария развертывания.

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

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

Ссылка для NSIS: http://nsis.sourceforge.net/Main_Page

Рекомендую WiX для создания инсталляторов. В нем есть все возможности, необходимые для выполнения хорошей работы, и он бесплатный, поддерживается Microsoft, декларативен и расширяем. Он прекрасно интегрируется в VisualStudio и MSBuild-Process.

Мы использовали разные подходы. В конце концов, то, что нам удалось, это:

  • Обычные исполняемые файлы с хорошей обработкой командной строки.
  • Библиотеки, использующие сценарии (F#, IronPython, CS-Script) для операций.
  • msbuild (вызов исполняемых файлов, иногда пользовательских задач, иногда скриптов)

Спекулятивно: рассмотрите возможность использования MS Deploy (на RC1). Он делает большую часть того, что вам нужно. Сейчас оцениваю.

Что плохо работает: Сборка из вышеперечисленных + батники. Со временем все будет стремиться перейти в исполняемые файлы и библиотеки установки, поскольку это технология, которая может справиться со всеми задачами и масштабироваться. Обязательные действия в пользовательском интерфейсе являются злом и требуют ручной установки.

У CS-Script и Powershell есть свои недостатки. CS-Script - неуклюжие схемы привязки сборок. Powershell: мало кто может на это взглянуть. Перед тем, как использовать их, проверьте правильность концепции каждого из них - может быть, они вам понравятся больше, чем мне. Мой опыт несложен для этого - после проверки концепции я переключился на IronPython.

Сравнивая CS-Script и PowerShell, вот некоторые преимущества CS-Script перед PowerShell:

  • CS-Script легче и проще в развертывании. http://www.csscript.net/help/Deployment.html говорит: «распространять исполняемый файл механизма сценариев (cscs.exe / csws.exe) вместе с самим сценарием».
  • C# - широко распространенный язык с легкодоступным отладчиком. PowerShell - это еще один язык для изучения.
  • C# при желании может быть скомпилирован

Другие вопросы по теме