2009-07-30 5 views
4

J'ai une application qui produit des fichiers. Je voudrais connecter ces fichiers avec l'application afin que le double-clic sur le fichier lance mon application.Enregistrement du type de fichier et de l'icône de document personnalisé dans .NET

Tout fonctionne correctement, sauf pour le désagrément que cette icône ressemble à l'icône de mon application. Je voudrais avoir une icône pour l'application et une icône pour ses documents.

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

J'ai essayé la suite mais sans succès:

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

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

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

Répondre

4

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

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

  1. Ouvrez le fichier .exe dans Visual Studio (Fichier -> Ouvrir un fichier)
  2. clic droit sur le dossier icône et sélectionnez Ajouter une ressource
  3. Cliquez sur le bouton Importer
  4. Sélectionnez votre fichier .ico
  5. Vous pourriez avoir à jouer avec les numéros d'icône, je pense que le plus petit nombre (exemple 101) sera l'icône de l'application
  6. Rappelez-vous le nouveau numéro d'icône et le définir comme l'index

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

+0

Oui, j'ai essayé pas mal de chiffres. Un seul qui retourne quelque chose est 32512. Et c'est l'icône de mon application. Aucun numéro ne renverra l'icône du document. –

+0

Cela fonctionne, mais cela invalide également le nom fort. –

0

DefaultIcon sera également accepter un chemin vers un fichier .ico valide comme une icône.

+0

Cela fonctionne, comme je l'ai souligné dans ma question, mais cela ne semble pas correct. –

0

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

Compilez votre assemblage, puis à partir de Visual Studio sélectionnez "Fichier -> Ouvrir -> Ouvrir le fichier", ouvrez le assemblage compilé. Ajoutez l'icône que vous souhaitez utiliser pour les documents et définissez son ID sur quelque chose au-dessus de celui utilisé pour votre application. Enregistrez l'assemblage. Maintenant vous avez des ressources Win32 disponibles. Après avoir modifié son article, ZippyV semble avoir une très bonne réponse.

1

Si vous utilisez le jeu d'outils Wix (http://www.wixtoolset.org) pour installer votre application, vous pouvez obtenir Wix prendre soin du type de fichier et document icon Enregistrement

Voici ma magie incantatoire 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> 
Questions connexes