使用py2exe在.exe中嵌入图标,在Vista中可见?

时间:2009-02-08 07:26:06

标签: python windows-vista embed icons py2exe

我一直试图在py2exe的“compyled”.exe中嵌入一个图标(.ico)。

Py2Exe确实有一种嵌入图标的方法:

windows=[{
    'script':'MyScript.py',
    'icon_resources':[(1,'MyIcon.ico')]
}]

这就是我正在使用的东西。该图标在Windows XP或更低版本上显示正常,但在Vista上根本不显示。我想这是因为新的Vista图标格式,可以是PNG格式,最高可达256x256像素。

那么,如何让py2exe将它们嵌入到我的可执行文件中,而不会破坏Windows XP上的图标?

我很喜欢使用外部实用程序而不是py2exe - 我已经尝试this command-line utility来嵌入它,但它总是会破坏我的exe并因某种原因而截断它的大小。

4 个答案:

答案 0 :(得分:20)

Vista使用高分辨率 256x256 像素图像的图标,它们使用基于PNG的压缩进行存储。问题是如果您只是制作图标并以标准XP ICO格式保存,则生成的文件将在磁盘上为400Kb。解决方案是压缩图像。使用的压缩方案是PNG(可移植网络图形),因为它具有良好的无损比率并支持alpha通道。

并使用

png2ico myicon.ico logo16x16.png logo32x32.png logo255x255.png

它会从1个或多个ICO创建一个PNG文件并处理多个大小等等。我猜XP也没有问题。

答案 1 :(得分:4)

正如赫尔穆特所说,似乎图标大小的顺序是关键。 反转页面(首先是较大的页面)解决了Windows 7上的'include_resources'问题(使用Py2exe 0.6.9)。

答案 2 :(得分:4)

我在使用包含32x32像素图像的.ico文件在Windows7上嵌入带有py2exe的图标资源时出现问题。我使用与原始问题相同的方法。

编译完成后,exe上的图标消失。根据{{​​3}}工具,在调查时会在索引0处添加图标,但如果我使用相同的工具替换图标,则会在索引1处添加该图标。一旦在索引1处,该图标就会神奇地出现在资源管理器中exe再次。

如果绝望,你可以使用Resource Hacker来修改exe后构建,它可以通过命令行界面编写脚本,但我尝试了上面解释的方法并设法在反转png文件之后使其工作。

png2ico.exe myico.ico myico248x248.png myico48x48.png myico32x32.png myico16x16.png

顺便说一句,通过在ico文件中添加多个图标,您无论如何都会在图标索引1处填充资源,在本例中为myico248x248.png。

答案 3 :(得分:3)

Greenfish Iceon Editor Pro的链接已损坏。 我扫描了网,找到Download IcoFX 在我的.exe文件中使用了IcoFX程序,可以看到它确实包含了我的图标。

使用菜单Image->从Image创建Windows图标,然后接受选择我得到了一个同时适用于win7和win xp的新.ico文件。

在此之前,我的单个48x48.ico文件没有显示为该程序的图标。