(2011-05-19 14:36:24 отредактировано alexeo)

Установка драйверов из своего собственного инсталлятора

Пытаюсь установить драйвера во время инсталляции своей программы. Однако имеются определённые сложностью с вызовом MSI установки из контекста другой MSI установки. ИМХО, для этого драйвера должны поставляться в виде MSM модуля. Это бы позволило легко интегрировать драйвера в свой сетап.

Используем Wix.

Не могли бы вы сделать доступными драйвера в виде MSM модуля? Либо привести фрагмент кода для вызова установщика драйверов из скрипта Wix.

Re: Установка драйверов из своего собственного инсталлятора

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

Мы предлагаем вариант установки драйверов с использованием msiexec. Синтаксис команды должен быть следующим:
msiexec </обязат. параметр> <имя msi-пакета> [необязат. параметр]

К примеру, команды для скрытой установки и удаления драйверов должны выглядеть так:
msiexec /i GrdDriversRU.msi /quiet    Установить драйвер в «тихом» режиме
msiexec /x GrdDriversRU.msi /quiet    Удалить драйвер в «тихом» режиме

При этом можно вызывать инсталлятор драйверов из другого процесса. Т. е. можно создать оболочку, некий третий инсталлятор, который бы по очереди вызывал сначала Ваш дистрибутив, а после его установки - msi драйверов Guardant. Так построены многие "составные" инсталляторы.

Кроме того, есть вариант использования драйверного Guardant API для установки драйверов ключей из приложения (более подробно см. документацию).

(2011-05-19 14:37:12 отредактировано alexeo)

Re: Установка драйверов из своего собственного инсталлятора

msiexec всегда выполняется на машине в единственном экземпляре. Т.е. если есть UI от моего сетапа, то невозможно запустить вторую копию msiexec.exe.

В результате вы обрекаете разработчиков на две кривые реализации:

1. Вызов вашего msi в InstallExecuteSequence после InstallFinalize. Что не позволит проверить правильность установки драйверов и в случае ошибки откатить свой сетап. Кроме того, если в сетапе есть галка "запустить программу после установки", то она не будет корректно работать, т.к. при запуске инсталлированной программы всё ещё не будут установлены драйвера.

2. Вызов вашего msi в InstallUISequence после ExecuteAction. В этом случае не получится установить драйвера совсем, при запуске моего сетапа в "тихом" режиме, т.е. без пользовательского интерфейса. Так же, не будут удалены драйвера при запуске удаления программы из оснастки "Добавление/удаление программ", т.к. удаление там будет вызвано в "тихую".

Мне не кажутся оба эти варианта приемлемыми.
С установкой драйверов для конечного пользователя понятно. Но не будешь каждому пользователю говорить "идите на сайт гуарданта, скачайте их драйвер и установите.". Должна быть простая интеграция драйверов в сетап разработчика.
Мне не кажется, что есть какая то разница во что запакованы ваши драйвера в MSI или в MSM, что суть одно и то же. Я просил бы вас ещё раз серьёзно задуматься над вопросом интеграции ваших драйверов в пакет инсталлятора разработчика.

(2011-05-19 14:37:39 отредактировано alexeo)

Re: Установка драйверов из своего собственного инсталлятора

вариант с бутстраппером, который вы предлагаете, тоже не очень, т.к. иногда пользователю "просто необходим" именно MSI, чтобы развернуть его в своей организации через серверы развертывания программного обеспечения. При этом они могут применить и трансформацию чтобы выполнить преднастройку ПО под свои нужды. Т.ч. EXE инсталлятор не всегда подходит. Да и у него недостатки всё те же, что в пункте 1.

Re: Установка драйверов из своего собственного инсталлятора

Уважаемый alexeo,
технически, конечно же, такое возможно. Однако, на сколько нам известно, "в два клика" присоединить merge-модуль к инсталлятору корректно не удастся. В результате, выпустив MSM мы автоматически перекладываем ответственность по выполнению всех необходимых проверок уже установленных драйверов на разработчика (к примеру, при удалении приложения: если инсталлятор не предложит пользователю не удалять драйвер Guardant, а сделает это "в тихую", то другое ПО, защищенное нашими ключами на это компьютере сразу перестанет работать).

Аналогично может возникнуть беспорядок и при установке приложения. И все это придется реализовывать самостоятельно разработчику инсталлятора.

Правильно ли я понимаю, что, по Вашему мнению, каждый разработчик осознает и готов принять на себя эту ответственность?

Re: Установка драйверов из своего собственного инсталлятора

при удалении приложения: если инсталлятор не предложит пользователю не удалять драйвер Guardant, а сделает это "в тихую", то другое ПО, защищенное нашими ключами на это компьютере сразу перестанет работать

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

Правильно ли я понимаю, что, по Вашему мнению, каждый разработчик осознает и готов принять на себя эту ответственность?

Подразумевается некая тупость разработчика? Тогда нужна просто хорошая инструкция, что необходимо сделать.
И я же не говорю за "каждого" разработчика. Я предлагаю сделать 2 варианта MSI для конечного клиента и MSM для включения в свой MSI. А там пусть разработчик выбирает...

Re: Установка драйверов из своего собственного инсталлятора

Дело не в "тупости" а в безответственности.

Тем не менее, передал информацию и все пожелания нашим разработчикам. Обещали рассмотреть предложение. Так или иначе, это займет некоторое время и пока, к сожалению, неопределенное.

Re: Установка драйверов из своего собственного инсталлятора

Спасибо.