着眼于从EXE文件中提取图标(ICO文件)的所有大小作为PNG图像的过程,我注意到Wine似乎是自动执行此操作的。
安装foobar2000之后,Wine(我想是)在中创建了一个Desktop Entry ~/.local/share/applications/wine/Programs/foobar2000.desktop
,其中包含以下内容:
[Desktop Entry]
Name=foobar2000
Exec=env WINEPREFIX="$HOME/.wine" wine C:\\\\windows\\\\command\\\\start.exe /Unix "$HOME/.wine/dosdevices/c:/users/Public/Start\\ Menu/Programs/foobar2000.lnk"
Type=Application
StartupNotify=true
Comment=Play, organize and tag your music.
Path=$HOME/.wine/dosdevices/c:/Program Files (x86)/foobar2000
Icon=3C17_foobar2000.0
最终,这个Icon
键引起了我的注意,我发现它可以根据Icon Theme Specification来解决。到处走走,我找到了~/local/share/icons/hicolor/*/apps/
包含这些图标的文件的目录(每个文件夹包含3C17_foobar2000.0.png
),我再次假定是Wine所创建的。
我的问题是Wine是如何从应用程序(或快捷方式文件)生成这些图像文件的?
Wine包含一个winemenubuilder
可解决此问题的程序:它使用Windows快捷方式,并创建匹配的FDO(FreeDesktop.Org).desktop
文件。图标提取是其中的一部分,由open_module_icon
和相关功能处理。要提取图标,请winemenubuilder
找到与快捷方式相对应的可执行文件(如有必要,可以选择等待创建该可执行文件),并使用Wine的LoadResource
功能加载其包含的资源,查找图标,然后将其转换为适当的图像格式。
wine winemenubuilder /path/to/link.lnk
会将链接转换为中的.desktop
文件,~/.local/share/applications/wine/Programs
并提取可用的图标,进行转换,然后将其存储在的相应子目录中~/.local/share/icons
。(我认为/path/to/link.lnk
必须使用Wine的驱动器映射可以访问;它与.lnk
Wine中已安装的文件很好地配合使用。)
wine winemenubuilder -t /path/to/link.lnk /path/to/icon.png
将解压在可执行文件指向的第一个图标link.lnk
来icon.png
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句