WIX项目中的XML文件怎么写 WIX安装包制作

来源:编程网作者:唐僧头衔:草根站长
导读:本期聚焦于小伙伴创作的《WIX项目中的XML文件怎么写 WIX安装包制作》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《WIX项目中的XML文件怎么写 WIX安装包制作》有用,将其分享出去将是对创作者最好的鼓励。

WIX是基于Windows Installer的安装包制作工具集,它通过XML文件来定义安装包的所有内容,包括安装的文件、注册表项、快捷方式、安装界面等。编写正确的XML文件是生成可用WIX安装包的核心步骤。

WIX项目中的XML文件怎么写 WIX安装包制作

WIX XML文件的基础结构

一个最基础的WIX XML文件需要包含固定的命名空间和根标签,整体结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="测试程序" Language="1033" Version="1.0.0.0" Manufacturer="测试厂商" UpgradeCode="替换成唯一的GUID">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="已安装更高版本的程序,无法继续安装。" />
    <MediaTemplate />
    <Feature Id="ProductFeature" Title="主程序" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
  </Product>
  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <!-- 这里添加需要安装的文件组件 -->
    </ComponentGroup>
  </Fragment>
</Wix>

其中<Wix>是根标签,所有配置都写在这个标签内部。<Product>标签定义安装包的核心属性,包括产品名称、版本、厂商、升级规则等。<Fragment>标签用于存放可复用的配置片段,比如文件组件、目录定义等。

常用标签及配置说明

目录定义标签

安装包需要指定文件的安装路径,通过<Directory>标签可以定义目录结构,示例如下:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
      <Directory Id="INSTALLFOLDER" Name="测试程序">
        <!-- 安装目录下的子目录可以继续嵌套定义 -->
      </Directory>
    </Directory>
  </Directory>
</Fragment>

TARGETDIR是Windows Installer的预定义根目录,ProgramFilesFolder对应系统的Program Files目录,INSTALLFOLDER是我们自定义的安装根目录,后续组件的文件都会安装到这个目录下。

文件组件标签

需要安装的文件要放在<Component>标签中,每个组件需要设置唯一的Id和Guid,示例如下:

<Fragment>
  <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    <Component Id="MainExeComponent" Guid="替换成唯一的GUID">
      <File Id="MainExe" Source="$(var.TestProject.TargetPath)" KeyPath="yes" />
    </Component>
    <Component Id="ConfigFileComponent" Guid="替换成唯一的GUID">
      <File Id="ConfigFile" Source="config.ini" KeyPath="yes" />
    </Component>
  </ComponentGroup>
</Fragment>

<File>标签的Source属性指定源文件的路径,如果是WIX项目引用了其他项目,可以用$(var.项目名称.TargetPath)的方式获取输出文件路径。KeyPath设置为yes表示该文件是组件的关键路径,用于判断组件是否已安装。

快捷方式标签

如果需要创建桌面或开始菜单快捷方式,需要使用<Shortcut>标签,示例如下:

<Component Id="DesktopShortcutComponent" Guid="替换成唯一的GUID" Directory="DesktopFolder">
  <Shortcut Id="DesktopShortcut" Name="测试程序" Target="[INSTALLFOLDER]Test.exe" WorkingDirectory="INSTALLFOLDER" />
  <RemoveFolder Id="DesktopFolder" On="uninstall" />
  <RegistryValue Root="HKCU" Key="Software测试厂商测试程序" Name="DesktopShortcut" Type="integer" Value="1" KeyPath="yes" />
</Component>

Directory属性指定快捷方式的存放位置,DesktopFolder是预定义的桌面目录,开始菜单目录可以用ProgramMenuFolder。<RemoveFolder>标签确保卸载时删除对应的快捷方式,<RegistryValue>用于记录快捷方式的状态,避免重复创建。

完整示例:生成带主程序和快捷方式的安装包

以下是一个完整的WIX XML文件示例,包含目录定义、主程序文件、桌面快捷方式和开始菜单快捷方式:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="测试程序" Language="1033" Version="1.0.0.0" Manufacturer="测试厂商" UpgradeCode="12345678-1234-1234-1234-123456789012">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="已安装更高版本的程序,无法继续安装。" />
    <MediaTemplate />
    <Feature Id="ProductFeature" Title="主程序" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentRef Id="DesktopShortcutComponent" />
      <ComponentRef Id="StartMenuShortcutComponent" />
    </Feature>
  </Product>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="测试程序">
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ProgramMenuSubfolder" Name="测试程序">
      </Directory>
      <Directory Id="DesktopFolder" />
    </Directory>
  </Fragment>
  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="MainExeComponent" Guid="87654321-4321-4321-4321-210987654321">
        <File Id="MainExe" Source="$(var.TestProject.TargetPath)" KeyPath="yes" />
      </Component>
    </ComponentGroup>
  </Fragment>
  <Fragment>
    <Component Id="DesktopShortcutComponent" Guid="11111111-2222-3333-4444-555555555555" Directory="DesktopFolder">
      <Shortcut Id="DesktopShortcut" Name="测试程序" Target="[INSTALLFOLDER]Test.exe" WorkingDirectory="INSTALLFOLDER" />
      <RemoveFolder Id="RemoveDesktopFolder" On="uninstall" />
      <RegistryValue Root="HKCU" Key="Software测试厂商测试程序" Name="DesktopShortcut" Type="integer" Value="1" KeyPath="yes" />
    </Component>
    <Component Id="StartMenuShortcutComponent" Guid="66666666-7777-8888-9999-000000000000" Directory="ProgramMenuSubfolder">
      <Shortcut Id="StartMenuShortcut" Name="测试程序" Target="[INSTALLFOLDER]Test.exe" WorkingDirectory="INSTALLFOLDER" />
      <RemoveFolder Id="RemoveProgramMenuFolder" On="uninstall" />
      <RegistryValue Root="HKCU" Key="Software测试厂商测试程序" Name="StartMenuShortcut" Type="integer" Value="1" KeyPath="yes" />
    </Component>
  </Fragment>
</Wix>

编写好XML文件后,使用WIX的编译工具candle.exe编译成wixobj文件,再用light.exe链接生成msi安装包即可。如果是在Visual Studio中使用WIX项目,直接生成项目就会自动完成编译和链接步骤。

WIXXML安装包制作Windows_Installer修改时间:2026-07-18 07:45:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。