Superuser

Autor Thema: Icons in Programmdateien  (Gelesen 2597 mal)

mdjr

  • Gast
Icons in Programmdateien
« am: 10. August 2008, 21:21:47 »
Hallo.

Irgendwelche Ubuntu-Benutzer haben sich das Folgende einfallen lassen: http://www.compholio.com/elficon/

Wie bei Windows werden in den ausführbaren Dateien (bei Windows *.exe) Symbole gespeichert, die dann im Dateimanager (bei GNOME Nautilus, bei KDE Konqueror) angezeigt werden.

Was haltet ihr davon?

(Leider wusste ich nicht genau, in welche Kategorie (Solaris, Solaris/x86, Freeware, Off-Topic) ich das Thema einordnen soll...)

Martin

sonnenblen.de - Das unabhängige Sun User Forum

Icons in Programmdateien
« am: 10. August 2008, 21:21:47 »

claus

  • Gast
Re: Icons in Programmdateien
« Antwort #1 am: 10. August 2008, 22:48:53 »
Ich finde die Idee mit Icons grundsätzlich nicht schlecht; ein Binary um ein Icon zu erweitern allerdings schon.

Für mich gehört sich das getrennt, die Icons von mir aus in eine Datenbank/Filesystem mit Pointern darauf im Binary.

Claus

Offline Drusus

  • Sobl Master
  • ****
  • Beiträge: 424
  • Intentionally left blank
Re: Icons in Programmdateien
« Antwort #2 am: 11. August 2008, 10:53:26 »
Moin,

warum wird eigentlich dauernd versucht das Rad neu zu erfinden?

Wenn man mal ein Blick auf Windows oder MacOS wirft, so ist es dort ja schon seit laengerer Zeit ueblich Icons (und andere Ressources) direkt an eine Datei mit anzuhaengen. Die Abspeicherung erfolgt aber unabhaengig vom Binary-Format (also z.B. nicht nur bei *.exe) in einem sogentannten "Stream" der zu dem Filesystem-Objekt gehoert. Genau das kann unter Solaris ebenfalls genutzt werden und ist deutlich flexibler als die Einschraenkung auf ELF-Binaries (das "elficon" Projekt hilft naemlich ueberhaupt nicht fuer Shell-Script oder aehnliches).

In Solaris kann man hierfuer die "extended file attributes" nutzen. Siehe dazu "man -s5 fsattr" oder zur Nutzung "man -s1 runat".

Beispiel:
% mkdir /tmp/example
% cp /etc/motd /tmp/example
% cd /tmp/example
% ls -@
total 16
-rw-r--r--   1 drusus  drusus       54 Aug 11 10:46 motd
% runat motd cp /usr/share/pixmaps/apple-red.png .
% ls -@
total 16
-rw-r--r--@  1 drusus  drusus       54 Aug 11 10:46 motd
% runat motd ls -l
total 16
-rw-r--r--   1 drusus  drusus     3545 Aug 11 10:48 apple-red.png

Und schon ist das Icon mit der Datei motd verbunden und dort in dem extended file attribute Bereich gespeichert.
Der Vorteil davon: das ganze geht vollkommen unabhaengig vom Dateityp (also nicht nur fuer ELF Binaries).
Der Nachteil dabei: jedes OS hat so seine eigene Idee wie dieser extended Bereich aussieht...

Tschau,
  Drusus.

mdjr

  • Gast
Re: Icons in Programmdateien
« Antwort #3 am: 12. August 2008, 07:37:21 »
Wenn man mal ein Blick auf Windows oder MacOS wirft, so ist es dort ja schon seit laengerer Zeit ueblich Icons (und andere Ressources) direkt an eine Datei mit anzuhaengen. Die Abspeicherung erfolgt aber unabhaengig vom Binary-Format.

Hallo.

In Windows gibt es zwar extended Attributes, diese werden jedoch nicht genutzt. Icons werden - wie im elficon-Projekt - in der Executable abgespeichert. Das PE-Executable-Format definiert hierzu einen speziellen Ressource-Bereich.

In MacOS <=9 wurden Icons tatsächlich als extended Attributes (sog. "Ressource-Fork") gespeichert. Eine ausführbare Datei hatte dort sogar die Länge 0 (!), da sämtliche Informationen, die zur Ausführung benötigt wurden, als extended Attributes gespeichert wurden.

Leider hatte das MacOS-Konzept einen entscheidenden Nachteil:
Das ganze war Dateisystem-gebunden. Um z.B. eine Datei übers Internet zu schicken, musste diese zunächst zusammen mit allen Attributen in eine spezielle MacOS-Archivdatei (ähnlich .a/.tar bei Unix; es gab hierzu verschiedene Dateiformate) verpackt und beim Empfänger wieder ausgepackt werden.

Dies schränkt die "Usability" doch deutlich ein...

Martin

llothar

  • Gast
Re: Icons in Programmdateien
« Antwort #4 am: 12. August 2008, 23:27:27 »
Ich finde den Vorschlag okay.

a) Erweiterte Attribute/Resource Fork.
Wie gesagt, hier macht es sich leider bemerkbar das es in der Praxis nicht geht, weil das alles nicht einheitlich ist. Selbst unter NTFS kannste es vergessen weil so mancher Döspaddel immer noch FAT einsetzt und schwupps weg ist es. Bei Linux mit hunderten von Dateisystemen ist es sowieso aussichtslos. Und Solaris wird da Linux ähnlich. Zumal das auch auf älteren Systemen noch klappen soll (zumindest sollten da die Infos nicht verschwinden).

b) MacOSX Bundles
Das klappt nur wenn sich die Programme (Filebrowser) und Desktopsysteme daran halten würden. Das ist leider auch auf nicht absehbare Zeit so. Apple kann es diktieren, bei den Freetards ist jede Hoffnung auf Diskussion vergebens.

c) Also bleibt nur die Windows Lösung. ELF ist beliebig erweiterbar und keine der Nachteile auf a+b treten auf. Kein User kann so einfach Icon und App trennen. Ausserdem ist es die einzige Möglichkeit wenn du lediglich eine Datei ohne Installation etc. weitergeben willst - ein Traum den man unter Unix leider sehr sehr selten hat. Unter MacOSX ist es zumindest nur ein Icon.

Eins fehlt dann noch Apples DMG. Es ist unfassbar das es kein bequemes Dateiformat gibt in dem man ausführbare Dateien weitergeben kann. Solange wird das nichts mit Desktop und nicht technischen End-Usern.