Question

J'ai une application qui produit des fichiers. Je souhaite connecter ces fichiers à une application de sorte qu'un double-clic sur le fichier lance l'application.

Tout fonctionne correctement, sauf que le fait que l'icône ressemble à l'icône de mon application est gênant. J'aimerais avoir une icône pour l'application et une icône pour ses documents.

La valeur DefaultIcon dans le registre requiert " app.exe, 1 " syntaxe où 1 est index d'icône. Il semble que les ressources .NET ne soient pas des ressources Win32.

J'ai essayé de suivre mais sans succès:

  1. Sélection de " ressource incorporée " comme action de construction du fichier.
  2. Ajout d'une icône au fichier de ressources.

La seule chose qui a fonctionné est d'avoir un fichier d'icône séparé de l'exécutable et de le pointer dessus. Cependant, cela me semble être une capitulation.

Des idées pour résoudre ce problème?

Était-ce utile?

La solution

Avez-vous essayé de définir 2 comme index d'icône?

EDIT: J'ai trouvé un moyen, mais vous devez le refaire à chaque nouvelle construction.

  1. Ouvrez le fichier .exe dans Visual Studio (Fichier - > Ouvrir le fichier)
  2. Cliquez avec le bouton droit sur le dossier des icônes et sélectionnez Ajouter une ressource
  3. Cliquez sur le bouton Importer
  4. Sélectionnez votre fichier .ico
  5. Vous devrez peut-être manipuler les numéros d'icône. Je pense que le numéro le plus bas (exemple 101) sera l'icône de l'application
  6. Mémorisez le nouveau numéro d'icône et définissez-le comme index

EDIT 2: Essayez cet article: http://www.codeproject.com/KB/dotnet/embedmultipleiconsdotnet. aspx

Autres conseils

Si vous utilisez l'ensemble d'outils Wix ( http://www.wixtoolset.org ) pour installer votre application. , vous pouvez demander à Wix de s’occuper du type de fichier et de l’enregistrement de l’icône du document

Voici mon incantation magique Wix:     

    <!-- Your executable -->
    <File 
        Id="MaAppExe" 
        Name="MyApp.exe" 
        Source="MyApp.exe" KeyPath="yes" >
    </File>

    <!-- your document icon -->
    <File 
        Id='IconMyAppDoc.ico' 
        Name='IconMyAppDoc.ico' 
        Source='$(var.MyApp.ProjectDir)\Resources\Images\Icons\docicon.ico' />

    <-- File Extension and associated document icon -->
    <ProgId 
        Id='MyApp.MyAppExtension' 
        Description='My App Data File' 
        Icon='IconMyAppDoc.ico'>
        <Extension 
            Id='MyApp' 
            ContentType='text/plain'>
            <Verb 
                Id='open' 
                Command='Open' 
                TargetFile="MyAppExe" 
                Argument='"%1"' />
         </Extension>
    </ProgId>
</Component>

DefaultIcon acceptera également le chemin d'accès à un fichier .ico valide en tant qu'icône.

Vous devez vous assurer que votre projet contient des icônes Win32 et pas seulement des icônes .net. J'espère que quelqu'un indique un moyen facile de le faire, mais en attendant, voici ...

Compilez votre assemblage, puis dans Visual Studio, sélectionnez "Fichier - > Ouvrir - > Ouvrir le fichier " ;, ouvrez l'assembly compilé. Ajoutez l'icône que vous souhaitez utiliser pour les documents et définissez son ID sur une valeur supérieure à celle utilisée pour votre application. Enregistrez l'assemblage. Vous disposez maintenant de ressources Win32.

- Éditer -
Après avoir publié son article, ZippyV semble avoir une très bonne réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top