2010-12-09 6 views
20

Ich habe ein Installationsprogramm mit Inno Setup erstellt. Das für die Desktopverknüpfung und das Startmenü verwendete Symbol ist in der ausführbaren Datei der Anwendung eingebettet.Falsches Desktop-Verknüpfungssymbol unter Windows 7 (Inno-Setup)

Als das Installationsprogramm ursprünglich erstellt wurde, hatte ich nicht das endgültige Produktsymbol aus dem Designteam. Ich habe stattdessen ein temporäres Symbol verwendet, als ich das Installationsprogramm abgeschlossen habe.

Alles funktionierte wie es sollte, bis ich das Symbol für das letzte änderte. Jetzt die Desktop-Verknüpfung und Startmenü Symbole immer zeigen das alte Symbol, obwohl überall sonst das Symbol korrekt ist.

Dies ist der Icon-Deklarationsteil des Skripts.

[Icons] 
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; WorkingDir: {app} 
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; IconFilename: {app}\Icons\stop.ico 
Name: {commondesktop}\{#MyAppVersionName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon; WorkingDir: {app} 

Hier ist, was ich versucht habe: (Dies ist ein Windows 7-System)

Wenn ich an den Verknüpfungseigenschaften suchen, und wählen Sie „Symbol ändern“ Ich sehe das richtige Symbol. Die erneute Auswahl hat keine Auswirkungen. Ich habe auch versucht, ein dis-bezogenes Symbol zu wählen und dann wieder das richtige auszuwählen ... zeigt immer noch das alte an.

Ich bin den Vorschlägen gefolgt, die IconCache.db zu löschen und den Computer neu zu starten, aber das hat auch keinen Effekt.

Woher kommt die alte Ikone? Es ist nirgends im Installer.

Ideen jemand?

+0

Die Art und Weise Ihre Frage geschrieben führt mich zu glauben, dass das alles ist, auf einem einzigen Windows 7-Computer auftreten. Haben Sie versucht, die Inno Setup-Datei mit dem neuen Symbol neu aufzubauen und auf einem * zweiten * Computer auszuführen? Zeigt dies immer noch das alte Symbol? –

+1

Ich habe diese Anwendung sowohl auf einem 'reinen' Windows XP als auch auf einem Windows 7 Rechner installiert. Beide rendern das Symbol korrekt. Was könnte möglicherweise das alte Icon auf meinem Rechner speichern? Es weigert sich einfach zu sterben ... – swirlywonder

+0

Poste den Abschnitt [Icons] deines Installer-Skripts, vielleicht wird das helfen. Enthält Ihre ausführbare Datei nur das Symbol, das Sie verwenden möchten (d. H. Nicht das temporäre Symbol, das Sie nicht möchten)? – Bernard

Antwort

30

Es scheint, dass dies in der Tat mit der IconCache.db Datei verwandt war. Ich kann nur vermuten, dass etwas nicht in der richtigen Reihenfolge gemacht wurde (obwohl ich verschiedene Prozeduren mehr als einmal probiert habe).

Hier ist, wie ich die Reset manuell ausgeführt:

  • Klicken Sie auf Start-Taste>Strg gedrückt halten + Umschalttaste & rechts im Startmenü auf leeren Bereich klicken.
  • Wählen Sie "Exit Explorer".
  • Halten Ctrl +Umschalt +Esc Tasten Task-Manager zu öffnen.
  • Wählen Sie "Datei"> "Neue Aufgabe".
  • Typ: cmd (und drücken Sie Geben Sie ein). Dies öffnet die Eingabeaufforderung.
  • Typ: cd /d %userprofile%\AppData\Local (und drücken Enter)
  • Typ: attrib –h IconCache.db (und drücken Enter)
  • Typ: del IconCache.db (und drücken Enter)
  • Typ: start explorer (und drücken eingeben)

Jetzt alles rendert so wie es sein sollte.

+5

Es ist ein Fehler in Windows (Win7 und Vista, wie ich mich erinnere). Der Icon-Cache flat-out bemerkt nicht, wenn sich die gesamte EXE geändert hat (nicht nur das Icon), auch bei Neustarts. Ein weiteres Problem besteht darin, dass wenn Sie die Verknüpfung erstellen, bevor die Exe existiert, die Shell ein generisches Icon zwischenspeichert und dieses für immer weiter verwendet, bis Sie das blöde Ding manuell gezwungen haben, den Cache neu aufzubauen. –

+0

Das scheint ein ziemlich schlechter Bug zu sein ... Vor allem, um immer noch in zwei großen Veröffentlichungen dabei zu sein. – swirlywonder

+1

@Leo: Ich denke, ich stimme dir zu, weil ich das schon mal gesehen habe. Haben Sie einen Fehlerbericht zu diesem Thema eingereicht (oder wissen Sie, dass ein solcher eingereicht wurde)? –

8

Wie in swirlywonder Antwort sollte dieser Batch-Skript den Prozess automatisieren:

Wiederaufbau-icon-cache.bat

@echo off 
taskkill /IM explorer.exe /F 
cd /d %userprofile%\AppData\Local 
del IconCache.db /a 
start explorer.exe