我花了几天时间寻找这个问题的解决方案,但没有任何实际结果。我有一个 WiX 3.8 项目来安装 Excel 加载项。该项目创建一个 MSI。我需要引导到这个项目,以检查是否安装了 .net framework 4.0 客户端,如果没有,则从 Web 安装它。
我发现这个问题有两种可能的解决方案:
- 创建一个 WiX 引导项目。
- 使用 Visual Studio 2012 附带的 MSBuild 引导程序。
- 运行构建后事件命令行
如果我选择第 1 项,则无法生成 MSI,这是一项要求。我想做第 2 或第 3 项,但找不到可以为下载先决条件创建必要的引导程序可执行文件的示例。
任何人都可以帮助我吗?
编辑 1 我已尝试执行第 1 项,如下所示。我可以使用 DisplayInternalUI="yes" 标志从我的 MSI 显示 UI,并使用主题和 WixBalExtensionExt 设置刻录 UI 的样式。
<?xml version="1.0" encoding="UTF-8"?>
<Wix
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Product Name"
Version="1.0.0.0"
Manufacturer="Company Name"
IconSourceFile="..\path\to\Icon.ico"
DisableModify="yes"
UpgradeCode="[guid]">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\Image1.png"/>
<Payload SourceFile="Resource\Image2.png"/>
<bal:WixExtendedBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl="" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaThemeXml" Value="Resource\AddInTheme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\AddInTheme.wxl" />
<Chain>
<PackageGroupRef Id ="NetFx40ClientWeb"/>
<MsiPackage Id="MyPackage"
SourceFile="..\MyPackage\bin\$(var.Configuration)\MyPackage.msi"
Vital="yes"
DisplayInternalUI="yes"
/>
</Chain>
</Bundle>
</Wix>
如果有办法将引导程序应用程序创建为 MSI,请告诉我。
否则,如果我需要使用 WiX 脚本中的条件来安装它,请确认我是否使用了 Visual Studio 的内置引导程序。这是如何运作的?
编辑 2 由于 WiX 引导程序只生成一个 EXE,它不符合我的要求。是否有实际示例说明如何将 .net 下载(而不是可再发行的)引导到 WiX 项目?有许多可再发行的示例,但没有一个可供下载的示例。