【问题标题】:Error in Tycho while replacing the product ico files替换产品 ico 文件时出现 Tycho 错误
【发布时间】:2012-06-15 11:49:15
【问题描述】:

我们正在使用 tycho v0.13 和 maven 3.0 来构建我们的产品。
我们在构建时收到以下错误/警告

错误 - 7 图标未在 C:\Users\AppData\Local\Temp\p2.brandingIron7115583353836584113\launcher.exe 中使用 D:\Builds\workspace\plugins\icons\app-icon.ico 替换

ico 文件都是正确的。 因此,窗口图标被标准的 eclipse 图标所取代。

【问题讨论】:

标签: eclipse maven tycho


【解决方案1】:

我们遇到了一些令人沮丧的时刻,我们得到了关于丢失图标的错误,所以我决定深入研究它。 以下是我的发现……基本上是在 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 个位图:

  • 256x256,32 位(RGB / Alpha 通道)
  • 48x48,32 位(RGB / Alpha 通道)
  • 32x32,32 位(RGB / Alpha 通道)
  • 16x16,32 位(RGB / Alpha 通道)
  • 48x48,8 位(256 色)
  • 32x32,8 位(256 色)
  • 16x16,8 位(256 色)

因此,要使图像替换过程成功,需要提供 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 文件中的所有图像都未压缩

【讨论】:

  • 但是,当使用 tycho-p2-publisher-plugin... - 这是一个 bug in Tycho,但该错误已在 0.21.0 中修复。
【解决方案2】:

只是为了补充以前的答案:

  1. .ico 文件中的所有图像都应为 BMP 格式,而不是 PNG。我已经看到至少有两个实用程序想要将 PNG 格式用于一个或多个图像。

  2. 1234563如果您的 .ico 文件包含其中之一,那么它会在旧 IconExe 中导致读取错误,并且您的任何图标都不会被替换(并且您会收到如打开消息中所示的错误)。见https://bugs.eclipse.org/bugs/show_bug.cgi?id=384509

【讨论】:

    【解决方案3】:

    当我的 ICO 文件包含 3.7.2 时,我遇到了类似的问题

    1. 更高分辨率的图像,例如 512x512
    2. 一些图片被压缩了。

    我使用 Gimp 从我的 ICO 文件中删除了未使用的层。

    【讨论】:

      【解决方案4】:

      我对 Tycho 本身并不太熟悉,但在这里我相信它使用的是 p2 附带的品牌代码(最初来自 PDE/Build)。

      代码从原始启动器可执行文件中提取图标图像,并在提供的 ico 文件中搜索匹配图像。如果找到与大小和位深度完全匹配的图像,则替换该图像。启动器中嵌入了 7 张图片,提供的 ico 应提供与尺寸和位深相匹配的图片。

      错误消息表明在可执行文件中找到的 7 个图标在提供的 ico 文件中的大小/位深度不匹配。

      3.7.2 中附带的启动器包含以下尺寸(顺序无关紧要):

      • 48x48 8 位(256 色)
      • 32x32 8 位
      • 24x24 8 位
      • 16x16 8 位
      • 48x48 32 位(RGB + Alpha)
      • 32x32 32 位
      • 16x16 32 位

      4.2 (3.8) 中的启动器包含以下尺寸:

      • 256x256,32 位(RGB / Alpha 通道)
      • 48x48,32 位(RGB / Alpha 通道)
      • 32x32,32 位(RGB / Alpha 通道)
      • 16x16,32 位(RGB / Alpha 通道)
      • 48x48,8 位(256 色)
      • 32x32,8 位(256 色)
      • 16x16,8 位(256 色)

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        相关资源
        最近更新 更多