winget-cli 的 Update-WinGetPackage 命令详解:用 Microsoft.WinGet.Client PowerShell 模块批量升级已安装软件包
包管理器CLI【免费下载链接】winget-cliWinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).项目地址https://gitcode.com/gh_mirrors/wi/winget-cli点击查看免费下载Update-WinGetPackage 是 winget-cli 项目附带的 Microsoft.WinGet.Client PowerShell 模块中用于升级已安装软件包的核心 cmdlet。本文以该 cmdlet 的官方帮助文档为主体结合模块源码、示例脚本与自动化测试系统讲解其语法、全部参数、典型用法以及从 PowerShell 层到 WinGet COM API 的底层调用链帮助读者在日常脚本与自动化场景中精准、安全地完成包升级。命令概述SYNOPSISUpdate-WinGetPackage的职责是在已安装的软件包中搜索匹配项并从已配置的源source中安装匹配软件包的更新版本。它等价于winget upgrade命令行在 PowerShell 模块中的对应实现适用于需要在 PowerShell 脚本中批量升级软件、或通过管道与其他 cmdlet 组合使用的场景。命令在模块中的注册位置为 UpdatePackageCmdlet.cs源码中通过[Cmdlet(VerbsData.Update, Constants.WinGetNouns.Package, ...)]注册并提供了别名udwgp[Cmdlet( VerbsData.Update, Constants.WinGetNouns.Package, DefaultParameterSetName Constants.FoundSet, SupportsShouldProcess true)] [Alias(udwgp)] [OutputType(typeof(PSInstallResult))] public sealed class UpdatePackageCmdlet : InstallCmdlet从源码可以看出两个关键事实命令的默认参数集是 FoundSet即按查询条件搜索后升级且声明了SupportsShouldProcess true因此完整支持-WhatIf与-Confirm这类 ShouldProcess 公共参数。语法SYNTAX该 cmdlet 包含两个参数集分别对应两种升级方式。FoundSet默认参数集按搜索条件定位包Update-WinGetPackage [-IncludeUnknown] [-Mode PSPackageInstallMode] [-Override String] [-Custom String] [-Location String] [-Log String] [-Force] [-Header String] [-AllowHashMismatch] [-Architecture PSProcessorArchitecture] [-InstallerType PSPackageInstallerType] [-Locale String] [-Scope PSPackageInstallScope] [-SkipDependencies] [-Version String] [-Id String] [-Name String] [-Moniker String] [-Source String] [[-Query] String[]] [-MatchOption PSPackageFieldMatchOption] [-WhatIf] [-Confirm] [CommonParameters]GivenSet直接给定包对象Update-WinGetPackage [-IncludeUnknown] [-Mode PSPackageInstallMode] [-Override String] [-Custom String] [-Location String] [-Log String] [-Force] [-Header String] [-AllowHashMismatch] [-Architecture PSProcessorArchitecture] [-InstallerType PSPackageInstallerType] [-Locale String] [-Scope PSPackageInstallScope] [-SkipDependencies] [[-PSCatalogPackage] PSCatalogPackage] [-Version String] [-WhatIf] [-Confirm] [CommonParameters]两者的差异集中在如何确定要升级的包FoundSet通过-Id、-Name、-Moniker、-Source、-Query、-MatchOption等搜索条件在源中定位包GivenSet通过-PSCatalogPackage别名InputObject位置 0直接传入由Find-WinGetPackage或Get-WinGetPackage产出的包对象支持管道按值ByValue传入。功能描述DESCRIPTION命令会先扫描系统上已安装的软件包再为匹配的 WinGet 包安装更新版本。默认行为要点如下默认在所有已配置的源中搜索所有基于字符串的搜索默认是不区分大小写的子串匹配不支持通配符可通过-MatchOption参数改变搜索匹配方式。从引擎源码 InstallerPackageCommand.cs 的Update方法可以看到升级路径与安装路径的关键差异在于搜索行为与目标目录var result this.Execute( async () await this.GetPackageAndExecuteAsync( CompositeSearchBehavior.LocalCatalogs, PSEnumHelpers.ToPackageFieldMatchOption(psPackageFieldMatchOption), async (package, version) { InstallOptions options this.GetInstallOptions(version, psPackageInstallMode); options.AllowUpgradeToUnknownVersion includeUnknown; ... return await this.UpgradePackageAsync(package, options); }));升级使用CompositeSearchBehavior.LocalCatalogs本地已安装目录定位已安装包而Install方法使用CompositeSearchBehavior.RemotePackagesFromRemoteCatalogs远程目录中的包-IncludeUnknown会映射为InstallOptions.AllowUpgradeToUnknownVersion决定是否允许升级到注册表中未记录版本的包最终通过PackageManagerWrapper.Instance.UpgradePackageAsync(package, options)调用底层 WinGet COM API 完成升级。示例EXAMPLES官方帮助文档提供了 5 个典型示例覆盖了绝大多数使用场景。示例 1使用查询字符串升级包Update-WinGetPackage Microsoft.PowerShell-Query是位置参数Position 0因此无需写出参数名直接传查询字符串即可。示例 2按包标识符Id升级Update-WinGetPackage -Id Microsoft.PowerShell按包标识符定位目标。注意如果同一标识符存在于多个源中必须补充额外的搜索条件如-Source来选中具体的那一个包实例。示例 3按包名称升级Update-WinGetPackage -Name PowerToys (Preview)按包显示名称定位目标名称含空格时需用引号包裹。示例 4升级到指定版本Update-WinGetPackage Microsoft.PowerShell -Version 7.4.4.0先按Microsoft.PowerShell执行查询搜索再将搜索结果限定为版本7.4.4.0的包。示例 5升级所有可升级的包Get-WinGetPackage | Where-Object IsUpdateAvailable | Update-WinGetPackage通过管道将Get-WinGetPackage输出的包对象过滤出存在可用升级IsUpdateAvailable属性为真的项再逐项升级。这是批量更新所有软件的标准写法。模块自带的示例脚本 Sample_UpdatePackage.ps1 还补充了更多组合用法可作为参考# 按名称升级 Update-WinGetPackage -Name powertoys # 按标识符 指定版本升级 Update-WinGetPackage -Id Microsoft.PowerToys -Version 0.15.2 # 静默模式升级 Update-WinGetPackage -Id Microsoft.PowerToys -Mode Silent # 强制升级 Update-WinGetPackage -Id Microsoft.PowerToys -Force参数详解PARAMETERS以下按官方帮助文档完整列出所有参数并结合源码补充每个参数的默认值与底层映射。-AllowHashMismatch允许在安装程序或依赖项的 SHA256 哈希与 WinGet 包清单中记录的哈希不一致时仍然下载并安装该包。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False该参数定义在公共基类 InstallerSelectionCmdlet.cs 中注释明确其为跳过安装程序哈希校验。仅在确认来源可信时使用否则会带来安全风险。-Architecture指定安装包的处理器架构。可选值DefaultX86ArmX64Arm64Type: Microsoft.WinGet.Client.PSObjects.PSProcessorArchitecture Parameter Sets: (All) Accepted values: Default, X86, Arm, X64, Arm64 Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False源码中该属性的默认值为PSProcessorArchitecture.Default。在引擎层若传入非Default的架构会清空InstallOptions.AllowedArchitectures并仅加入指定架构从而约束安装程序选择。-Custom向安装程序传递额外的自定义参数。参数接受单个字符串如需多个参数可把它们都写进同一个字符串。字符串须符合安装程序期望的参数格式若字符串包含空格必须用引号包裹。该字符串会追加到包清单中定义的参数之后。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Force强制运行安装程序执行升级即跳过非安全相关的失败继续执行。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False该参数定义于 InstallCmdlet.cs源码注释为在非安全相关失败时继续执行。-Header为 REST 源指定自定义 HTTP 请求头值。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Id指定要搜索的包标识符。默认执行不区分大小写的子串匹配。Type: System.String Parameter Sets: FoundSet Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-IncludeUnknown当已安装包的版本未记录在注册表中时允许对其进行升级即升级到未知版本。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False该参数是UpdatePackageCmdlet自身独有的属性不继承自基类在引擎层映射为InstallOptions.AllowUpgradeToUnknownVersion。-InstallerType一个包可能包含多种安装程序类型用此参数选择要使用的安装程序。可选值DefaultInnoWixMsiNullsoftZipMsixExeBurnMSStorePortableType: Microsoft.WinGet.Client.PSObjects.PSPackageInstallerType Parameter Sets: (All) Accepted values: Default, Inno, Wix, Msi, Nullsoft, Zip, Msix, Exe, Burn, MSStore, Portable Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Locale指定安装包的语言区域locale须使用 BCP 47 格式例如en-US。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Location指定包的安装目录。安装程序必须支持备选安装位置否则该参数无效。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False源码中Location属性见 InstallCmdlet.cs对相对路径做了特殊处理若传入的不是绝对路径会自动拼接当前 PowerShell 文件系统位置即SessionState.Path.CurrentFileSystemLocation \ value。-Log指定安装程序日志文件的保存位置。值可以是完全限定路径或相对路径且必须包含文件名例如$env:TEMP\package.log。注意并非所有安装程序都支持该属性。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-MatchOption指定 WinGet 包查询的匹配方式。可选值Equals完全相等EqualsCaseInsensitive忽略大小写的完全相等StartsWithCaseInsensitive忽略大小写的前缀匹配ContainsCaseInsensitive忽略大小写的子串匹配Type: Microsoft.WinGet.Client.PSObjects.PSPackageFieldMatchOption Parameter Sets: FoundSet Accepted values: Equals, EqualsCaseInsensitive, StartsWithCaseInsensitive, ContainsCaseInsensitive Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False注意该参数仅属于 FoundSet 参数集。源码中其默认值为ContainsCaseInsensitive见 FinderCmdlet.cs与帮助文档默认子串匹配的描述一致。-Mode指定安装程序的运行模式。可选值DefaultSilentInteractive并非所有安装程序都支持全部模式。Type: Microsoft.WinGet.Client.PSObjects.PSPackageInstallMode Parameter Sets: (All) Accepted values: Default, Silent, Interactive Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False源码中Mode的默认值为PSPackageInstallMode.Default。-Moniker指定要升级包的 moniker别名标识。例如Microsoft.PowerShell包的 moniker 是pwsh。Type: System.String Parameter Sets: FoundSet Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Name指定要升级的包的显示名称。Type: System.String Parameter Sets: FoundSet Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Override覆盖传递给安装程序的既有参数。与-Custom追加不同该字符串会替换包清单中定义的安装参数。参数接受单个字符串多个参数写在同一个字符串中含空格时必须用引号包裹。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-PSCatalogPackage直接提供PSCatalogPackage对象。可通过Find-WinGetPackage或Get-WinGetPackage命令获取该对象。Type: Microsoft.WinGet.Client.Engine.PSObjects.PSCatalogPackage Parameter Sets: GivenSet Aliases: InputObject Required: False Position: 0 Accept pipeline input: True (ByPropertyName, ByValue) Accept wildcard characters: False该参数仅属于 GivenSet 参数集是唯一同时支持按属性名与按值管道输入的参数——这正是Get-WinGetPackage | Update-WinGetPackage管道链能够工作的机制基础。-Query指定一个或多个要搜索的字符串。默认在全部已配置的源中搜索不支持通配符。命令会将提供的值与以下包清单属性进行比较PackageIdentifierPackageNameMonikerTags比较方式为不区分大小写的子串比较。Type: System.String[] Parameter Sets: FoundSet Required: False Position: 0 Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False源码中Query还带有ValueFromRemainingArguments true见 FinderCmdlet.cs即允许将位置参数中剩余的所有字符串都归入查询词。-Scope指定安装程序的安装范围。可选值AnyUserSystemUserOrUnknownSystemOrUnknown注意指定的安装范围必须存在于 WinGet 包清单中。Type: Microsoft.WinGet.Client.PSObjects.PSPackageInstallScope Parameter Sets: (All) Accepted values: Any, User, System, UserOrUnknown, SystemOrUnknown Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False源码中Scope的默认值为PSPackageInstallScope.Any。-SkipDependencies指定不安装 WinGet 包依赖项。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Source指定已配置的 WinGet 源的名称。不指定时搜索所有源。Type: System.String Parameter Sets: FoundSet Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False当-Id命中的包存在于多个源时可通过该参数消除歧义。-Version指定要升级到的包版本。Type: System.String Parameter Sets: (All) Required: False Position: Named Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False-Confirm在运行 cmdlet 前提示确认别名cf。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Aliases: cf Required: False Position: Named Accept pipeline input: False Accept wildcard characters: False-WhatIf显示如果 cmdlet 运行会发生什么但实际不执行别名wi。Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) Aliases: wi Required: False Position: Named Accept pipeline input: False Accept wildcard characters: FalseCommonParameters该 cmdlet 支持所有 PowerShell 公共参数-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutVariable、-OutBuffer、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable。由于 cmdlet 声明了SupportsShouldProcess true-WhatIf与-Confirm也能正常工作。输入与输出INPUTS / OUTPUTS输入类型以下类型可以通过管道按属性名ByPropertyName传入其中PSCatalogPackage额外支持按值ByValueSystem.Management.Automation.SwitchParameterMicrosoft.WinGet.Client.PSObjects.PSPackageInstallModeSystem.StringMicrosoft.WinGet.Client.PSObjects.PSProcessorArchitectureMicrosoft.WinGet.Client.PSObjects.PSPackageInstallerTypeMicrosoft.WinGet.Client.PSObjects.PSPackageInstallScopeMicrosoft.WinGet.Client.Engine.PSObjects.PSCatalogPackageSystem.String[]Microsoft.WinGet.Client.PSObjects.PSPackageFieldMatchOption输出类型Microsoft.WinGet.Client.Engine.PSObjects.PSInstallResult即每次升级都会输出一个PSInstallResult对象便于脚本捕获升级结果安装/升级状态、错误码等做后续处理。源码实现从 cmdlet 到 COM API 的完整调用链理解Update-WinGetPackage的底层原理可以沿着模块的两层架构追踪模块由Microsoft.WinGet.Client.Cmdletscmdlet 实现与Microsoft.WinGet.Client.Engine真实业务逻辑两个项目组成参见 README.md。Cmdlet 层UpdatePackageCmdlet.cs 在ProcessRecord中收集所有参数构造InstallerPackageCommand并调用其Update方法。-IncludeUnknown、-MatchOption、-Scope、-Architecture、-Mode、-InstallerType以字符串形式传入后由PSEnumHelpers转换为引擎层枚举。引擎层InstallerPackageCommand.cs 的Update方法以CompositeSearchBehavior.LocalCatalogs在本地已安装目录中定位包构造InstallOptions设置AllowUpgradeToUnknownVersion、AllowedArchitectures、InstallerType、PackageInstallScope等最终经InstallOperationWithProgress调用PackageManagerWrapper.Instance.UpgradePackageAsync(package, options)即 WinGet 的 COM API。输出层无论安装还是升级成功后都会输出PSInstallResult结果状态 错误码。这也解释了为何Update-WinGetPackage的参数与Install-WinGetPackage高度重合——两者共用 InstallCmdlet.cs-Mode、-Override、-Custom、-Location、-Log、-Force、-Header、InstallerSelectionCmdlet.cs-AllowHashMismatch、-Architecture、-InstallerType、-Locale、-Scope、-SkipDependencies以及 FinderCmdlet.cs-Id、-Name、-Moniker、-Source、-Query、-MatchOption三个公共基类仅在搜索本地已安装目录与升级而非安装这一点上分道扬镳。自动化测试中的验证模块的 Pester 测试 Microsoft.WinGet.Client.Tests.ps1 覆盖了该 cmdlet 的两条核心路径It Update by Id { $result Update-WinGetPackage -Id AppInstallerTest.TestExeInstaller Validate-WinGetPackageOperationResult $result $expectedExeInstallerResult update } It Update by Name { $result Update-WinGetPackage -Name TestPortableExe Validate-WinGetPackageOperationResult $result $expectedPortableInstallerResult update }测试先用Install-WinGetPackage安装测试包如AppInstallerTest.TestExeInstaller与便携版TestPortableExe再分别通过-Id与-Name执行升级并校验返回的PSInstallResult中安装器错误码与卸载器错误码均为 0。这说明按 Id 升级与按 Name 升级两条主路径都经过真实的安装器执行与结果校验是可靠可复现的用法。相关命令Get-WinGetPackage列出已安装的 WinGet 包可与本命令通过管道组合实现批量升级所有可升级包见示例 5。Uninstall-WinGetPackage卸载已安装的 WinGet 包构成包生命周期管理的完整闭环。使用要点小结默认搜索行为字符串搜索不区分大小写、子串匹配、不支持通配符需要精确匹配时使用-MatchOption Equals或-MatchOption EqualsCaseInsensitive。消除歧义-Id在多源命中同一标识符时报错需配合-Source或改用-Name/-Moniker精确指定。脚本安全批量升级前先用-WhatIf预览关键操作可用-Confirm交互确认。静默升级自动化场景建议使用-Mode Silent并可用-Log指定日志文件便于排障。哈希校验除非完全信任来源不要轻易使用-AllowHashMismatch绕过安装程序哈希校验。赞分享包管理器CLI【免费下载链接】winget-cliWinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).项目地址https://gitcode.com/gh_mirrors/wi/winget-cli点击查看免费下载相关推荐OpenCorePkg黑苹果引导终极实战从零配置到性能优化的完整指南OpenCorePkg黑苹果引导终极实战从零配置到性能优化的完整指南 OpenCorePkg作为现代黑苹果引导的黄金标准提供了比传统引导方式更安全、更稳定的包管理器CLIPhotoshot技术实现深度解析如何构建现代化AI头像生成系统Photoshot技术实现深度解析如何构建现代化AI头像生成系统 Photoshot是一个开源AI头像生成Web应用采用Next.js全栈架构集成Repl包管理器CLI终极指南一键掌握暗黑破坏神2角色编辑器的完整使用技巧终极指南一键掌握暗黑破坏神2角色编辑器的完整使用技巧 暗黑破坏神2角色编辑器Diablo Edit2是一款功能强大的开源工具专门用于编辑和修改暗黑破坏神包管理器CLI上一篇CUE语言安装与配置指南下一篇LSPosed开源项目安装与配置指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Gemini报错排查指南:从白屏到API错误的系统化解决思路

Gemini报错排查指南:从白屏到API错误的系统化解决思路

1. 从一次白屏说起:Gemini报错到底卡在哪一层第一次遇到Gemini显示“出了点问题”或者英文界面下的“Something went wrong”,很多人下意识反应是网络问题,然后反复刷新页面。我一开始也这么干,刷了十几次,白屏依旧&am…

2026/9/20 14:59:22 阅读更多 →
Page Assist:本地 AI 网页浏览侧边栏扩展全解

Page Assist:本地 AI 网页浏览侧边栏扩展全解

Page Assist:本地 AI 网页浏览侧边栏扩展全解 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 你正在读一篇英文长文,遇到…

2026/9/20 14:59:22 阅读更多 →
ImageJ WB灰度分析的物理本质与可重复性实践指南

ImageJ WB灰度分析的物理本质与可重复性实践指南

1. 为什么你用ImageJ做WB灰度分析总被质疑“数据不稳”?——从一张条带图说起上周帮实验室新来的博士后复现她导师三年前发表的一组WB数据,她把原始TIFF图拖进ImageJ,按常规流程:Process → Subtract Background → Analyze → Ge…

2026/9/20 14:59:22 阅读更多 →

最新新闻

ESP32 GNSS 多系统定位实战:从接线到稳定上报

ESP32 GNSS 多系统定位实战:从接线到稳定上报

ESP32 GNSS 多系统定位实战:从接线到稳定上报 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 基于 arduino-esp32 核心,把一颗 GNSS 模块接到 ESP3…

2026/9/20 19:55:43 阅读更多 →
2026年Agent学习路线:7个必读开源项目从入门到生产

2026年Agent学习路线:7个必读开源项目从入门到生产

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:55:43 阅读更多 →
BoxMOT多目标追踪上手教程:从安装到MOT17评估只需3步

BoxMOT多目标追踪上手教程:从安装到MOT17评估只需3步

BoxMOT多目标追踪上手教程:从安装到MOT17评估只需3步 【免费下载链接】boxmot BoxMOT: Pluggable Python and C SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes 项目地址: https://gitcode.com/GitHub_Trending/…

2026/9/20 19:55:43 阅读更多 →
信创服务器麒麟操作系统配置与管理实战经验

信创服务器麒麟操作系统配置与管理实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:55:43 阅读更多 →
Windows系统版本一键切换:不重装、不丢数据,单机与批量实操指南

Windows系统版本一键切换:不重装、不丢数据,单机与批量实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:55:43 阅读更多 →
Roblox游戏开发入门:脚本编程与建模技巧

Roblox游戏开发入门:脚本编程与建模技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 19:54:42 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →