我已经使用WPF编写了一个托管wix引导程序。实际的安装步骤需要链接多个msi的.exe和批处理文件。
<Chain>
<MsiPackage SourceFile="xxx"/>
<ExePackage Id="Test" SourceFile="..TestBatch.bat" Vital="yes"/>
<MsiPackage SourceFile="yyy"/>
</Chain>
在执行每个包的过程中,应该显示一条消息(最好来自引导程序UI),指示当前正在执行哪个msi/exe包/批处理文件。简而言之,引导程序中需要ProgressText。我该如何实现这一点?
另一个问题:我不希望所有的msi都打包到bootstrapper.exe中。这是因为:每次更改msi时,我们都希望只发送更新/修改的msi,而不是整个引导程序exe。有办法做到这一点吗?
两个答案,一个建议:
-
要在安装MsiPackage期间取回消息,请处理
BootstrapperCore.ExecuteMsiMessage
事件。那里的事件参数将包含一条消息,其中包含您要查找的数据。 -
要配置包的压缩方式,请使用
Compress
属性。您可以标记整个Bundle/@Compress='no'
,也可以标记每个包Compress='no'
(如果您想这样做,可以标记'yes'
)。
--
建议:一定要将DetectCondition添加到ExePackages中,这样Burn就会知道ExePackage是否已经存在。