Frage

Ich habe eine Anwendung, die mit einer Master-Installationsprogramm installiert wird (EDIT: Wise erstellt eine Datei Setup.exe, kein MSI). Bei der Installation wird ein Symbol für einen bestimmten Dateityp festgelegt:

HKEY_CLASSES_ROOT\.auz\DefaultIcon = C:\Path\To\App\some_icon.ico,0

Gleich nach der Installation jedoch wählt Explorer dieses Symbol angezeigt werden mit dem allgemeinen „weißem Blatt + Anwendungssymbol“ Symbol, das anders ist (und nicht von mir zur Verfügung gestellt).

Beim ersten Start der Anwendung selbst Register Symbole und andere Dateizuordnungen, so dass der letzte Lauf Version dieser Dokumente „besitzt“. An diesem Punkt Explorer ändert es das Symbol für diesen Dateityp und zeigt die richtigen, aber wenn ich bei der Registrierung suchen, der Wert für DefaultIcon ist genau das gleiche .

Dies ist, was ich bisher versucht,

  • Entfernen aller Einträge aus der Registry und schreiben sie selbst.
  • Nach der Installation des Wert DefaultIcon „berühren“, und dann, ein kleines Programm starten, die nur Anrufe SHChangeNotify (SHCNE_ASSOCCHANGED) (mein Programm tut dies, nachdem die Dateizuordnungen in der Registrierung zu aktualisieren).
  • Nach der Installation, die Tötung und Neustarten Explorer.
  • Nach der Installation unter Verwendung von TweakUI zu "reparieren" die Symbole auf dem Desktop.

Keine dieser Arbeit. Der einzige Weg, das richtige Symbol zu erhalten, ist das Programm selbst installieren zu lassen. Ich kann keine Änderung in der Registry finden. Ich ziehe meine Haare aus.

Was ich möchte vermeiden,

  • Test mit einer anderen Installationssoftware
  • Ändern Sie das Installationsskript zu viel (ich habe nicht Wise selbst, wie das Installationsprogramm auf einem anderen Rechner auf Anfrage gebaut wird).
  • einbetten der Symbole in der ausführbaren Datei.

Alle Vorschläge, wie Explorer bekommt das richtige Symbol nach der Installation angezeigt werden?

War es hilfreich?

Lösung 2

Hier ist die Lösung.

Jeder Dateityp (sagen wir mal ".auz" in diesem Fall) wurde registriert mit:

  • Ein DefaultIcon Schlüssel mit dem Pfad zur Symbolressource, und
  • Ein Wert für den HKEY_CLASSES_ROOT\.auz\(default) Wert eine Beschreibung des Dateitypen zu geben, zum Beispiel "Foobar Dokument".

Zusätzlich dazu gab es einen Eintrag für den „Foobar Dokument“ Dokumenttyp, oder genauer gesagt, ein Schlüssel dafür, wie solche Dokumente aus der Schale zu öffnen:

HKEY_CLASSES_ROOT\Foobar Document\Shell\command\open\(default) = C:\Path\To\App.exe "%1"

Offenbar Diese Taste ersetzt den Wert für die bestimmte Dateierweiterung geschrieben . Da die Symbole außerhalb der EXE-Datei sind, Windows Explorer verwendete dann das erste Symbol der Anwendung ein Symbol für alle Dateien vom Typ „Foobar Document“ zu erstellen (die „weißes Blatt + Anwendungssymbol“ Symbol I erwähnt).

Nun, was ich hatte, falsch war, dass die Anwendung selbst den Wert nicht ändert

HKEY_CLASSES_ROOT\.auz\(default)

zu einem etwas anderen Wert beim Start, sagen Sie „Foobar 1.2 Document“ (das Problem mit nicht trocken ist). So wurde der Link zu „Foobar Dokument“ verloren, und die .auz Dateien haben ihre Symbole nach dem ersten Start.

Also habe ich das alles fixiert, indem einfach die HKEY_CLASSES_ROOT\Foobar Document Schlüssel komplett zu entfernen, und voilà

Andere Tipps

Ein paar Dinge in den Sinn kommen:

  • Warum haben Sie die‘0' nach dem Symbol in der Registrierung? Das würde das gezeigte Symbol auf ein einziges Symbol begrenzen. Besser wäre eine Symboldatei zu haben, die mehrere Symbole (gleiches Symbol UI aber verschiedene Größen / Farbtiefe) enthält - Explorer anderes Symbol Blick! Versuchen Sie das Entfernen des‘0' , wenn Ihre Symboldatei nur ein Symbol in sich hat.
  • kann es sein, dass die Registrierung im Installer zuletzt geschrieben wird, nachdem die Explorer-Updates benachrichtigt wurde?
  • sicherstellen, dass der Registrierungseintrag geschrieben wird nach die Symboldatei auf der Festplatte gespeichert ist,
  • sollten Sie die Wise Installateure eigene Konfiguration verwenden Sie den Dateityp zu registrieren. Nicht sicher, aber ich denke Explorer keine Änderungen dauern, bis die gesamte Installation eines msi beendet ist, so ruft SHChangeNotify () von Hand wird nicht helfen. Die msi seinen eigenen Tisch für das hat, was Wise wird hinzufügen, wenn Sie die richtige Konfiguration verwenden.

Für Wise wie folgt vor (statt der Schaffung der Registrierungsschlüssel auf eigene Faust):

  1. Unter der Funktion Details Seitengruppe, wählen Sie die Dateizuordnungen.
  2. Aus der aktuellen Eigenschaft Dropdown-Liste, wählen Sie Kern.
  3. Klicken Sie auf der rechten Seite des Fensters hinzufügen und wählen Sie Neu. Die Dateizuordnung Dialog Details angezeigt wird.
  4. Klicken Sie auf die Erweiterung Registerkarte Details.
  5. Durchsuchen
  6. auf das Verzeichnis Quickfacts, wählen Sie die Datei QckFacts.exe, und klicken Sie auf OK.
  7. In Erweiterung ein: qft
  8. Lassen Sie die Standardeinstellungen für den Rest der Felder und klicken Sie auf OK. Die Erweiterung .QFT ist mit der Installation hinzugefügt. Wenn ein Endbenutzer doppelklickt ein Datei mit dieser Erweiterung auf dem Zielcomputer, die Anwendung Quickfacts Einführungen.
  9. Speichern Sie die Installation

[Bearbeiten] Sie können auch erforderliche Registrierungseinträge fehlen (das Symbol nicht genug sein könnte für die Schale zu zeigen):

HKEY_CLASSES_ROOT\.auz\(default) = auzfile
HKEY_CLASSES_ROOT\.auz\shell\open\command = C:\Path\To\App.exe
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top