Question

J'ai une application qui est installée avec un programme d'installation Wise (EDIT: Wise crée un fichier Setup.exe, pas un fichier MSI). Lors de l'installation, une icône est définie pour un certain type de fichier:

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

Cependant, juste après l’installation, Explorer a choisi d’afficher cette icône à l’aide du générique "icône feuille blanche + application" " icône différente (et non fournie par moi).

Lors du premier lancement, l’application elle-même enregistre les icônes et autres associations de fichiers, de sorte que la dernière version exécutée " possède " ces documents. À ce stade, Explorer modifie l'icône de ce type de fichier et affiche le fichier correct, mais lorsque je regarde le registre, la valeur de DefaultIcon est exactement la même .

C’est ce que j’ai essayé jusqu’à présent

  • Supprimer toutes les entrées du registre et les écrire moi-même.
  • Après l'installation, "Toucher &"; valeur de DefaultIcon, puis lancement d’un petit programme appelant uniquement SHChangeNotify (SHCNE_ASSOCCHANGED ) (mon programme le fait après la mise à jour des associations de fichiers dans le registre).
  • Après l'installation, la suppression et le redémarrage de Explorer.
  • Après l'installation, utilisez TweakUI pour "réparer" les icônes sur le bureau.

Aucun de ceux-ci ne fonctionne. La seule façon d’obtenir la bonne icône est de laisser le programme l’installer lui-même. Je ne trouve aucun changement dans le registre. Je retire mes cheveux.

Ce que je voudrais éviter

  • Test avec un autre logiciel d'installation
  • Changer le script d'installation trop souvent (je n'ai pas Wise lui-même, car l'installateur est construit sur une autre machine à la demande).
  • Intégrez les icônes dans l'exécutable.

Des suggestions sur la manière de faire en sorte que Explorer affiche la bonne icône après l'installation?

Était-ce utile?

La solution 2

Voici la solution.

Chaque type de fichier (disons ".auz" dans ce cas) a été enregistré avec:

  • Une clé DefaultIcon avec le chemin d'accès à la ressource icon et
  • Une valeur pour la valeur HKEY_CLASSES_ROOT \ .auz \ (défaut) donnant une description du type de fichier, par exemple. "Document Foobar".

De plus, il y avait une entrée pour le "Document Foobar". type de document, ou plus précisément, une clé pour savoir comment ouvrir de tels documents à partir du shell:

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

Apparemment, cette clé remplace la valeur écrite pour l'extension de fichier spécifique . Les icônes étant externes au fichier .exe, l'Explorateur Windows a ensuite utilisé la première icône de l'application pour créer une icône pour tous les fichiers de type "Document Foobar". (cette icône "feuille blanche + icône de l'application" que j'ai mentionnée).

Maintenant, ce que j'avais tort est que l'application elle-même modifie la valeur de

HKEY_CLASSES_ROOT\.auz\(default)

à une valeur légèrement différente lors du démarrage, par exemple, "Document Foobar 1.2". (le problème de ne pas être sec). Ainsi, le lien vers "Document Foobar" a été perdu et les fichiers .auz ont reçu leurs icônes après le premier lancement.

J'ai donc résolu le problème en supprimant simplement la clé HKEY_CLASSES_ROOT \ Foobar Document et voilà !

Autres conseils

Deux choses me viennent à l’esprit:

  • pourquoi avez-vous le ', 0' après l'icône dans le registre? Cela limiterait l'icône affichée à une seule icône. Il serait préférable d’avoir un fichier d’icône contenant plusieurs icônes (même interface utilisateur, mais tailles / profondeurs de couleurs différentes). Essayez de supprimer le ", 0" si votre fichier d'icône ne contient qu'une seule icône.
  • il se peut que le registre soit écrit en dernier dans le programme d’installation, après que l’explorateur ait été informé des mises à jour?
  • assurez-vous que l'entrée de registre est écrite après le fichier d'icône est stocké sur le disque
  • vous devez utiliser la propre configuration des installateurs Wise pour enregistrer le type de fichier. Pas sûr, mais je pense que l'explorateur ne prendra aucune modification avant la fin de l'installation complète d'un msi, donc appeler manuellement SHChangeNotify () ne vous aidera pas. Le msi a sa propre table pour cela, ce que Wise ajoutera si vous utilisez la bonne configuration.

Pour Wise, procédez comme suit (au lieu de créer vous-même les clés de registre):

  1. Dans le groupe de pages Détails de la fonctionnalité, sélectionnez la page Associations de fichiers.
  2. Dans la liste déroulante Fonctionnalité actuelle, sélectionnez Noyau.
  3. Cliquez sur Ajouter à droite de la fenêtre et sélectionnez Nouveau. La boîte de dialogue Détails de l’association de fichiers apparaît.
  4. Cliquez sur l'onglet Détails de l'extension.
  5. Accédez au répertoire QuickFacts, sélectionnez le fichier QckFacts.exe, puis cliquez sur OK.
  6. Dans Extension, entrez: qft
  7. Laissez les valeurs par défaut pour le reste des champs et cliquez sur OK. L'extension .QFT est ajoutée à l'installation. Lorsqu'un utilisateur final double-clique sur un fichier avec cette extension sur l’ordinateur de destination, l’application QuickFacts lance.
  8. Enregistrer l'installation

[Modifier] Il se peut également que vous manquiez d’entrées de registre obligatoires (l’icône pourrait ne pas suffire à l’affichage du shell):

HKEY_CLASSES_ROOT\.auz\(default) = auzfile
HKEY_CLASSES_ROOT\.auz\shell\open\command = C:\Path\To\App.exe
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top