Здравствуйте, Vladimir_S, Вы писали:
V_S>Добрый день! V_S>Я согласен, что лучше использовать готовое решение для инсталляции, а не изобретать свой велосипед. И в начале рассматривал вопрос использования InstallShield. Но пришел к выводу (возможно к ошибочному), что лучше использовать собственный установщик. Иначе пришлось бы очень много логики выносить в dll. V_S>Да к тому же требуется установка программного комплекса на несколько серверов сразу.
Вам нужен свой bootstrapper, а не установщик. Т.е вынесите всю специфичную логику ( в том числе и UI ) в bootstrapper ( некий экзешник с вашим кодом ),
а всю логику копирования и замены файлов, условий запуска и т.п в файл, создаваемый стандартным установщиком, например msi, создаваемый с помощью Wix.
Логика иснатллятора будет примерно следующая:
— дистрибутив состоит либо из bootstrapper и рядом лежащего msi. Либо можно запаковать msi в bootstrapper и распаковывать его при начале установки
— инсталляция стартует с bootstrapper, который делает некие специфичные для вас вещи. Например, что то проверяет, затем запускает ваш UI, чтобы пользователь задал некие настройки,
после чего bootstrapper стартует msi в silent-режиме. В этот момент ваш UI показывает прогресс-диалог. При запуске msi можно передать ему callback, в который будут передаваться
информация о ходе установки — какие действия выполняются и т.п. Их отображают в прогресс-диалоге. По окончании msi-установки, bootstrapper может выполнять еще некий ваш специфичный код.
— Один и тот же bootstrapper может запускать несколько msi.