ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

.NET Windows桌面运行时到底怎么用?新手完整上手指南与安装包定制

.NET Windows桌面运行时到底怎么用?新手完整上手指南与安装包定制 .NET Windows桌面运行时到底怎么用新手完整上手指南与安装包定制【免费下载链接】windowsdesktop项目地址: https://gitcode.com/gh_mirrors/wi/windowsdesktop如果你是第一次听到 .NET Windows桌面运行时 这个名字别急着划走——它可能正是你桌面应用频频装不上、打不开的终极答案。简单说.NET Windows桌面运行时是专门用来支撑Windows FormsWinForms与 WPF两类桌面程序的运行时环境而本篇文章的主角就是负责把这一整套运行时打包出厂的开源仓库。接下来我会以一个新手的视角带你看清它是什么、内部怎么分工、如何动手构建以及最容易踩的坑。一个让开发者深夜挠头的疑问先讲个真实场景。小王用 WPF 写了一个内部工具发给同事测试。同事双击安装包一路下一步最后却弹出找不到 Microsoft.WindowsDesktop.App.Runtime。小王懵了明明自己机器上跑得好好的怎么换台电脑就不行这个问题的根源就是目标电脑上缺少对应的桌面运行时。而 .NET Windows桌面运行时项目解决的正是如何把运行时干净、可靠、可定制地装到任意一台 Windows 电脑上这件事。它不是某个具体软件而是一整套构建安装包的流水线。先搞明白桌面运行时与 WinForms、WPF 的关系很多人把框架和运行时混为一谈这里用一个比喻说清WinForms / WPF是菜谱告诉你界面怎么画、事件怎么处理.NET 运行时是灶台和锅负责真正把代码烧成熟饭桌面运行时则是在灶台基础上额外配齐了 WinForms 和 WPF 专用的厨具——比如 WPF 渲染依赖的图形组件、手写笔输入组件等。所以当你发布一个桌面应用光有应用本身是不够的目标机器上必须有一套匹配的厨具。这个仓库干的事就是把这套厨具批量生产、打包、验证最终输出成用户双击即可安装的 exe。为什么桌面应用安装总是翻车结合项目源码你会看到开发者为此操了多少心。最常见的三种翻车现场翻车场景背后原因装了新版旧版应用却打不开运行时升级不兼容缺少回退保护32 位和 64 位运行时打架安装路径检测失误装到了错误的目录安装中途报错系统残留一堆半成品缺少事务回滚机制失败后无法恢复在仓库的安装脚本src/windowsdesktop/src/bundle/bundle.wxs里这些坑都有对应的防线安装器会先扫描注册表、检查现有的 dotnet 安装位置用RollbackBoundary给整个安装过程加了一道后悔药任何一环失败都能整体回滚还通过固定的UpgradeCode打通了预览版 → 正式版 → 服务更新的平滑升级通道。这些细节正是安装成功率高的底气所在。项目核心模块拆解bundle 与 sfx整个仓库的精华集中在src/windowsdesktop/src/下两大模块分工明确安装包流水线bundle 模块bundle 模块基于 WiX 工具链构建安装程序核心文件包括bundle.wxs安装主脚本定义了安装组件的依赖顺序——先装 Host主机、再装 HostFxr解析器、然后是 .NET 运行时本体最后才是桌面运行时。顺序错了程序就起不来bundle.thm安装界面的装修图纸字号、颜色、按钮位置都在这里theme/目录14 个语言文件夹覆盖简体中文、繁体中文、日语、韩语、德语、法语等主流语言dotnet.ico与DotNetLogo_256x.png安装包的品牌图标资源。运行时配方sfx 模块sfx 模块负责产出两类包引用包Ref给开发者编译时使用运行时包Runtime给最终用户安装。在src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj里你能看到 WPF 专属的原生组件清单——wpfgfx_cor3.dll图形渲染、DirectWriteForwarder.dll文字渲染、PenImc_cor3.dll手写笔支持等。也就是说WinForms 和 WPF 各需要什么、共用什么在这里一目了然。三步上手从源码到安装包对只想看懂的新手来说不需要亲自编译整个仓库但了解完整流程会让你对它有更立体的认识。整个过程大体分三步第一步准备构建环境项目要求.NET 9 SDK环境。仓库根目录的global.json里锁定了 SDK 版本eng/目录下还准备了dotnet-install.sh、init-tools-native.sh等辅助脚本帮你快速搭好环境。第二步获取源码把仓库克隆到本地即可开始探索git clone https://gitcode.com/gh_mirrors/wi/windowsdesktop克隆完成后你可以在Build.proj中看到整体构建入口在azure-pipelines.yml中看到官方 CI 的完整步骤——想复刻官方构建流程照着它抄作业就行。第三步按需构建Windows 环境可以参考eng/下的构建脚本执行。如果你只是想研究安装包结构直接在src/windowsdesktop/src/bundle/里阅读bundle.wxs和Wix.targets就能理解安装器的组装逻辑完全不用等编译完成。定制你的安装包主题与多语言这是很多团队真正关心的部分——如何把微软默认的安装界面改成自家风格。改主题从 bundle.thm 下手bundle.thm采用 XML 描述界面想换主色调改WindowBannerFont的背景色想让标题更大更醒目调整字号和字重即可。值得注意的细节是文件里注释提醒自定义颜色要保证4.5:1 以上的对比度大字可放宽到 3:1并且自定义字体颜色要用 BGR 而不是常见的 RGB 顺序——这些坑原项目注释里都替开发者标注好了。加语言复制文件夹即可想增加一种新语言在theme/下复制一个现成语言文件夹把thm.wxl里的界面文案翻译成目标语言再在bundle.wxs的循环列表里补上对应的 LCID 编号即可。例如简体中文对应2052、日语对应1041。之后安装程序就会自动根据用户系统语言显示对应界面。新手避坑清单这些坑提前知道能省一天基于对源码的阅读整理几条高频踩坑点别乱动升级码Wix.props里的WindowsDesktopBundleNamespaceGuid被注释明确标注DO NOT CHANGE改了会导致无法识别旧版本、升级路径断裂注意 32 位与 64 位的安装路径差异源码中专门用条件判断处理 x86 装在 64 位系统时的路径问题自行定制时别想当然用固定目录多语言主题别只改文案bundle.thm里对不同页面安装中、成功、失败、修复都有独立文案漏改某页会出现一半中文一半英文的尴尬界面验证产物别跳过仓库的src/windowsdesktop/tests/里有专门的 NuGet 产物测试如NuGetArtifactTester.cs官方连打包出来的文件都要做体检你定制后也建议跑一遍测试。谁适合深入这个项目桌面应用开发者想搞懂运行时到底装了些什么读 sfx 模块的组件清单是最高效的途径企业 IT / 运维需要批量部署桌面运行时的环境理解 bundle 的安装与升级机制能少走很多弯路安装包定制需求方需要多语言、品牌化安装界面的团队直接改造 bundle 模块比从零写安装器靠谱得多开源学习者这是一个非常规整的工程化范例——构建、打包、测试、CI 全链路齐全值得通读。结语从看得懂到用得上回到开头小王的困惑当他明白了桌面运行时和 WinForms、WPF 的关系看懂了这个仓库如何把运行时安全、可回滚、多语言地装进用户电脑那台装不上的电脑就不再是玄学而是可以定位、可以修复的具体问题。如果你正在做 Windows 桌面应用或单纯想理解 .NET 桌面生态的底层拼图建议现在就克隆这份源码先读bundle.wxs的安装链再看一眼theme/里的多语言文案——两小时之内你就能对安装一个桌面运行时到底发生了什么有全新的认知。下一次当你的用户再问为什么装不上时你大概可以笑着回答放心这次我连回滚方案都准备好了。【免费下载链接】windowsdesktop项目地址: https://gitcode.com/gh_mirrors/wi/windowsdesktop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表