Я написал управляемый загрузчик wix, используя WPF. Фактические этапы установки требуют цепочки нескольких файлов msi/exe и пакетных файлов.wix bootstrapper
<Chain>
<MsiPackage SourceFile="xxx"/>
<ExePackage Id="Test" SourceFile="..\TestBatch.bat" Vital="yes"/>
<MsiPackage SourceFile="yyy"/>
</Chain>
Во время выполнения каждого пакета, сообщение должно быть отображено (предпочтительно от загрузчика UI), который указывает на MSI/EXE пакет/пакетный файл выполняется в данный момент. Короче говоря, необходим ProgressText в загрузчике. Как я могу это сделать?
Другой вопрос: я не хочу, чтобы все msi были упакованы в загрузочный exe. Это связано с тем, что: каждый раз, когда изменился msi, мы хотели бы отправить только обновленные/измененные msi, а не весь загрузочный exe. Есть ли способ сделать это?
Спасибо, Роб. Оба вышеуказанных предложения очень хорошо служат моей цели. Я хотел бы знать, возможно ли передать сообщение из моего ExecPackage обратно в загрузчик? Ситуация такова: у меня есть несколько командных файлов, которые нужно выполнить, и я делаю это с помощью ExecPackage. Основываясь на некоторых результатах в пакете, я хотел бы отобразить соответствующее сообщение пользователю и представить варианты продолжения/прерывания/перезапуска и т. Д. – microsoftprogrammer
В продолжение моих комментариев выше ... Я думаю, что, возможно, для сохранения сообщения как записи реестра и получения его в событии ExecutePackageComplete. Есть ли другой способ сделать это? – microsoftprogrammer
Ваш исполняемый файл может реализовать «встроенный протокол записи» для отправки сообщений о достигнутых успехах и сообщениях об ошибках. Это совсем не документировано, поэтому вам нужно будет пройти через код Burn, чтобы увидеть протокол, но он есть и вы получите именно то, что вы хотите. Может оказаться полезным и «bundlerunner» .csproj в исходном коде WiX. –