2010-11-04 6 views
0

Используя Wix, я хотел бы запустить исполняемый файл (который устанавливается) и захватить возвращаемое значение. У меня нет проблем с запуском исполняемого файла:wix результат выполнения программы?

<CustomAction Id="UpgradeDBFromExe" FileKey="UpgradeDB.exe" ExeCommand="/update" Execute="deferred" Impersonate="no" Return="ignore"/> 

Но я не уверен, как зафиксировать возвращаемое значение. Если я изменю возврат к «проверке», то при отказе установщик откатится (не то, что я хочу), вместо этого я хочу проверить этот результат позже (предположительно через свойство) и отобразить предупреждение. Мои мысли - использовать скрипт CustomAction для вызова исполняемого файла и сохранения результата как свойства, но это кажется беспорядочным. Есть ли лучший способ сделать это?

ответ

2

Предполагаю, что этот CustomAction вносит изменения в систему и поэтому требует привилегий и назначается как отсроченное/без олицетворения. Из-за этого и того факта, что это пользовательское действие EXE, которое заканчивается, MSI не предоставляет способ установки свойств. Если вы используете шаблон персонализированного действия WiX Quiet Execute, вы можете захватить stdout и зарегистрировать его, но это о нем. Если вы использовали тип настраиваемого действия DLL, вы можете проверить свойство UILevel и, возможно, всплывающее окно MSI MessageBox, запрашивающее у пользователя, хотят ли они продолжить и на основе которого вы можете вернуть успех или неудачу, но в качестве EXE вы застряли.

Другим подходом было бы выполнить другое пользовательское действие в последовательности пользовательского интерфейса после действия выполнения, которое проверяет, что делает EXE, и установить свойство для успеха/отказа, а затем отключить некоторый пользовательский интерфейс. Моя единственная проблема заключается в том, что слишком поздно откатывать установку, и пользователи, как правило, не читают то, что вы ставите перед собой в любом случае.

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