wix开始使用wix


备注

什么是WiX?

WiX工具集允许开发人员为Windows安装引擎Windows Installer创建安装程序。它是开源的 ,是.NET Foundation的一部分。

WiX的核心是一组构建工具,它们使用与产品其余部分相同的构建概念构建Windows Installer程序包:编译源代码然后链接以创建可执行文件;在这种情况下,.exe安装包,.msi安装包,.msm合并模块和.msp补丁。 WiX命令行构建工具适用于任何自动构建系统。此外,命令行,Visual Studio和Team Build支持MSBuild。

WiX包含几个扩展,提供超出Windows Installer的功能。例如,WiX可以安装IIS网站,创建SQL Server数据库,以及在Windows防火墙中注册例外等。

使用Burn(WiX引导程序),您可以创建安装程序包,以便安装.NET Framework和其他运行时等先决条件以及您自己的产品。 Burn允许您下载包或将它们组合成一个可下载的.exe文件。

WiX SDK包括托管和本机库,可以更轻松地编写适用于Windows Installer的代码,包括C#和C ++中的自定义操作。

WiX如何工作?

WiX源代码以XML格式编写,文件扩展名为.wxs。 WiX工具遵循用于从源代码创建可执行文件的传统编译和链接模型。

在构建时,WiX源文件针对核心WiX架构进行验证,然后由预处理器,编译器和链接器处理以创建最终结果。有一组WiX工具可用于生成不同的输出类型。

WiX系统要求

WiX支持.NET 3.5和4.0及更高版本。 WiX的MSBuild支持需要.NET 3.5,在Windows 8和Windows Server 2012及更高版本上默认不安装。

在下一版本的WiX(v3.11)中,将需要.NET 4.0;将不再支持使用.NET 3.5构建。

版本

发布日期
3.11 2017年5月5日
3.10.3 2016年7月4日
3.9 R2 2015年1月21日
3.8 2013年11月28日
3.7 2012年12月24日
3.6 2012-09-03
3.5 2011-01-19
3.0 2009-06-19
2.0 2007-10-05

安装或设置

wixtoolset.org下载并安装WiX工具集。

WiX Toolset的安装程序还提供与Visual Studio的集成,安装后您应该能够创建特定于WiX的项目。

警告

需要管理员权限。

某些版本的WiX仅与特定版本的Visual Studio兼容:

  • V3.11及之后不包含Visual Studio的扩展,您必须下载Visual Studio版本的扩展
  • V3.10及更低版本不适用于Visual Studio 2017,但包含Visual Studio的项目模板

细节

安装程序是使用WiX本身构建的,并提供了一个不寻常的窗口: WiX安装程序窗口

它由6部分组成:

  • WiX工具集:显示安装程序安装的版本,然后单击启动Wix Toolset网站

  • 许可证:显示许可证

  • 安装:开始安装

  • 最新:检查是否有新版本

  • 新闻:推出WiX新闻

  • 退出:关闭安装程序

简单的设置

此示例假定已存在名为MyApp 的应用程序的解决方案。

  • 向解决方案添加新项目: 添加安装项目
  • 在“安装”项目中,从“项目”选项卡添加对MyApp 的新引用: 添加MyApp参考
  • Product.wxs 文件中,使用HelloWorldProduct 节点的Manufacturer 属性进行增值:
<Product Id="*" Name="MyApp.Setup" Language="1033" Version="1.0.0.0" Manufacturer="HelloWorld" UpgradeCode="52f2c69b-5901-4d18-bb96-8c1c86cd1a3e">
 

在包含Directory 节点的Fragment 节点中,使用新Directory 包装最后一个节点:

<Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
    <Directory Id="INSTALLFOLDER" Name="MyApp.Setup" />
</Directory>
 

ComponentGroup 节点中,取消注释已注释的节点并删除TODO 然后在Component 添加File 节点:

<File Source="$(var.MyApplication.TargetPath)" />
 

Source属性指定在构建期间在哪里查找要打包的文件。我们使用传递给WiX编译器的WiX预处理器变量,而不是将这些属性的值硬编码到源代码中。

  • 构建WiX项目。

而已!现在您有了一个可以安装和卸载应用程序的工作安装程序。


完整的Product.wxs 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="MyApp.Setup" Language="1033" Version="1.0.0.0" Manufacturer="HelloWorld" UpgradeCode="52f2c69b-5901-4d18-bb96-8c1c86cd1a3e">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="MyApp.Setup" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
                    <Directory Id="INSTALLFOLDER" Name="MyApp.Setup" />
                </Directory>
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <Component Id="ProductComponent">
                <File Source="$(var.MyApp.TargetPath)" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>