为什么要正规打包
把 exe 丢给用户,等于把安装、写注册表、丢 DLL、卸载残留全留给用户。正规打包则把应用放进一个受管的容器:安装干净、卸载干净、权限受控、可自动更新。对面向企业或公开发布的 Windows 应用,正规打包是底线,不是加分项。
打包的目标:装得干净、卸得干净、升得干净。
三种分发形态
- MSIX受管容器,推荐。
- 安装程序WiX 等传统包。
- 便携版免安装,按需。
MSIX 是什么
MSIX 是微软推的现代打包格式。它把应用和依赖打包成一个包,安装时展开到受管目录,不需要写全局注册表。应用声明自己需要的能力,系统按声明授权。卸载时整个目录清掉,不留垃圾。
打包与签名
MSIX 包必须签名才能安装。开发阶段用测试证书,公开发布要用受信任的代码签名证书。签名保证包没被篡改、来源可追溯。打包工具既能命令行也能在 IDE 里图形化完成。
# 伪代码:打包并签名(示意)
# msixpackag /create /package app.msix
# signtool sign /fd SHA256 /f cert.pfx app.msix
商店与旁加载
公开应用可以上架 Microsoft Store,用户一键安装、自动更新。企业内网场景则用旁加载:把 MSIX 包分发给内网机器,配好信任策略后安装。两条路用的是同一个包格式。
更新与卸载
MSIX 用新版本号原地更新,用户无感。卸载时连数据和受管目录一起清。但要注意:用户数据如果写在受管目录外的公共位置,卸载不会自动清。设计时把数据放对位置。
落地清单
- 先签名没签名装不上。
- 数据放对卸载才干净。
- 版本递增更新才生效。
- 旁加载策略企业机要配。
常见坑
最常见的坑是受管容器权限收得紧:应用以为能随便写 C 盘,结果被拒。声明能力、隔离存储位置,是迁移到老打包格式时最要改的两件事。
小结与延伸阅读
MSIX 把 Windows 应用从「散落的 exe」变成「受管的包」。签名、商店/旁加载、版本更新三件事做对,分发就稳了。
- 跨平台读《.NET MAUI 跨平台应用实战》。
- WinUI 宿主读《WinUI 3 与 WinAppSDK 进阶实战》。
- CI 发布读《CI/CD 流水线实战》。