У нас есть продукт, для которого нам нужно создать установщик.
Он имеет ряд компонентов, которые могут быть установлены или нет в зависимости от ситуации.
Когда мы отправляем наш установочный пакет, мы хотим иметь возможность включать любое количество дополнительных компонентов для установки.
Например, 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, но не ясно, что они могут дать нам возможность в нисходящем направлении предоставлять дополнительные пакеты, не изобретая собственный язык установщика.