Как сделать один проект для создания инсталляций у нескольких приложений
Рассмотрим ситуацию, когда вы разрабатывайте несколько приложений и для каждой программы необходимо создавать инсталляционный пакет. Создавать отдельный проект в инсталляторе CreateInstall для каждого приложения отнимает лишнее время, особенно если сценарии установки практически одинаковые. Также, если вы захотите внести одинаковые изменения в каждый скрипт установки, то для этого вам придется вручную редактировать каждый проект.
Как решить эту проблему? Инсталлятор CreateInstall имеет прекрасное средство для решения это задачи. Рассмотрим подробнее возможность Multi Build на небольшом примере. Предположим имеется три приложения My Application. Super Application, Best Application. Необходимо сделать один проект, который можно использовать для создания установок всех этих приложений.
Файлы всех приложений находятся в директориях c:\Applications\My Application, c:\Applications\Super Application и с:\Applications\Best Application. Запускаемые файлы myapp.exe, superapp.exe, bestapp.exe. Необходимо также автоматически получать версию из VERSION_INFO этих файлов. В процессе установки нужно показать соответствующий лицензионный файл, распаковать файлы в нужную директорию и создать ярлык для приложения. Также для Best Application необходимо вывести сообщение в процессе установки.
Шаг 1. Создаем простой проект и заходим в раздел Проект - Препроцессор и видим список Мультисборка. У нас у трех приложения отличаются имя приложения и имя исполняемого файла. Поэтому нам достаточно добавить две переменные appname и exename и заполнить соотвествующими значениями три колонки.
Определение переменных
Шаг 2. Заходим на страницу Проект - Вывод и определяем Имя запускаемого файла как $exename$-setup.exe. То есть у нас для каждого приложения будет свой файл установки. Например, для My Application будет myapp-setup.exe.
Далее открываем страницу Проект - Информация о программе и устанавливаем следующие параметры:
Имя программы: $appname$ Версия: C:\Applications\$appname$\$exename$.exe Имя приложения: $appname$
Шаг 3. Открываем закладку Скрипт и укажем файл лицензии в команде Диалог - Лицензия как C:\Applications\$appname$\license.txt.
Сейчас отредактируем команду Установочные файлы. Добавим туда путь к файлам приложения c:\Applications\$appname$\*.*.
В процессе создания установки у нас будут упаковываться файлы из соответствующей директории. Также добавим ярлык в команду Ярлыки [Список]
Имя ярлыка: $appname$ Имя файла: $exename$.exe
Шаг 4. У нас стоит задача в установке Best Application показывать сообщение. В принципе, этот шаг добавлен, чтобы подробнее объяснить, как исключать некоторые команды для разных установок. Вставляем команду Исходный код с оператором ifdef. Если условие не выполняется, то внутренний код не будет учитываться при создании установки.
ifdef "$exename$" == "bestapp" { $body$ }
Далее внутри этой команды можем добавлять любые нужные нам действия.
Шаг 5. Мы закончили создание проекта. Сейчас рассмотрим как создавать установки для каждого приложения. Если вы просто запустите создание установки для данного проекта, то будет создана установка для первого приложения My Application.
Создание установок из инсталлятора CreateInstall
Выберите пункт меню Установка и затем подпункт Мультисборка. В открывшемся окне можно запустить создание установки для конкретного приложения или создать установки для всех приложения.
Создание инсталляции из программы
Создание установок из командной строки инсталлятора CreateInstall
Как известно, можно запускать создание установок из командной строки с помощью программы cicmd.exe. В данном случае, необходимо использовать параметр -m, где i - номер приложения
для создания инсталляции My Application
cicmd.exe -m1 "c:\projects\multi-build-installer.ci"
для создания инсталляции Best Application
cicmd.exe -m3 "c:\projects\multi-build-installer.ci"
Скачать пример multi-build-installer.ci