2009-03-25 2 views
1

Я работаю над проектом установщика, который состоит из файла MSI и загрузочного приложения, которое управляет предварительными условиями; и поскольку потребность в некоторых предварительных требованиях зависит от того, какие функции пользователь хочет установить, приложение начальной загрузки также предоставляет пользовательский интерфейс. Я хочу, чтобы заставить панель управления «Установка и удаление программ» (или «Программы и компоненты») (ARP) запускать загрузочное приложение вместо MSI, когда пользователь хочет запустить установку изменения. Я попытался изменить значение ModifyPath в разделе реестра Uninstall Registry установщика на путь к загрузочному приложению, но безрезультатно. Нажатие кнопки «Изменить» в ARP по-прежнему дает мне MSI.Как мне получить ARP для запуска моего загрузочного приложения установщика для установки изменений?

Есть ли простой способ сделать то, что я хочу? В противном случае, есть ли способ, чтобы MSI обнаружила, что он был запущен из ARP с помощью кнопки «Изменить», чтобы я мог заставить его показать сообщение об ошибке, которое говорит пользователю вместо этого запустить приложение для загрузки? (Т. Е. Использует ли ARP те же аргументы командной строки, которые пользователь будет использовать для запуска MSI, и указать модификацию установки без необходимости видеть страницу обслуживания пользовательского интерфейса? Если нет, что мне следует искать?)

Редактировать Мой установщик устанавливает не только одно приложение, но и набор приложений, каждый из которых пользователю разрешено не устанавливать. (Мы устанавливаем эти приложения как набор, потому что большинство из них зависит от того, какой из них, в частности, устанавливается. Поэтому пользователю будет проще иметь только один инсталлятор, а не отдельные установщики, которые этот новый установщик заменит.)

Приложениям в пакете не все требуется один и тот же набор предварительных условий, поэтому MSI не просто проверяет предварительные условия, пока не узнает, какие приложения в пакет, который пользователь хочет установить. Кроме того, мы хотим, чтобы это стало проще для пользователя, установив инсталляторы для всех предварительных условий для приложений, которые пользователь хочет установить автоматически. (Это основная причина, по которой пользовательский интерфейс установщика был реализован в загрузочном приложении.)

Возможно ли, чтобы MSI запустила приложение начальной загрузки, а затем тихо вышла сразу, когда приложение загрузки загрузилось, в конечном итоге перезапустив MSI? (Когда приложение bootstrap запускает MSI, один из аргументов командной строки, который он передает в MSI, является свойством, которое сообщает ему, что приложение bootstrap запустило его. В настоящее время оно используется, среди прочего, для того, чтобы позволить MSI показывать ошибку сообщение о том, что пользователь запускает загрузочное приложение, если в командной строке не указана установка для удаления или восстановления.)

ответ

0

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

Поскольку моя цель состояла в том, чтобы запустить загрузку только для модификаций установки, я помещаю пару новых событий управления на кнопку «Далее» диалогового окна «Обслуживание» (где пользователь выбирает между «Изменить», «Восстановить» и «Удалить»).Если пользователь выбрал Maintenance (MaintenanceMode ~ = "Modify"), пользовательское действие запускается, и диалог отклоняется с помощью действия EndDialog с Exit в качестве аргумента. (Я изменил условие на существующее событие управления, которое переходит к следующему диалогу, чтобы быть отрицательным из того, что вызывает запуск бутстрапа, то есть NOT (MaintenanceMode ~ = "Modify").) Загрузочное приложение запрограммировано на пропустите диалог обслуживания в его графическом интерфейсе и начните с следующего диалога в последовательности, хотя пользователю разрешено вернуться к диалогу Maintenance, если он так захочет. (Если он это делает, приложение bootstrap просто вернется к своей версии диалога обслуживания, которая очень похожа на версию в MSI.)

Я знаю, это немного клочья, но он делает то, что я нужно это делать. :-)

1

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

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

Вы можете добавить сообщение о запуске bootstrapper, если отсутствует prereq.

 Смежные вопросы

  • Нет связанных вопросов^_^