讲师中心 微信公众号
AI工具推荐 视频效率加速

WIX工具集是什么 如何用XML来创建Windows安装程序

落磊小哥_5979

落磊小哥_5979

发布时间:2026-01-30 10:54:10

|

775人浏览过

|

来源于php中文网

原创

WiX工具集是微软官方认可的基于XML的开源Windows安装包构建系统,直接调用MSI API,生成标准msi或exe安装包,支持企业级部署能力。

wix工具集是什么 如何用xml来创建windows安装程序

WIX工具集(WiX Toolset)不是“XML安装程序生成器”的简化版,它是微软官方认可的、基于 XML 的开源 Windows 安装包构建系统,底层直接调用 Windows Installer(MSI)API。它不提供可视化拖拽界面,也不生成 .exe 自解压包——你写的 XML 最终编译成标准 msi 或 exe(含引导程序),能通过 msiexec 部署、支持静默安装、策略组管理、修复/卸载事务等企业级能力。

WiX 项目结构和核心文件怎么组织

一个最小可构建的 WiX 项目至少包含三个部分:Product.wxs(主安装逻辑)、WixUI.wxs(可选 UI)、project.wixproj(MSBuild 项目文件)。WiX 不依赖 Visual Studio,但 VS 插件能提升编辑体验;命令行构建靠 candle.exe(编译 .wxs → .wixobj)和 light.exe(链接 .wixobj → .msi)。

  • Product.wxs 必须有 <wix></wix> 根节点,内嵌 <product></product>,且 Id 必须是合法 GUID(可用 guidgen.exe 或在线生成器)
  • 所有文件资源必须显式声明在 <component></component> 内,每个 <component></component> 必须有唯一 Id 和一个 Guid(用于 MSI 组件注册,不能为 * 除非开发阶段)
  • <directory></directory> 层级需完整:从 ProgramFilesFolder 开始,逐级定义子目录,路径名区分大小写(如 MyApp ≠ myapp)

wixstdba 和 Burn 引导程序怎么启用自定义 UI

Burn 是 WiX 的引导程序框架,用于打包多个 MSI、EXE 或处理运行时依赖(如 .NET 运行时)。默认 WixStandardBootstrapperApplication(wixstdba)只提供基础进度条;要加 logo、按钮文字或跳过 EULA,必须自定义 BootstrapperApplicationRef 并重写 Bundle.wxs 中的 <variable></variable> 和 <chain></chain>。

直播间话术巡检-windows
直播间话术巡检-windows

直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。

下载
  • 修改安装包标题:在 <bundle></bundle> 节点设 DisplayName 属性,值会显示在控制面板“已安装程序”列表中
  • 添加 .NET 检查:用 <condition></condition> + WixNetFxExtension 提供的 NETFRAMEWORK45 变量,失败时自动下载安装
  • 静默安装参数:生成的 setup.exe 支持 /quiet(无 UI)、/norestart(不重启)、/log install.log(记录详细日志)

常见编译错误和对应 XML 修复方式

WiX 编译失败多数源于 XML 结构非法或 MSI 语义冲突,不是语法错误。例如 candle.exe 报 “The Component element contains an unhandled extension element 'File'” —— 实际是漏写了 <component></component> 包裹 <file></file>;而 light.exe 报 “ICE03: Invalid language ID” 则是 Product/@Language 值不是十进制整数(如误填 "1033" 带引号,应为 1033)。

  • error CNDL0005: The Product/@Version attribute's value, '1.0', is not a valid version string → Version 必须为 x.y.z 格式(如 1.0.0),不能含字母或前导零
  • error LGHT0217: Error while signing → 若启用了 -sval 参数但未配置证书,删掉该参数或用 signtool.exe 单独签名生成的 .msi
  • 安装后找不到文件:检查 <file></file> 的 Source 属性是否为相对路径(相对于 .wxs 文件所在目录),且文件真实存在;绝对路径会被拒绝
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
  <Product Id="*" Name="MyApp" Language="1033" Version="1.0.0" Manufacturer="MyCorp" UpgradeCode="PUT-GUID-HERE">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
    <Feature Id="ProductFeature" Title="MyApp" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
  </Product>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="MyApp" />
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="MyAppExe" Guid="*">
        <File Id="MyAppExe" Source="MyApp.exe" KeyPath="yes" />
      </Component>
    </ComponentGroup>
  </Fragment>
</Wix>
WiX 的 XML 看似自由,实则每处属性都绑定 MSI 数据库表字段。最易被忽略的是 KeyPath:它决定组件是否“激活”,漏设会导致卸载时残留文件;而 Guid="*" 在生产环境必须替换为固定值,否则每次构建都会被视为新组件,引发升级失败。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6739

2023.08.02

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

354

2023.09.25

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4744

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

6157

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2522

2024.11.28

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1009

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3120

2023.10.25

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3299

2023.07.26

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap5 入门教程
Bootstrap5 入门教程

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn