none
Utilisation des ressources, renommage, suppression ... RRS feed

  • Question

  • Bonjour,

    J'ai un problème de compréhension de l'explorateur de solutions en ce qui concerne le répertoire 'Resources'. Dans mon appli, les ressources sont essentiellemnt des images.

    1- Quand j'y renomme un fichier qui appartient au projet (clic-droit / renommer), cela n'a aucune incidence sur le code, il demeure dans le fichier Resources.resx, contrairement à la même manip sur les modules

    2- Idem quand je mets un fichier hors projet, il demeure dans le fichier Resources.resx. Je ne puis donc le supprimer car il manque à mon appli !!

    3- Je ne comprends pas comment le déployeur va retrouver les fichiers supplémentaires que je déclare vouloir inclure au déploiement. Et où je dois les mettre de façon à ce que mon code continue à tourner.

    Prenons un exemple : J'ai des menus avec des icônes : pas de pb ces fichiers bmp sont dans les ressources du projet.
    Je fais une doc (un .rtf d'une fenêtre appelée par une commande) et dans cette doc, j'inclus aussi ces mêmes icônes, donc par un chemin ../../Resources/.
    Dans ma doc, j'ai d'autres images. Dois-je les mettre aussi dans 'Resources' (et les joindre au projet) ?

    Merci

    • Modifié marcel337564 vendredi 28 mai 2010 21:14 1ère rédaction pas claire
    vendredi 28 mai 2010 20:33

Réponses

  • Bonjour,

    Les ressources sont définies dans un fichiers Resx. Ce fichier Resx contient des chaînes de caractères et des références vers des fichiers (ou des images) qui doit se trouver sur votre disque dur (n'importe où). A la compilation, le compilateur intègre tous les fichiers référencés dans l'executable. Bien évidemment, les fichiers doivent être existant au moment de la compilation.

    Si votre document rtf nécessite d'avoir des références à des images de votre application, il ne peut pas utiliser celle compilée dans l'exécutable. Il faudra dans ce cas déployer votre image avec votre executable, et votre rtf devra faire référence à cette dernière...

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 28 mai 2010 21:40
    Modérateur
  • Bonsoir, puis Bonjour (modifié dimanche matin)

    1-Il n'y a aucun problème pour créer de nouvelles bases pour mon utilisation "éclairé".

    2- La seule chose qu'il ne peut pas (encore), c'est ouvrir la base 'master' : en effet, si on ne trouve pas de Catalogue, il faut en créer un et donc ouvrir une base pour entrer en communication avec SQL Server, et j'ouvre donc une base système; sur la liste SQL Server on m'avait conseillé 'master'.

    Ma solution (provisoire et pas contraignante) c'est de fournir une base-catalogue (vide) : c'est mon point d'entrée dans SQL Server, et après ça roule ....

    Je vais voir de près cette question de droits pour ce point d'entrée. Mais je considère la question en cours comme close.

    Merci

    • Modifié marcel337564 dimanche 30 mai 2010 09:30 La nuit porte conseil
    • Marqué comme réponse marcel337564 dimanche 30 mai 2010 09:31
    samedi 29 mai 2010 18:45

Toutes les réponses

  • Bonjour,

    Les ressources sont définies dans un fichiers Resx. Ce fichier Resx contient des chaînes de caractères et des références vers des fichiers (ou des images) qui doit se trouver sur votre disque dur (n'importe où). A la compilation, le compilateur intègre tous les fichiers référencés dans l'executable. Bien évidemment, les fichiers doivent être existant au moment de la compilation.

    Si votre document rtf nécessite d'avoir des références à des images de votre application, il ne peut pas utiliser celle compilée dans l'exécutable. Il faudra dans ce cas déployer votre image avec votre executable, et votre rtf devra faire référence à cette dernière...

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 28 mai 2010 21:40
    Modérateur
  • Au passage, est-ce que cela répond à votre question ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 28 mai 2010 21:42
    Modérateur
  • Bonjour,

    (Vous travaillez à minuit !!!! C'est pas humain ...)

    1- Votre réponse me donne une réponse, si j'ai bien compris, à savoir : je dois avoir DEUX versions des certaines ressources : les bitmaps de mes boutons dans le répertoire  'Resources' (ou une autre ressource locale) et ceux que j'utilise dans mon document rtf dans le répertoire de l'exécutable. Exact ?

    2- Par contre je ne comprends pas pourquoi je garde trace d'éléments qui n'appartiennent plus au projet, à la fois dans Resources.resx et dans Resource.Designer.vb. Et si je veux supprimer leurs fichiers, évidemment ça râle ! (C'est moi qui avait aussi eu des contrôles fantômes que j'ai dû supprime à la main). Puis-je faire pareil et ôter ces lignes parasites ?

    ------------------------------------------------------------------------

    La dernière partie de ma réponse est hors de propos, ça me revient, j'avais publié (click-once) et non déployé car ma version (Visual express ne doit pas permettre de déployer). Je regarde ça de près pour recommencer

    ------------------------------------------------------------------------

    3- Au moment de déployer, ma doc me parle d'une boîte de dialogue "Ajouter un nouveau projet". D'abord j'avais employé Fichier/Nouveau projet mais évidemment ça ne le fait pas, car il n'y a pas de lien avec le projet à installer .... Où actionne-t-on cette fameuse boîte de dialogue "Ajouter un nouveau projet" ? Dans le menu Projet je peux ajouter des éléments variés, mais pas de projet .....

    4- Pour vous montrer à quel point je suis bête, il y a deux ans j'avais déployé avec succès une version primitive de ce projet que je viens de reprendre après être passé à autre chose. Je sais que j'avais bataillé longtemps, mais j'y étais arrivé seul.

    Merci de votre patience

    samedi 29 mai 2010 08:38
  • Bonjour,

    (Vous travaillez à minuit !!!! C'est pas humain ...)
    Minuit, c'est l'heure où commence à travailler un geek.... :-)

    1/La réponse est oui.

    2/La réponse est oui. Si vous êtes sur que les ressources sont utilisées nulle part, supprimez les !

    3/Pour ajouter un nouveau projet vous devez disposez d'une solution Visual Studio. Une solution est un regroupement logique de plusieurs projets. Quelle est la version et édition de Visual Studio que vous utilisez ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 29 mai 2010 13:17
    Modérateur
  • Bonne après-midi,

    Visual Studio 2005, Professional Edition

    Version 8.0.50727.762 (SP.050727-7600)

    J'ai commencé à publier sur CD mais je bloque sur l'ajout de mes fichiers qui ne sont pas des 'resources' et qu'il ne voit donc pas. M'enfin je progresse.

    Merci

    samedi 29 mai 2010 13:36
  • Bonjour,

    Vous publiez avec ClickOnce ou un setup MSI ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 29 mai 2010 13:53
    Modérateur
  • Bonjour,

    Va-savoir .....

    Je fais :

    Explorateur de solutions : Clic droit sur mon projet : Propriétés
    J'essaie de renseigner à peu pès tout. (pour la signature, j'ai créé une signature de test, après on verra). Puis j'arrive à l'onglet Publier;

    - Fichiers d'application : il me montre toutes mes ressources : inclure (Auto), Requis
    - Composants requis : FrameWork, SQL SERVER (déjà cochés) plus Windows Installer 3.1 que je coche (sinon la publication ne marche pas)
    - Options : démarrer l'installation à l'insertion du CD-ROM

    Puis Publier maintenant. et ça fabrique :

    D:\MonProjet\
      MonProjet_1_0_0_0\
          Resources\ <Toutes mes images, sans .deploy que j'ai décoché>
          MonProjet.exe
          MonProjet.exe.config.deploy
          MonProjet.exe.deploy
          MonProjet.exe.manifest
       dotnetfx\
       sqlexpress\
       windowsinstaller3_1\
       autorun.inf
       MonProjet.application
       MonProjet_1_0_0_0.application
       setup.exe

    ça construit une appli :
    - sans les fichiers non ressources (c'est normal, je n'ai vu nulle part où les signaler)
    - sans les bons droits pour créer la première BD
    sinon le reste tourne

    Merci

    samedi 29 mai 2010 14:50
  • Bonjour,

    - sans les fichiers non ressources
    Pouvez-vous être plus explicit à ce niveau ?

    - sans les bons droits pour créer la première BD
    Vous utilisez la technologie ClickOnce. ClickOnce est conçu pour exécuter des applications dans un environnement utilisateur restraint. Il est donc fortement déconseillé de donner des droits administrateurs à votre application pour initialiser la base de données. Une bonne pratique consiste à créer un programme à part pour créer la base de données (qui nécessite bien évidemment des droits administrateurs) qui devra être lancée par l'administrateur. Votre programme doit absolument fonctionner avec des droits utilisateurs.

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 29 mai 2010 15:02
    Modérateur
  • - sans les fichiers non ressources
    Pouvez-vous être plus explicit à ce niveau ?

    => Je veux dire : sans les fichiers qui étaient dans le répertoire 'Resources' et vus comme tels dans "Fichiers d'application", et qui, d'après ce que j'ai compris, ont été inclus dans l'exécutable à la compilation.

    Par contre, les autres fichiers qui sont personnalisables, ou même qui sont utilisés pour les documents rtf....je ne vois aucun endroit pour les décrire. Peut-être qu'en les transportant tout simplement par copier-coller ?

    => Quant à la BD, c'est bien embêtant. Je vais vous expliquer ce que je fais.

    Je livre, pour des usages sur PC individuel, une appli qui est livrée avec une BD standard, qui contient le résultat du travail d'un groupe de bénévoles depuis 10 ans. C'est pour eux que j'ai livré le résultat de leurs travaux. Un cadeau d'anniversaire....

    Parmi eux, certains ont, à leur tour, créé un groupe qui fait le même travail sur un autre territoire et je veux donc leur permettre :
    - de créer leur propre base
    - de partager leurs bases entre eux (sans les fusionner, juste en consultation)

    J'ai donc mis en place une base-catalogue qui contient les chemins d'accès aux mdf déjà importés.

    Au démarrage j'ouvre donc la base-catalogue si elle existe, sinon je la crée.
    De toute façon, même si elle existait, elle ne pourrait être que vide car elle contient le chemin absolu de chaque fichier mdf du catalogue.

    Puis, l'utilisateur lambda 'Ouvre' une base, celle que je lui ai fournie, et, par la suite, la retrouve car, le catalogue ne contenant qu'un item, je le lui ouvre par défaut.

    L'utilisateur éclairé (responsable d'un nouveau groupe de bénévoles par exemple) peut créer une base, vierge, et dispose de tous les outils d'administration pour la remplir et la passer (sous forme mdf) aux copains.

    CE QUE JE PEUX FAIRE :

    - C'est livrer automatiquement la base-catalogue vierge. S'ils ne la perdent pas, ça pourra marcher

    - Mais il FAUT qu'ils puissent créer une nouvelle base, sinon toute l'amélioration faite tombe à l'eau : je ne peux que leur faire regarder la base existante et c'est tout .....

    Merci de vos suggestions.

    samedi 29 mai 2010 15:36
  • Bonjour,

    1/Les fichiers contenus dans le répertoire Resources et si ils sont référencé par un resx sont automatiquement intégré à l'executable. Si vous voulez déployer des fichiers ressources (comme votre document .rtf par exemple), mettez le dans votre projet, sélectionnez le afin d'afficher ses propriétés et choisissez : "Copier si plus récent" dans la propriété "Copier dans le répertoire de sortie". Lors de la compilation de votre application, ce fichier sera automatiquement copié dans le répertoire de l'exécutable.

    2/Au démarrage j'ouvre donc la base-catalogue si elle existe, sinon je la crée.
    De toute façon, même si elle existait, elle ne pourrait être que vide car elle contient le chemin absolu de chaque fichier mdf du catalogue.

    Est-ce que cela vous pose problème de créer la base de données à l'installation de l'application ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 29 mai 2010 17:24
    Modérateur
  • Bonsoir, puis Bonjour (modifié dimanche matin)

    1-Il n'y a aucun problème pour créer de nouvelles bases pour mon utilisation "éclairé".

    2- La seule chose qu'il ne peut pas (encore), c'est ouvrir la base 'master' : en effet, si on ne trouve pas de Catalogue, il faut en créer un et donc ouvrir une base pour entrer en communication avec SQL Server, et j'ouvre donc une base système; sur la liste SQL Server on m'avait conseillé 'master'.

    Ma solution (provisoire et pas contraignante) c'est de fournir une base-catalogue (vide) : c'est mon point d'entrée dans SQL Server, et après ça roule ....

    Je vais voir de près cette question de droits pour ce point d'entrée. Mais je considère la question en cours comme close.

    Merci

    • Modifié marcel337564 dimanche 30 mai 2010 09:30 La nuit porte conseil
    • Marqué comme réponse marcel337564 dimanche 30 mai 2010 09:31
    samedi 29 mai 2010 18:45
  • Bonjour,

    Pour l'utilisation de la base de données master (et la création d'une base de données), vous devez exécutez votre application avec un compte SQL disposant du rôle sysadmin ou dbcreator.

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 30 mai 2010 17:44
    Modérateur
  • Bonsoir,

    1- Sur un PC individuel, pas de problème : j'ai juste un peu tâtonné avec quelques chaînes de connection, mais ça marche avec strConnexion = "Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;User Instance=True"

    2- Tout serait bien si .....

    Jusqu'à présent je testais en exécutant seulement le Release.

    Lorsque j'ai voulu créer le CD d'installation, je me suis aperçu que les fichiers que j'avais obtenus avec votre idée "Copier si plus récent" dans la propriété "Copier dans le répertoire de sortie" , restent bien dans le répertoire de l'exécutable, mais ne suivent pas dans le répertoire de publication Release\MonProjet.publish.

    Même si je les y mets, ils ne sont pas utilisés par le setup et on ne les retrouve pas dans le répertoire d'installation (.... Local Settings\Apps\2.0\UN_REP_BIZARRE\UN_AUTRE_REP_BIZARRE\, ...).

    3- Donc, actuellement, la seule façon de faire marcher le truc est de transporter le répertoire Release.


    N.B. Pour être sûr que l'utilisateur a une bonne config, je prends tout de même le répertoire MonProjet.publish, qui est la même chose PLUS dotnetfx, plus, Sql serveur, plus Windows Installer, plus le setup.

    Le setup me sert seulement à installer l'environnement nécessaire. On peut même désinstaller MonProjet ....

    4- À moins que j'aie laissé passer un truc ....

    Merci de votre expertise.

    Bonsoir

    --------------------------------------------------------------------------------------

    Ce lundi ..... J'ai trouvé !!!

    C'était dans Fichiers/Ajouter/Nouveau projet .....

    Et là j'aurai mon msi et fini cette Publication pas terrible, pour un beau Déploiement qui, lui m'apporte tout ce que je souhaitais......

    Malgré la pluie, ce mois de juin commence bien.

    Bonne jounée à tous

    • Modifié marcel337564 lundi 31 mai 2010 07:22 La nuit porte conseil
    dimanche 30 mai 2010 19:11