对于我正在处理的一些项目,我想将我的部署从 ps1 脚本移动到 msi(在管道末端构建)。 于是我决定遵循“Wix方式”,并借此机会学习它。 我去了官方网站,决定使用最新版本(3.x 更常用,但由于 4 刚刚发布,我认为最好从那里开始)。
我在网上查找了一些入门知识来学习基础知识,但看起来什么都没有。然后我尝试按照官方指南至少拥有经典的“hello world”MSI,使用这个示例(取自here):
<Wix
xmlns="http://wixtoolset.org/schemas/v4/wxs"
xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
<Bundle
Name="FirstSample"
Version="0.0.1.1"
UpgradeCode="fc56ffde-f642-4086-b22a-306ba0732b12"
Compressed="no"
SplashScreenSourceFile="splashscreen.bmp">
<BootstrapperApplication>
<bal:WixStandardBootstrapperApplication
LicenseUrl=""
Theme="hyperlinkLicense" />
</BootstrapperApplication>
<Chain>
<PackageGroupRef Id="BundlePackages" />
</Chain>
</Bundle>
当我尝试构建它的那一刻,与
wix 构建 .\SampleFirst.wxs
结果是:
错误 WIX0200:BootstrapperApplication 元素包含未处理的扩展元素“WixStandardBootstrapperApplication”。请确保已提供“http://wixtoolset.org/schemas/v4/wxs/bal”命名空间中元素的扩展。
我有两个问题:
谢谢
WiX 4 通过 NuGet 包提供扩展。这可以通过两种方式之一来实现。
如果构建 MSBuild (*.wixproj) 文件,您可以添加扩展名,就像在 .Net 项目文件中添加任何 NuGet 包一样。
<ItemGroup>
<PackageReference Include="WixToolset.Bal.wixext" Version="4.0.1" />
</ItemGroup>
但是,使用命令行界面时,您将需要管理扩展缓存。从项目路径中的终端运行以下命令:
wix extension add WixToolset.Bal.wixext
您可以通过运行确认已获得:
wix extension list
此扩展缓存文件夹名为“.wix”。