[问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
[问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
如果在网上搜索 “Wine icon”,会得到很多关于如果用 icoutils 或者其它工具提取 Windows 程序图标的链接。
但是我总认为 Wine 本身就可以做到,但不知道它是如果做的。
理由是:
如果有个 Windows 应用程序 App,它提供了一个安装程序 setup.exe。在 Windows 下安装会在桌面生成一个快捷方式,查看快捷方式的属性,可以看到它的图标是 App.exe 或者某个 DLL 库中的一个图标。而如果用 Wine 来运行这个 setup.exe,安装完也会在桌面生成一个 .desktop 文件,它的图标跟 Windows 桌面上的一样,但是是一个独立的图标文件(在~/.local 目录下),说明它是 Wine 提取出来的。
问题是,如果不带安装程序,有什么办法用 Wine 的这一功能把图标提取出来吗?
但是我总认为 Wine 本身就可以做到,但不知道它是如果做的。
理由是:
如果有个 Windows 应用程序 App,它提供了一个安装程序 setup.exe。在 Windows 下安装会在桌面生成一个快捷方式,查看快捷方式的属性,可以看到它的图标是 App.exe 或者某个 DLL 库中的一个图标。而如果用 Wine 来运行这个 setup.exe,安装完也会在桌面生成一个 .desktop 文件,它的图标跟 Windows 桌面上的一样,但是是一个独立的图标文件(在~/.local 目录下),说明它是 Wine 提取出来的。
问题是,如果不带安装程序,有什么办法用 Wine 的这一功能把图标提取出来吗?
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
- windowssux
- 帖子: 618
- 注册时间: 2006-08-06 16:58
- 来自: 北海
http://ftp.ubuntu.org.cn/home/windowssux/
自己下载wineicons_1.0.6.tar.gz,解压,用Wine运行exe文件就可以了。
在网上搜索wineicons可以找到官网。
自己下载wineicons_1.0.6.tar.gz,解压,用Wine运行exe文件就可以了。
在网上搜索wineicons可以找到官网。
- 想入非非
- 帖子: 8078
- 注册时间: 2008-07-14 22:42
- 来自: Beijing
- 联系:
就是这样弄的windowssux 写了:http://ftp.ubuntu.org.cn/home/windowssux/
自己下载wineicons_1.0.6.tar.gz,解压,用Wine运行exe文件就可以了。
在网上搜索wineicons可以找到官网。
Ubuntu User
-
- 帖子: 6
- 注册时间: 2008-01-18 19:13
WINE自动生成的Foobar和Offlinelist的图标快捷方式的脚本如下
从中你可以观察到Icon一项前边的4位16进制应该是一个32位的偏移地址,
估计就是图标在EXE文件的实际地址,
所以获得该地址的话就不用再去提取图标,而可以直接显示
从中你可以观察到Icon一项前边的4位16进制应该是一个32位的偏移地址,
估计就是图标在EXE文件的实际地址,
所以获得该地址的话就不用再去提取图标,而可以直接显示
代码: 全选
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=foobar2000
Exec=env WINEPREFIX="/home/leekindo/.wine" wine "C:\\Program Files\\foobar2000\\foobar2000.exe"
Type=Application
StartupWMClass=Wine
Path=/home/leekindo/.wine/dosdevices/c:/Program Files/Foobar2000
Icon=7498_foobar2000.0
GenericName[zh_CN]=
代码: 全选
[Desktop Entry]
Name=OfflineList
Exec=env WINEPREFIX="/home/leekindo/.wine" wine "C:\\Program Files\\OfflineList\\OfflineList.exe"
Type=Application
StartupWMClass=Wine
Path=/home/leekindo/.wine/dosdevices/c:/Program Files/OfflineList
Icon=c16d_offlinelist.0
上次由 leekindo 在 2008-09-14 11:20,总共编辑 1 次。
- shellex
- 帖子: 2180
- 注册时间: 2007-02-18 19:33
- 系统: OSX
- 来自: lyric.im
- 联系:
- hecha
- 帖子: 364
- 注册时间: 2007-09-23 13:36
-
- 帖子: 16
- 注册时间: 2008-06-29 5:27
Re: [问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
我也想知道怎么提取到的!
- Nile
- 帖子: 990
- 注册时间: 2006-07-15 11:20
- 来自: 枫叶刀市
Re: [问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
应该有困难aerofox 写了:如果在网上搜索 “Wine icon”,会得到很多关于如果用 icoutils 或者其它工具提取 Windows 程序图标的链接。
但是我总认为 Wine 本身就可以做到,但不知道它是如果做的。
理由是:
如果有个 Windows 应用程序 App,它提供了一个安装程序 setup.exe。在 Windows 下安装会在桌面生成一个快捷方式,查看快捷方式的属性,可以看到它的图标是 App.exe 或者某个 DLL 库中的一个图标。而如果用 Wine 来运行这个 setup.exe,安装完也会在桌面生成一个 .desktop 文件,它的图标跟 Windows 桌面上的一样,但是是一个独立的图标文件(在~/.local 目录下),说明它是 Wine 提取出来的。
问题是,如果不带安装程序,有什么办法用 Wine 的这一功能把图标提取出来吗?
应该是程序调用了某个系统API完成从资源中提取图表的效果,Wine应该也是从系统dll里调用了这个API,如果单独用的话要考虑如何单独调用这个API,恐怕需要一个单独的程序,这应该不是wine的独立功能。
懂win32编成的请进!
Thinkpad T400
-
- 帖子: 16
- 注册时间: 2008-06-29 5:27
Re:
不知有什么方法得到该地址呢?leekindo 写了:WINE自动生成的Foobar和Offlinelist的图标快捷方式的脚本如下
从中你可以观察到Icon一项前边的4位16进制应该是一个32位的偏移地址,
估计就是图标在EXE文件的实际地址,
所以获得该地址的话就不用再去提取图标,而可以直接显示
代码: 全选
[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=foobar2000 Exec=env WINEPREFIX="/home/leekindo/.wine" wine "C:\\Program Files\\foobar2000\\foobar2000.exe" Type=Application StartupWMClass=Wine Path=/home/leekindo/.wine/dosdevices/c:/Program Files/Foobar2000 Icon=7498_foobar2000.0 GenericName[zh_CN]=
代码: 全选
[Desktop Entry] Name=OfflineList Exec=env WINEPREFIX="/home/leekindo/.wine" wine "C:\\Program Files\\OfflineList\\OfflineList.exe" Type=Application StartupWMClass=Wine Path=/home/leekindo/.wine/dosdevices/c:/Program Files/OfflineList Icon=c16d_offlinelist.0
- Ur@nus
- 帖子: 622
- 注册时间: 2006-12-01 23:02
Re: [问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
看来我的办法太笨了 ,我如果想提取都是先安装,然后ls -l查看链接的原文件位置再直接cp,我只干过一次,不要被鄙视的体无完肤就好
-
- 帖子: 1
- 注册时间: 2012-03-02 0:14
Re: [问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
根本不用下载wineicons什么的那么麻烦, 直接用归档管理器(File Roller)打开主程序exe文件(不要吃惊:P), 就可以从ICONS目录里面提取ICO图标文件了。 ICONS目录包含了程序用到的所有图标, 可以先全部提取出来, 在文件管理器里面图标显示一下就可以找到所要的图标了。 还有个小技巧, 桌面启动项右键->属性修改图标时, 文件对话框只能列出PNG的文件, 不管它直接暴力Ctrl-L输入文件名.ICO, 回车搞定 !
-
- 帖子: 10
- 注册时间: 2012-01-14 22:22
Re: [问题] 有人知道 Wine 是如何提取 Windows 程序中的图标的吗?
wine实现这个功能的代码在program/winemenubuilder/winemenubuilder.c里。