Java 圖示取代應用程式圖示顯示;使用 install4j 安裝

Java 圖示取代應用程式圖示顯示;使用 install4j 安裝

我有一個透過 install4j 安裝的 Java 應用程式。桌面捷徑顯示在 .desktop 檔案中設定的正確應用程式圖示;但是,啟動後,應用程式圖示不會顯示在擴充座上。將顯示預設的 Java 圖示。

這是它在桌面上的樣子:

在桌面上

但在 Dock 上它顯示 Java 圖示:

在碼頭上

我也不知道為什麼,當我將滑鼠懸停在擴充座上的圖示上時,沒有出現正確的應用程式名稱 - 它改為命名 java 啟動器。

#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Name=NMRViewJ
Exec="/home/issac/NMRViewJ/NMRViewJ"
Icon=/home/issac/NMRViewJ/.install4j/NMRViewJ.png
StartupWMClass = sun-awt-X11-XFramePeer
Categories=Application;

答案1

這個問題將在大約 2 週後在 install4j 8.0 中修復(來源:我為開發 install4j 的公司工作)。

主要問題是WMClassAWT視窗的屬性設定為主類別。這意味著主類對於應用程式必須是唯一的,但 install4j 插入了自己的主類,該主類在 7.0 之前始終是相同的。作為解決方法,您可以反射性地更改 AWT 工具包的內部狀態:

Class<?> toolkitClass = Toolkit.getDefaultToolkit().getClass();

if (toolkitClass.getName().equals("sun.awt.X11.XToolkit")) {
    Field awtAppClassName = toolkitClass.getDeclaredField("awtAppClassName");
    awtAppClassName.setAccessible(true);
    awtAppClassName.set(null, "<my unique application name>");
}

在install4j 8.0中,將產生一個唯一的主類,並且產生的.desktop檔案將包含對應的StartupWMClass條目。

相關內容