Существует ли расширяемая система установки после сборки - PullRequest
0 голосов
/ 28 мая 2010

У нас есть продукт, для которого нам нужно создать установщик. Он имеет ряд компонентов, которые могут быть установлены или нет в зависимости от ситуации.

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

Например, Foo Manager Pro содержит:

  • Консоль Foo Manager
  • База данных Foo Manager
  • Услуги Foo Manager

Это может быть отправлено как что-то вроде:

  • FooManagerInstaller.exe
  • FMPConsole.pkg
  • FMPDatabase.pkg
  • FMPServices.pkg

Пакет может состоять из чего-то вроде:

  • Manifest
  • Файлы для развертывания
  • Дополнительные сценарии для выполнения
    (например, найти файл foo.config, выполнить некоторые манипуляции с XML)

Если клиент хочет добавить пользовательские скины и серию плагинов в процессе установки, он создает свои собственные пакеты:

  • FMPConsoleSkins.pkg
  • ClientWebservices.pkg

Если этот клиент затем отправляет его кому-то еще, кто хочет добавить больше настроек - они могут сделать это таким же образом.

Мы можем построить это с нуля, но хотели проверить, существует ли уже такая система установки.

У нас уже есть набор сценариев NAnt, которые делают что-то не так далеко от этого. Но их сложно поддерживать, и довольно сложно. Они не предлагают никаких «приятностей», которые мы ожидаем от установщика (например, отслеживание развернутых файлов и удаление их в случае сбоя установки).

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

Ответы [ 2 ]

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

Этот ответ касается только установщика Windows (и, следовательно, WiX); У меня никогда не было возможности использовать NSIS.

Установщик Windows сам по себе не подходит для такого рода расширяемости. Если вам нужна полная поддержка устойчивости (самовосстановление, реклама и т. Д.), То файлы, добавленные в нисходящем направлении, должны быть добавлены с помощью преобразования или исправления и должны быть доступны в кабине или не сжаты в исходной файловой системе. Для того чтобы это было беспроблемной установкой для конечного пользователя, загрузчик должен будет идентифицировать эти расширения и применить их как часть установки. Однако, если вы когда-нибудь ожидаете установить исправление для основной установки, идея учета последующих исправлений является пугающе сложной.

Если вам не нужна гибкость установщика Windows, безусловно, можно выполнить различные этапы установки и удаления в качестве пользовательских действий. Эти действия могут считывать ваш пользовательский формат и манифесты pkg и действовать соответственно, по крайней мере, для установки. Выяснение того, как сохранить или воссоздать информацию для удаления, будет ключевым. Предполагая, что вы поддерживаете для компьютера (в отличие от пользователя), эти действия должны быть отложены (In-Script), и, следовательно, будет иметь минимальный контакт со свойствами и каталогами, доступными для установки - исследуйте CustomActionData, если вы хотите возглавить по этому маршруту. (Но будьте осторожны; первым попаданием, которое я увидел в поиске, была менее релевантная тема «Развертывание в Visual Studio».)

0 голосов
/ 01 июня 2010

Я знаю, что лицензия может стоить немного, но «Installshield» (я тестировал ограниченную версию благодаря версии 2010) имеет много функций об этих вещах, в том числе об обновлении / понижении, я не знаю, точно ли что бы вы ни сделали, но это может быть хорошей идеей для тестирования ограниченной версии (которая все еще бесплатна), может быть, вы можете увидеть там нужную вам функцию.

...