news 2026/9/11 15:26:06

WinApps 图标提取:如何从 EXE 里取出清晰的应用图标

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WinApps 图标提取:如何从 EXE 里取出清晰的应用图标

WinApps 图标提取:如何从 EXE 里取出清晰的应用图标

【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps

WinApps 让你把 Office、Adobe 这类软件装进一台 Linux 虚拟机或容器里的 Windows,再当成桌面原生应用来启动。但决定它"像不像原生"的,往往是启动器上那颗图标。这篇文章带你拆解 WinApps 图标提取的完整链路:它如何从 EXE 里把图标读出来、存到哪里,以及你在 Linux 上运行 Windows 应用时,四步就能拿到全部应用图标。

为什么 Linux 桌面需要 Windows 应用的图标

没有图标,你就得靠一堆灰色占位图去辨认 Word、Photoshop,放大还糊,用几次就想删掉这些"外来"应用。WinApps 的思路很直接:把 EXE 里本来就有的图标抠出来,贴到 Linux 启动项上,让它们和本机软件长得一样。需要说明的是,你的 Windows 软件实际跑在一台虚拟机里,比如 QEMU/KVM 中名为 RDPWindows 的那扇窗口。

它如何找到已安装的 Windows 应用

WinApps 靠四个来源把"装了哪些应用"摸出来:读 Windows 注册表里的 App Paths 键拿到已注册的可执行文件;扫描 Chocolatey 的 shims 目录(C:\ProgramData\chocolatey\bin);扫描 Scoop 的 shims 目录(~/scoop/shims);用 Get-AppxPackage 列出非系统的 UWP 应用。每一条命中都带上应用名和 EXE 路径,来源若不是注册表,还会在名字后标注来源,方便你在 Linux 端区分。

从 EXE 到 PNG 的提取流程

核心在 install/ExtractPrograms.ps1 里,每个 EXE 走三步:

  1. 用 System.Drawing.Icon.ExtractAssociatedIcon 读出该 EXE 的关联图标;
  2. 把图标画到一张位图上,按 PNG 格式存进内存流,保留原始分辨率和色彩深度;
  3. 把 PNG 字节编码成 base64 字符串,交给 Linux 端读取。

如果某一步失败,脚本会退回一张通用的 32×32 占位 PNG,保证启动器不空着。

提取出的图标放在哪里

这里有两套并存的图标,别搞混。一套是预置的:社区验证过的应用,仓库里 apps/ 下每个子文件夹都放了一张高分辨率 icon.svg(比如 apps/word/icon.svg),是矢量图,放大不糊。另一套是动态的:对没预置的应用,脚本现场从 EXE 提取出的 base64 PNG 会被缓存进本地一个 detected 文件,下次就不用重新提取。前者负责"好看",后者负责"全"。

上手体验:四步拿到全部应用图标

  1. 克隆仓库:git clone https://gitcode.com/GitHub_Trending/wina/winapps
  2. 把 Windows 装进虚拟机或容器(libvirt / Docker / Podman 都行);
  3. 跑 setup.sh,按菜单选择"当前用户"还是"系统"安装;
  4. 脚本自动扫描并提取所有应用的图标。

进阶玩法:把提取当独立工具用

这套逻辑不挑 WinApps,你也可以单独拿来用:对一批 EXE 批量提取应用图标,一次拿全;把 Windows 图标统一转成 PNG,方便跨平台复用;或给你的自研启动器、应用中心配上一套清晰图标。读懂 install/ExtractPrograms.ps1 里的 GetApplicationIcon 函数,就是起点。


这样,一个"从 EXE 提取图标"的小脚本,就成了 Linux 上让 Windows 应用"长得像原生"的关键一环。

【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 15:25:30

OpenCV 安装与配置指南:从源码编译到跑通第一个图像处理结果

OpenCV 安装与配置指南:从源码编译到跑通第一个图像处理结果 【免费下载链接】opencv Open Source Computer Vision Library 项目地址: https://gitcode.com/GitHub_Trending/opencv31/opencv OpenCV 是开源计算机视觉库,一次完整的 OpenCV 安装能…

作者头像 李华
网站建设 2026/9/11 15:24:53

音乐平台VMP保护签名参数逆向分析与实战

1. 项目背景与核心挑战最近在分析某音乐平台接口时发现其核心签名参数qMusicSign采用了VMP(Virtual Machine Protection)保护机制。这种保护方式在Web逆向领域越来越常见,特别是涉及版权保护的平台。作为前端安全工程师,我花了三周…

作者头像 李华
网站建设 2026/9/11 15:19:11

JAVA毕业设计-基于 SpringBoot 的校园学生健康监测系统的设计与实现 基于 SpringBoot 的大学生健康管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/9/11 15:18:53

OpenClaw云端部署与集成:4分钟跑通智能体底座

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

作者头像 李华
网站建设 2026/9/11 15:18:11

用10秒视频克隆你自己:Duix-Avatar AI数字人本地部署教程

用10秒视频克隆你自己:Duix-Avatar AI数字人本地部署教程 【免费下载链接】Duix-Avatar 🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitHub_Tre…

作者头像 李华