我们正在使用tycho v0.13和maven 3.0来构建我们的产品 我们在构建
时收到以下错误/警告错误 - 使用D:\ Builds \ workspace \ plugins \ icons \ app-icon.ico
在C:\ Users \ AppData \ Local \ Temp \ p2.brandingIron7115583353836584113 \ launcher.exe中未替换7图标
ico文件都很合适。 结果窗口图标被标准的eclipse图标取代。
答案 0 :(得分:6)
我对Tycho本身并不过分熟悉,但在这里我相信它正在使用p2附带的品牌代码(最初来自PDE / Build)。
代码从原始启动器可执行文件中提取图标图像,并在提供的ico文件中搜索匹配的图像。如果找到的图像与大小和位深度完全匹配,则替换该图像。启动器中嵌入了7个图像,提供的图像应提供与大小和位深相匹配的图像。
错误消息表明可执行文件中找到的7个图标在提供的ico文件中没有匹配的大小/位深度。
3.7.2中附带的启动器包含以下尺寸(顺序无关紧要):
4.2(3.8)中装运的启动器包含以下尺寸:
答案 1 :(得分:6)
我们遇到了一些令人沮丧的时刻,我们得到了关于丢失图标的错误,所以我决定深入研究它。 以下是我的发现......基本上为Andrew Niefer的回答添加了额外的信息。
对于Windows,更换本机启动器中的图像的过程如下所述。处理由p2类完成: org.eclipse.pde.internal.swt.tools.IconExe
本课程着眼于原生启动器的资源,并注意其中的位图:它们的大小和颜色深度。 然后它查看提供的图像。这可以是单独的BPM列表或包含多个BMP的ICO文件。还注意到它们的尺寸和颜色深度。 这仅在所有提供的图像都未压缩时有效。当压缩一个或多个图像时,该过程停止并且在本机启动器中不替换位图。 接下来,它尝试将提供的BMP大小和颜色深度与本机启动器中的大小和颜色深度相匹配,并在原始启动器中替换它们。 当本机启动程序中的一个或多个位图在提供的映像中不可用时,以下消息将写入 System.err :
Error - <n> icon(s) not replaced in […]using […]
类 IconExe 有一个main方法,可以作为独立运行。它的第一个参数是需要修改的本机启动器,以下参数是提供的BPM或ICO文件。
对于Eclipse 4.3(.x),本机启动程序包含7个位图:
因此,对于替换图像成功的过程,需要提供7个具有相同大小和深度的图像,可以是单独的BMP,也可以是ICO内部。
但是,使用 tycho-p2-publisher-plugin 时,您无法提供7个单独的BPM,因为 tycho-p2-publisher-plugin 不知道在 .product 文件中指定的256x256x32图像。 其类 org.eclipse.tycho.model.Launcher 仅从 .product 文件中读取其他6个图像位置,因此跳过第7个图像(256x256x32) 。 因此, IconExe 获取的列表是一个短图像,并始终报告:
Error - 1 icon(s) not replaced in […]using […]
对我们有用的解决方案是将7个BMP合并到一个ICO文件中,并在 .product 文件中提供。
但请注意,某些可以创建ICO文件的图像处理应用程序默认会压缩256x256x32图像。这就是让我们走错了路的原因! 因此,请注意ICO文件中的所有图像都是未压缩。
答案 2 :(得分:1)
当我的ICO文件包含
时,我遇到了与3.7.2类似的问题我使用Gimp从我的ICO文件中删除了未使用的图层。
答案 3 :(得分:1)
只是添加到之前的答案:
.ico文件中的所有图片都应为BMP格式,而不是PNG格式。我见过至少两个想要将PNG格式用于一个或多个图像的工具。
如果您的目标是Eclipse 4.2,那么您将不得不等待Tycho 0.16.0(或使用已有的SNAPSHOT版本)来获得包含最新IconExe的版本,该版本可以处理256x256位图。如果您的.ico文件包含其中一个,那么它会导致旧的IconExe中出现读取错误,并且您的图标都不会被替换(并且您会收到打开消息中显示的错误)。请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=384509。