Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AppImage icons in falscher Größe generiert #64

Open
eladyn opened this issue Mar 17, 2021 · 9 comments
Open

AppImage icons in falscher Größe generiert #64

eladyn opened this issue Mar 17, 2021 · 9 comments

Comments

@eladyn
Copy link

eladyn commented Mar 17, 2021

Ich hatte diesen Text zunächst unter #56 gepostet, allerdings ist dieses Issue ja bereits geschlossen, insofern jetzt ein neues.

Leider existiert dieses Problem auch noch in der neuesten Version.

Das generierte AppImage enthält die folgende Ordnerstruktur:

.DirIcon
AppRun
LICENSE.electron.txt
LICENSES.chromium.html
chrome-sandbox
chrome_100_percent.pak
chrome_200_percent.pak
homeworker-desktop
homeworker-desktop.desktop
homeworker-desktop.png
icudtl.dat
libEGL.so
libGLESv2.so
libffmpeg.so
libvk_swiftshader.so
libvulkan.so
locales
locales/am.pak
...
locales/zh-TW.pak
resources
resources/app-update.yml
resources/app.asar
resources.pak
snapshot_blob.bin
swiftshader
swiftshader/libEGL.so
swiftshader/libGLESv2.so
usr
usr/lib
usr/lib/libXss.so.1
usr/lib/libXtst.so.6
usr/lib/libappindicator.so.1
usr/lib/libgconf-2.so.4
usr/lib/libindicator.so.7
usr/lib/libnotify.so.4
usr/share
usr/share/icons
usr/share/icons/hicolor
usr/share/icons/hicolor/0x0
usr/share/icons/hicolor/0x0/apps
usr/share/icons/hicolor/0x0/apps/homeworker-desktop.png
v8_context_snapshot.bin
vk_swiftshader_icd.json

D.h., das Icon wird immernoch in 0x0 gepackt und nach extrahieren oder mounten kann man auch sehen, dass homeworker-desktop.png 288x288 groß ist.

Ein Grund hierfür könnte sein, dass electron-builder icon.png höher priorisiert als icon.icns. Inwiefern werden die anderen beiden Dateien (icon.png und icon.ico) überhaupt noch benötigt? Wenn ich das richtig verstanden habe in dem oben verlinkten Artikel, kann icon.icns verwendet werden, um alle nötigen Icons zu generieren, oder?

@rasmuslos
Copy link
Collaborator

Ich habe ein Icon 96x96.png generiert welches funktionieren sollte

@rasmuslos
Copy link
Collaborator

Ich habe leider keine Möglichkeit das zu testen, kannst du schauen ob die Icons jetzt da sind?

@eladyn
Copy link
Author

eladyn commented Mar 23, 2021

Im letzten Release existiert das Problem immer noch.

Ich habe es inzwischen hinbekommen Homeworker lokal auf meinem System mit electron-builder zu "kompilieren". Es gibt anscheinend einen Befehl, der irgendwann ausgeführt wird, dem mögliche Icons (build/188x188.png und build/icon.icns) übergeben werden und der dann die Größe des Icons herausfinden soll und eventuell in ein PNG umwandelt.

Dabei gibt er allerdings für das build/188x188.png, das die höhere Priorität hat und deswegen verwendet, folgendes aus (formatiert):

{
    "icons": [
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/build/512x512.png",
            "size": 0
        }
    ],
    "isFallback": false
}

Es wird also als Größe 0 angenommen, was dazu führt, dass in allen Targets für Linux als Icon-Verzeichnis 0x0 verwendet wird.

Insofern ist es möglich, dass das ein electron-builder-Bug ist.

Wenn man allerdings als Input-Datei icon.icns verwendet oder höher priorisiert, wird das folgende generiert (formatiert):

{
    "icons": [
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_16x16.png",
            "size": 16
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_32x32.png",
            "size": 32
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_48x48.png",
            "size": 48
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_64x64.png",
            "size": 64
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_128x128.png",
            "size": 128
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_256x256.png",
            "size": 256
        },
        {
            "file": "/home/Nutzer/Projekte/homeworker-desktop/dist/.icon-set/icon_512.png",
            "size": 512
        }
    ],
    "isFallback": false
}

In diesem Fall werden also alle möglichen Größen vollständig richtig aus dem icon.icns extrahiert. Wenn ich zum Bauen also

"icon": "build/288x288.png"
entferne, funktioniert meinen Tests zufolge alles, da das macOS .icns als Basis verwendet wird. (siehe Dokumentation)

Vielleicht wäre das ja eine Möglichkeit.

@rasmuslos rasmuslos reopened this Mar 24, 2021
@rasmuslos
Copy link
Collaborator

Das Problem ist das vor diesem Release kein Icon angegeben war weshalb eigentlich auf das MacOS Icon genutzt werden sollte. Das hat ja leider auch nicht geklappt...

@rasmuslos rasmuslos reopened this Mar 24, 2021
@eladyn
Copy link
Author

eladyn commented Mar 24, 2021

Ah, ok!

Ich habe jetzt gerade mal den Commit 02338dd gebaut, da nach diesem anscheinend der icon-Parameter hinzugefügt wurde. Dort funktioniert das mit dem Icon auch nicht. Insofern scheinen irgendwelche Änderungen in der Zwischenzeit bewirkt zu haben, dass es bei mir in der neuesten Version (nur ohne icon) funktioniert.

Ich probiere mal noch ein bisschen und vielleicht finde ich ja eine Erklärung dafür.

@eladyn
Copy link
Author

eladyn commented Mar 24, 2021

Nach einigen Versuchen denke ich, dass das Folgende passiert:

  • Im aktuellen master:
    • electron-builder nimmt als icon für Linux den angegebenen Pfad, wobei allerdings die Größe, wie oben beschrieben, falsch interpretiert wird (nämlich als 0).
    • Wenn man den icon-Parameter in der Linux-Konfiguration entfernt, wird automatisch der macOS-Pfad verwendet.
    • Wenn man sowohl macOS- als auch Linux-Icon-Konfiguration entfernt, wird anscheinend genauso der macOS-Pfad verwendet.
  • Vor ca8973a:
    • Da weder ein macOS-Icon noch ein Linux-Icon spezifiziert sind, verwendet electron-builder das Icon unter build/icon.png, wobei hier erneut fälschlicherweise 0 als Größe angenommen wird.
    • Wenn man als macOS-Icon dort icon.icns angibt, wird alles normal generiert.

Ich schaue mal, ob ich irgendwo bei electron-builder etwas bezüglich dieses Verhaltens finde. Ansonsten sollte es tatsächlich funktionieren, die Linux-Icon-Konfiguration einfach zu entfernen.

@eladyn
Copy link
Author

eladyn commented Mar 24, 2021

Höchstwahrscheinlich ist der Grund für die Größe 0x0 übrigens bei develar/app-builder#42 beschrieben.

@eladyn
Copy link
Author

eladyn commented Mar 24, 2021

Der Grund für das Auswahlverfahren liegt wahrscheinlich hier.

Demnach werden, wenn gar keine Eingaben spezifiziert sind, icon.png und icon.icns in die Liste aufgenommen (in dieser Reihenfolge). Da ja zur Suche nach den Icons auch im build-Verzeichnis nachgesehen wird, erklärt das meines Erachtens das Verhalten von oben.

@rasmuslos
Copy link
Collaborator

rasmuslos commented Apr 1, 2021

Danke für deine Mühe 👍 Ich schau mir das nochmal an. Ich setzte auch mal eine vm auf um das testen zu konnen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants