none
[WPF] Application .exe ne démarre pas sans l'icon "Resources/Logo.ico" RRS feed

  • Question

  • Bonjour,

    Mon application démarre très bien dans Visual Studio mais si je lance l'exécutable depuis un autre emplacement (à partir du bureau par exemple C:\Users\Moi\Desktop\My Application.exe) l'application cesse de fonctionner et mon application ne démarre pas.

    Après quelques essai j'ai conclus que c'est l'icone de mon application qui pose problème. Dans mon application WPF structurée en MVVM l'icone de la fenêtre est défini dans le XAML de cette manière :

    <Window Icon="/My Application;component/Resources/Logo.ico" />

    Alors si je ne reproduis cette hiérarchie de dossiers sur mon bureau : C:\Users\Moi\Desktop\Resources\Logo.ico ET C:\Users\Moi\Desktop\bin\Debug\My Application.exe ça ne fonctionne pas.

    Comment faire pour contourner ce problème afin que je puisse distribuer uniquement l'exécutable pour partager mon application ?

    Cordialement. 



    • Modifié Apyn AOM lundi 17 août 2015 14:26
    lundi 17 août 2015 14:25

Réponses

  • Et pourtant la document est claire : Wpf Icon Info

    Une fenêtre WPF affiche toujours une icône. Icon</sentencetext>, WPF choisit l'icône à afficher selon les règles suivantes :

    1. Utilisation de l'icône d'assembly, si celle-ci est spécifiée

    2. Si l'icône d'assembly n'est pas spécifiée, utilisation de l'icône Microsoft Windows par défaut.

    Disposez-vous du message de l'exception lorsque votre application crash ? Cela donnera peut-être une indication utile.



    • Modifié V HELLIN mardi 18 août 2015 03:50 Ajout info
    • Marqué comme réponse Apyn AOM mardi 18 août 2015 12:08
    mardi 18 août 2015 03:45
  • Oui le document est plus clair que moi mais c'était ce que j'avais en tête.

    Mais j'ai pu résoudre le problème : ayant fait toutes les procédures correctement je me suis dit que le problème venait d'ailleurs.

    J'avais conclus au début que l'icone posait problème et c'est bien le cas, cependant ce n'est pas dans le XAML de la fenêtre mais à l'assignation de celui-ci à un NotifyIcon (que j'avais complétement oublié). Alors j'ai importé le même icône dans Projet > Propriété > Resources et y accède avec Properties.Resources.Logo.ico dans le code behind afin de l'assigné à mon NotifyIcon.

    Merci de votre aide.





    • Marqué comme réponse Apyn AOM mardi 18 août 2015 12:08
    • Modifié Apyn AOM mardi 18 août 2015 12:09
    mardi 18 août 2015 12:05

Toutes les réponses

  • Bonjour,

    Vérifiez si votre fichier Logo.ico a bien Resource comme valeur pour la propriété "Build Action". Click droit sur le fichier > Propriété

    Plutôt que définir l'icône Window par Window, vous pourriez définir votre icône au niveau de l'application. Via un click droit sur le Projet > Propriété

    Ici aussi, votre fichier d'icône doit avoir la propriété Build Action = Resource

    lundi 17 août 2015 16:26
  • Merci de votre réponse rapide, cependant ces propriétés sont déjà comme vous le recommandez.

    Et les 2 méthodes d'assignation d'icone que vous proposez sont en revanche pas les même en WPF qu'en WinForm : L'icon défini dans les propriété du projet correspond à celui de l'exécutable dans l'Explorer tandis que la propriété Icon dans Window (en XAML) correspond à celui visible dans la barre des tâches et en haut à droite de la fenêtre...

    Une autre solution ?


    • Modifié Apyn AOM mardi 18 août 2015 00:42
    mardi 18 août 2015 00:41
  • Et pourtant la document est claire : Wpf Icon Info

    Une fenêtre WPF affiche toujours une icône. Icon</sentencetext>, WPF choisit l'icône à afficher selon les règles suivantes :

    1. Utilisation de l'icône d'assembly, si celle-ci est spécifiée

    2. Si l'icône d'assembly n'est pas spécifiée, utilisation de l'icône Microsoft Windows par défaut.

    Disposez-vous du message de l'exception lorsque votre application crash ? Cela donnera peut-être une indication utile.



    • Modifié V HELLIN mardi 18 août 2015 03:50 Ajout info
    • Marqué comme réponse Apyn AOM mardi 18 août 2015 12:08
    mardi 18 août 2015 03:45
  • Oui le document est plus clair que moi mais c'était ce que j'avais en tête.

    Mais j'ai pu résoudre le problème : ayant fait toutes les procédures correctement je me suis dit que le problème venait d'ailleurs.

    J'avais conclus au début que l'icone posait problème et c'est bien le cas, cependant ce n'est pas dans le XAML de la fenêtre mais à l'assignation de celui-ci à un NotifyIcon (que j'avais complétement oublié). Alors j'ai importé le même icône dans Projet > Propriété > Resources et y accède avec Properties.Resources.Logo.ico dans le code behind afin de l'assigné à mon NotifyIcon.

    Merci de votre aide.





    • Marqué comme réponse Apyn AOM mardi 18 août 2015 12:08
    • Modifié Apyn AOM mardi 18 août 2015 12:09
    mardi 18 août 2015 12:05