Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 18.08.13 09:38 
Hallo!

Ich möchte mit Inno Setup ein Icon für einen Dateityp erstellen. Ich habe also ein Icon erstellt, eine .rc-Datei erstellt, zu einer .res-Datei kompiliert und es in die .exe eingebunden. Funktioniert, das Icon ist da.

Wie aber mache ich das nun in der .iss-Datei von Inno Setup? So jedenfalls funktioniert das nicht:
ausblenden Quelltext
1:
2:
3:
4:
5:
[Registry]
//..

;Icon zuordnen - 0 ist das Icon der Programmdatei
Root: HKCR; Subkey: "ALB.File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Fotoalbum.exe, 1"


Wenn ich 0 statt 1 angebe, habe ich das Icon der .exe-Datei als Icon der Datendatei, das funktionert. Ich möchte aber das andere Icon für die Datendatei registrieren!

Weiss jemand, wie? :nixweiss:


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am So 18.08.2013 um 10:18

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 18.08.13 10:55 
Hallo,

wenn du eine Verknüpfung zu deiner Anwendung erstellst und dann auf Eigenschaften gehst, siehst du dann bei "Anderes Symbol" dein anderes Symbol?

Oder probiere mal das Leerzeichen vor der 1 zu entfernen:
ausblenden Quelltext
1:
... ; ValueData: "{app}\Fotoalbum.exe,1"					
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 18.08.13 18:40 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

wenn du eine Verknüpfung zu deiner Anwendung erstellst und dann auf Eigenschaften gehst, siehst du dann bei "Anderes Symbol" dein anderes Symbol?

Oder probiere mal das Leerzeichen vor der 1 zu entfernen:
ausblenden Quelltext
1:
... ; ValueData: "{app}\Fotoalbum.exe,1"					


Ja, ich sehe es, es ist also in der exe-Datei. Es ist aber an 1. Stelle, danach kommt das eigentliche Programm-Icon, es sollte aber doch umgekehrt sein!?

Ich habe immerhin jetzt einen Weg gefunden, wie man Windows dazu bringt, ein eigenes Symbol für die Datendateien zu verwenden:
ausblenden Quelltext
1:
2:
[Registry]
Root: HKCR; Subkey: "ALB.File\DefaultIcon"; ValueType: string; ValueName: "1"; ValueData: "{app}\Fotoalbum.exe,1"

ValueName muss "1" sein, der letzte Parameter muss ebenfalls 1 sein. (0 ist ja das Symbol der Programmdatei).
Wenn man andere, aussagekräftigere Namen als "1" verwendet, zB. "DataFileIcon", klappt es zwar auch, aber dann hat auch die Programmdatei dieses Symbol, egal, welches man unter Optionen angegeben hat.

Plus: Man muss dabei kein eigenes Icon erstellen, braucht keine .rc-Datei erstellen und kompilieren und muss demnach auch keine .res-Datei extra einbinden.
Minus: Man hat halt dann kein *eigenes* Icon, sondern Windows verwendet eben ein Standard-Icon, das aber immerhin aus dem Icon der Anwendungsdatei erzeugt wird.

Wie man ein eigenes Icon so in die .exe einbindet, dass Delphi dieses dann nicht auch für die .exe-Datei verwendet, weiss ich immer noch nicht.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 18.08.13 19:18 
Jetzt funktioniert es überhaupt nur noch so im Inno Setup-Script:
ausblenden Quelltext
1:
2:
[Registry]
Root: HKCR; Subkey: "ALB.File\DefaultIcon"; ValueType: string; ValueName: "1"; ValueData: "{app}\Fotoalbum.exe,1"

Egal, ob ich in die .exe ein weiteres Icon einbinde oder nicht, Windows verwendet immer ein Standard-Icon. Habe schon 2x neugestartet. Das Icon bleibt, wie es ist, mein selbst erzeugtes Icon wird nicht verwendet.
Deinstallieren, komplett neu kompilieren der .rc-, der .exe- und der .iss-Datei - nützt alles nichts.

Immerhin: Windows kann man dazu bringen, ein anderes Icon als das der .exe zu verwenden, indem man "1" angibt - siehe Code oben.


//Edit: Nein, so klappt das doch nicht. Lag wohl am Iconcache, dass ich die Icons unverändert sah.
Jetzt ist es so, dass Windows Standard-Icons verwendet, wenn in der Programmdatei kein eigenes Icon eingebunden ist. Bindet man eines ein, sollte Windows theoretisch dieses verwenden. War auch schon so, habe das Icon jedoch überarbeitet, neu eingebunden und kompiliert, deinstalliert, neu installiert, und nun ist da wieder das Standard-Icon... :autsch:

Besonders seltsam: Im OpenDialog sah ich vorhin das eigene erzeugt Icon, im Windows-Explorer das Standard-Icon! Nachdem ich alles neu gemacht habe, sind die Icons jetzt wenigstens überall gleich. Es ist nicht mein eingebundenes Icon und nicht das Standard-Icon, sondern eine Mischung aus Standard-Icon und dem Icon der Programmdatei.

Ich verstehe das nicht...

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: So 18.08.13 23:19 
Ich weiß zwar nicht wie man das Icon im InnoSetup richtig einbindet, aber dein anderes Problem könnte mit dem Icon Cache zusammen hängen.

Am besten du erstellst ihn neu. www.sevenforums.com/...n-cache-rebuild.html


  • ie4uinit.exe -ClearIconCache
  • taskkill /IM explorer.exe /F
  • DEL "%localappdata%\IconCache.db" /A
  • shutdown /r /f /t 00


Der letzte Befehl startet den PC neu!

Für diesen Beitrag haben gedankt: galagher
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 19.08.13 19:11 
user profile iconGreenberet hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß zwar nicht wie man das Icon im InnoSetup richtig einbindet, aber dein anderes Problem könnte mit dem Icon Cache zusammen hängen.
Müsste doch auch reichen, die Datei C:\...\AppData\Local\IconCache.db zu löschen und den PC neu zu starten. :nixweiss:

Ich weiss nicht mehr, wo ich den Code zum Registrieren von Icons im Inno Setup her habe, aber er hat schon mal funktioniert! Doch jetzt habe ich, egal, wie oft ich das Projekt und die .iss-Setup-Datei kompiliere und dann das Setup ausführe, immer nur das von Windows erzeugte Icon. Das geht zwar auch, es ist nicht das 08/15-Standard-Icon, das Windows sonst verwendet, aber es ist eben nicht "mein" Icon.

Habe mein Programm auch schon deinstalliert, dann neu installiert, den Rechner neu gestartet - nützt einfach nichts.

//Edit
@user profile iconGreenberet:
Habe die Befehle aus deinem Post ausgeführt - es ist unverändert. Mein Icon ist aber definitiv in der .exe-Datei!
Liegt es an dem Code im Inno Setup-Script, das es nicht funktioniert, wie es soll? Tippfehler gibt's im Script jedenfalls keine. Oder liegt es an Windows?


//Edit:
Gelöst!
Der korrekte Code im Script muss lauten:
ausblenden Quelltext
1:
Root: HKCR; Subkey: "ALB.File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Fotoalbum.exe,1"					

ValueName muss leer sein, also "" ! Ich hatte da "1" stehen, weiss auch nicht, warum. Also doch ein Tippfehler!

Ich werde mich auf die Suche nach einem InnoSetup-Tutorial oder so etwas in der Art machen.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!