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