Создание собственного загрузчика / загрузчика в C # - PullRequest
1 голос
/ 17 января 2011

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

Вот что у нас есть:

A. Пакеты MSI будут созданы в InstallShield. Мы будем использовать любую функцию, предлагаемую Installshield (интеграция с IIS, регистрация COM, реестр и т. Д.). Диалог, созданный InstallShield, не будет использоваться (для этого предназначен загрузчик). MSI будут установлены без вывода сообщений.

B. Всякий раз, когда нам нужно написать CA для вещей, которые InstallShield не может обработать, мы будем писать их в управляемом коде (C #) с использованием DTF. Мы создадим «Custom Action Framework», который «стандартизирует», как мы используем настраиваемые действия.

C. Мы создадим собственный загрузчик ("setup.exe") в C #, чтобы "обработать" установку.

Мы решили использовать множественный подход MSI и использовать транзакцию MSI для «цепочки» установки из загрузчика (вдохновлено установщиком Office 2007)

Boostrapper, который мы намереваемся создать, основан на загрузчике Visual Studio и SQL Server. Boostrapper будет нести ответственность за следующее:

  1. Предварительная установка : Для каждого приложения требуется предварительная установка. Эти предварительные требования перечислены в файле XML, который находится в той же папке, что и MSI (созданный из установщика Office 2007) вместе с другими метаданными. В зависимости от текущего состояния системы вспомогательный модуль решит, какое предварительное условие будет установлено или нет.
  2. Выбор функции : Мы планируем структурировать «внутреннюю» функцию MSI таким образом, чтобы она не подходила для немедленного отображения конечному пользователю. У нас будет функция, помеченная как «Core_Files», «Vista_Only» или «64bit_Only». В зависимости от метаданных в файле XML (элемент 1) и целевой системы загрузчик будет отвечать за «заполнение» «дерева функций», которое пользователь может настроить (также на основе загрузчика Office 2007).
  3. Проверка перед установкой : Загрузчик отвечает за проверку готовности системы к приему установки. Например, если машине необходимо перезагрузить компьютер перед установкой или если пользователю необходимо вручную установить пакет обновления, исправление или компонент Windows. Все, что нужно сделать, что требует вмешательства пользователя, должно отображаться здесь. Думайте об этом как контрольный список (список) с проверками и бывшими. (Вдохновлено загрузчиком SQL сервера). «Правила» будут написаны на C #.
  4. Конфигурация приложения : Для приложения, которое необходимо «настроить» перед установкой. Эти «параметры» (пользовательская конфигурация) будут переданы соответствующему MSI через MSI Properties .
  5. Фактическая установка : Загрузчик выполнит установку. Правильная «сделка» должна соблюдаться при необходимости. Все «продукты», которые должны быть сгруппированы, должны отображаться как один продукт в «Установка и удаление программ» (путаясь с записями ARP). Кроме того, каждый устанавливаемый MSI должен сообщать о надлежащем прогрессе.

- Это то, что мы имеем до сих пор.

Я думаю, что есть пара готовых решений для создания собственного загрузчика, таких как dotNetInstaller и BMG. Мы изучили это, но это не так гибко, как мы надеялись. Также есть BURN, но мы не уверены, готов ли он к прайм-тайм.

Итак, мы ... мы решили создать свой собственный загрузчик.

Вопрос:

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

Любая информация о нашей ситуации будет принята с благодарностью. Кроме того, если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать.

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Честно говоря, сжечь нельзя будет, по крайней мере, год. У вас уже есть InstallShield и IMO, он имеет лучший из доступных на данный момент загрузчик. Я верну твои требования и сделаю так, чтобы они подходили к коробке. Практически все, что я прочитал от вас, можно сделать с помощью InstallShield, если вы научитесь использовать его до предела.

1 голос
/ 19 января 2011

Я бы все равно пошел на Burn или какое-нибудь уже существующее решение.

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

Сосредоточьтесь на разрабатываемом программном обеспечении, а не на написании установщика / загрузчика.

Если бы я былтвои туфли, я бы попробовал.Я бы получил пару дней и посмотрел, отвечает ли это моим требованиям.

...