прикованный msi's / Bootstrapper / предпосылка? - PullRequest
9 голосов
/ 17 ноября 2008

У меня есть несколько компонентов MSI-пакетов, которые необходимо установить вместе, чтобы сформировать конечное приложение.

Проблема в том, что компоненты, составляющие пакет, могут быть обновлены, а компонент перезапущен на файловом сервере http. Какой подход мне выбрать?

Установщик, который я пишу, является «основным» установщиком. Который должен быть в состоянии прочитать, какая версия каждого компонента установлена ​​на его клиентском компьютере, чтобы выполнить обновление только для этого одного компонента.

Также, если приложение установлено впервые, установщик загрузит и установит все необходимые компоненты.

Я использую Installshield 2009.

Я просмотрел цепочечные MSI, но главный установщик пуст. так как он должен быть максимально легким.

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

Я исследовал - и, по-видимому, предварительные условия не предназначены для удаления.


Я полагаю, что я могу сделать небольшое обновление, изменив номера версий и, таким образом, разрешив загрузке загружать только требуемый компонент, а не загружать весь установщик - в настоящее время я реализую предложенный вами способ (sascha) и моя компания будет использовать сервис подключения FLEXnet, предлагаемый через InstallShield. «Компоненты», которые я упомянул (термин, который любят использовать наши разработчики), по своей сути аналогичны концепции компонентов InstallShield. Однако я изменил «компоненты», чтобы они были инкапсулированы функцией, чтобы при сборке релиза я мог выбрать, что каждая «функция» будет заключена в файл cab.

Это звучит так странно - даже для меня.

Я прибегнул к функциям <компоненты (включая услуги) </p>

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

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

Спасибо за все ваши ответы!

Ответы [ 4 ]

4 голосов
/ 18 ноября 2008

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

Несколько опций, которые я использовал в прошлом:

  1. Microsoft Общий Boostrapper . Я использовал это раньше, и довольно нравится. Недостатком является то, что если вам придется написать свой собственный манифест Boostrapper, если вы не обязательны, не один из предопределенных. Написание манифестов может быть немного сложнее и отнимает много времени, хотя есть инструмент , который помогает. Кроме того, я не смог найти способ удалить установленный компонент, если msi не может выполнить обновление (что-то еще, с чем я столкнулся). Если разберешься, дай мне знать!

  2. Напишите свой собственный усилитель / цепочник. Я начал с образца загрузчика Microsoft .NET Framework Setup.exe . Он поставляется с исходным кодом, поэтому у вас есть большая гибкость в развертывании ваших компонентов. Здесь, однако, код C ++, и логика для проверки предварительных требований и выдачи правильных команд установки сложна и трудна для понимания.

Обновление: пока я пишу это (август 2009 г.), оно еще не готово, но проект Wix работает над собственным загрузчиком / настройщиком под названием Burn , который для тех из нас, кто любит Wix, выглядит очень многообещающе.

1 голос
/ 08 июня 2010

http://dotnetinstaller.codeplex.com выполнят работу.

1 голос
/ 19 февраля 2009

Поскольку ваш «главный» установщик пуст и на самом деле ничего не устанавливает самостоятельно, вы можете использовать проект InstallScript (вместо проекта на основе MSI), используя скрипт установки в качестве «загрузчика». Если вы используете InstallScript, вам даже не нужно беспокоиться о настройке среды для запуска вашего кода, поскольку он будет автоматически настроен с помощью InstallShield; Если вы используете .NET для загрузчика, вам потребуется либо установить .NET, либо установить его как часть вашей установки.

Поскольку проекты InstallScript не используют MSI, вам не нужно беспокоиться о запуске других MSI во время последовательности установки Install Installte. Вы можете использовать функцию InstallScript «LaunchAppAndWait» для вызова установок для любых компонентов, которые необходимо установить / обновить.

0 голосов
/ 18 ноября 2008

К «компонентам» вы относитесь к Installshield / Компоненты / функции MSI? Или вы используете это в своей собственной терминологии? Насколько мне известно, вы не можете обновить компонент, не выпустив совершенно новую версию пакета.

Мое предложение будет состоять в том, чтобы развернуть установщик "веб-загрузчика" с несжатыми файлами (или одним CAB на компонент), тогда ваша полезная нагрузка будет, скажем, 300 КБ, и только функции, которые выберет пользователь, быть загруженным из сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...