Почему в BizTalk файл MSI импортируется и устанавливается? - PullRequest
8 голосов
/ 05 февраля 2011

Я работаю над проектом BizTalk и не понимаю причину необходимости установки (двойной щелчок) и импорта (используя консоль администрирования biztalk).

У меня есть проект BizTalk, и ядобавил привязки к его ресурсам и экспортировал MSI-файл.Теперь я хочу установить приложение на другом сервере.

Насколько я могу судить, это то, что делает установка MSI:

  1. Копирует файлы в файловую систему
  2. Регистрирует сборки в GAC
  3. Добавляет приложение в апплет "Установка и удаление программ"

Однако, вот мои проблемы:

  1. Установка с использованиемMSI не добавляет приложение в консоль администратора Biztalk.Нам нужно импортировать MSI.
  2. Удаление с помощью MSI не удаляет сборки из GAC.Он только удаляет файлы, которые он скопировал в файловую систему.Есть ли возможность удаления для удаления сборок GAC?
  3. Если я просто импортирую MSI, я могу запустить приложение biztalk, и оно, кажется, работает нормально.В сочетании с проблемами № 1 и № 2, зачем вообще нужен MSI?Я вижу, что импорт не добавляет его в GAC, поэтому, если другие приложения зависят от него, они не будут работать.

Я уверен, что мне не хватает функций / конфигурации, которые предоставляет msi, но может ли кто-нибудь помочь мне понять, почему msi нужно и устанавливать, и импортировать в biztalk, и почему при удалении из системы он не удаляет полностью все, что установил? *

Ответы [ 2 ]

12 голосов
/ 05 февраля 2011

При развертывании решения BizTalk необходимо выполнить две операции.

Почему развертывание решений BizTalk представляет собой двухэтапную операцию?

  1. Регистрация решения BizTalk в базе данных управления BizTalk
  2. Установка артефактов и зависимостей BizTalk в файловую систему

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

Это делается путем импорта пакета установщика Windows в BizTalk.

Пожалуйста, помните, что типичная платформа BizTalk обычно состоит из множества физических серверов. Однако все серверы BizTalk Group совместно используют одну базу данных BizTalk Management.

Следовательно, операцию импорта необходимо выполнить один раз для всей группы BizTalk .

Во-вторых, сборки BizTalk, которые были зарегистрированы в BizTalk, должны физически существовать где-то . Поэтому они должны быть установлены в файловой системе.

Это можно сделать, дважды щелкнув пакет установщика Windows.

Обратите внимание, что операцию установки необходимо повторить на любом физическом сервере , который входит в группу BizTalk. А поскольку в базе данных управления BizTalk есть только одно определение того, какие сборки являются частью решения, это объясняет, почему сборки BizTalk должны быть установлены в глобальный кэш сборок (GAC).

Обратите внимание, что до сих пор правило простое:

  • Сборки BizTalk должны быть установлены в GAC на каждом сервере в группе BizTalk
  • Сборки BizTalk должны быть импортированы (или зарегистрированы) в базе данных управления BizTalk один раз

Однако мы имели дело только со сборками BizTalk. Все другие сборки или другие зависимости (определения бизнес-правил, COM-объекты, привязки, файлы конфигурации и т. Д.), Необходимые для решения BizTalk во время выполнения, не охватываются этой двухэтапной операцией.

Межсредовое развертывание

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

Именно поэтому большинство этих артефактов также зарегистрированы в базе данных управления BizTalk. Но на этот раз это делается только для того, чтобы зависимости вводились при создании пакета установщика Windows для решения BizTalk, и чтобы эти зависимости могли быть установлены соответствующим образом на целевых серверах.

Почему сборки BizTalk не удаляются из GAC при удалении?

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

Когда добавляя ресурсы в базу данных управления BizTalk , вы можете выбрать, чтобы сборки были установлены в GAC на import или install time. Я настоятельно рекомендую не использовать функцию GacOnImport , , которая не имеет смысла в большинстве типичных многосерверных групп BizTalk .

.

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

Эти сценарии позволяют запускать произвольные приложения четыре раза во время операций импорта / установки.

  • Перед импортом
  • После импорта
  • Перед установкой
  • После ввода

Если вы хотите, чтобы сборки удалялись из GAC при удалении, достаточно просто запланировать соответствующую командную строку на этапе «Перед установкой» операции..

9 голосов
/ 05 февраля 2011

Импорт файла MSI добавляет сборки из MSI в базу данных BizTalk.Как вы заявили, запуск MSI добавляет сборки в GAC.И то, и другое требуется для того, чтобы приложение BizTalk было «установлено».В базу управления BizTalk необходимо импортировать только сборки BizTalk.Все библиотеки DLL, используемые BizTalk, должны находиться в GAC.

Возможно, стоит взглянуть на http://msdn.microsoft.com/en-us/library/aa578463(v=BTS.10).aspx, чтобы убедиться, что вы можете настроить поведение для установки и импорта для каждого ресурса в приложении BizTalk.Это позволит вам импортировать только MSI и иметь возможность добавлять сборки в базу данных, а также устанавливать их в GAC, оставляя вас без лишних помех в ваших компонентах «Установка и удаление программ».

Относительно того, почемуDLL не удаляются из GAC, когда вы удаляете установленный MSI, я могу сказать вам, что это было разработано.Если вы посмотрите на эту страницу в MSDN http://msdn.microsoft.com/en-us/library/aa562001(v=bts.10).aspx, вы увидите, что это поведение описано как ожидалось.Эта статья MSDN также содержит ссылку, в которой описано, как удалить сборку из GAC, в которой объясняется, как использовать сценарий пост-обработки, чтобы MSI фактически удалял ваши сборки из GAC при удалении MSI.

...