Я создал установщик MSI с использованием Installshield 2014. При запуске его из пользовательского интерфейса все работает нормально, но когда я запускаю его в бесшумном режиме, используя команду ниже, то мои пользовательские действия не стрелять вообще:Как запустить пользовательские действия при запуске установщика MSI в бесшумном режиме
C:\>msiexec /i "myApplication.msi" /qn WEBURL=http://localhost/mywebapp /log out.txt
WEBURL
является собственностью требует настраиваемого действия. Значение WEBURL
передается в библиотечный метод класса C# в качестве аргумента. Метод C# вызывается моим настраиваемым действием, которое вызывается, когда я нажимаю кнопку «Установить» при запуске мастера установки. Мое пользовательское действие выполняется всегда, т. Е. Я сохранил условие для выполнения пользовательского действия как 1
, что означает, что он выполняется при любых обстоятельствах.
В файле журнала я также вижу, что значение свойства WEBURL
правильно установлено. Я не могу понять, что останавливает мое действие для запуска при запуске установщика в бесшумном режиме?
Обновление: Как было предложено Майклом, после ввода пользовательского действия в InstallExecuteSequence
оно начинает выполняться в бесшумном режиме. Но теперь проблема в том, что он начинает получать выполнение дважды в режиме пользовательского интерфейса, поскольку одно и то же действие уже выполняется через кнопку, щелкнув по одному из диалогов, которое появляется во время InstallUISequence
. Поэтому я хочу выполнить свое пользовательское действие, поместив его в InstallExecuteSequence
только тогда, когда я запускаю установщик в бесшумном режиме (чтобы он выполнялся только один раз, если я в режиме пользовательского интерфейса).
Если я поместил свое пользовательское действие в последовательность «InstallExecute», тогда он будет работать как в пользовательском интерфейсе, так и в бесшумном режиме. В режиме пользовательского интерфейса он запускается дважды, один из одного из диалоговых окон пользовательского интерфейса и другой из последовательности «InstallExecute». Я не могу удалить его из диалогового окна пользовательского интерфейса, поскольку мне, возможно, придется его запускать несколько раз на основе некоторых проверок пользовательского интерфейса. Как я могу убедиться, что даже если я добавлю пользовательское действие в последовательность «InstallExecute», тогда он запускает * только * в бесшумном режиме. – RBT
@ RBT: Я обновил свой ответ, чтобы поговорить о FirstSequence и UILevel как опции для выполнения только в одной последовательности. –
Пользовательский вариант «Планирование действий» сделал трюк для меня. Все мои пользовательские действия были запланированы как «Всегда исполнять». В тот момент, когда я изменил его на «Выполнение только один раз», он начал работать в соответствии с моим ожиданием. Я считаю, что 'UILevel' тоже может быть уместным в моем сценарии, но мы поддерживаем * только * два режима в нашем установщике' INSTALLUILEVEL_FULL' и 'INSTALLUILEVEL_NONE'. Я бы использовал его, если бы мне нужен этот уровень контроля при выполнении моих пользовательских действий. Я также добавил экранный снимок, чтобы продемонстрировать изменения в расписании выполнения в вашем сообщении, поскольку это поможет читателям. Спасибо за последующие действия. – RBT