IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] projet de déployement


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut [Résolu][C#] projet de déployement
    Bonjour à tous,

    voilà je voudrais créer un setup pour mon programme. Mon problème est que je dois inclure à peut près 15000 images au format gif en plus de mon
    prog exe. Comment puis-je faire au plus simple ? Est ce que je ne pourrais pas par exemple créer un package d'images ??

    merci

  2. #2
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    oui tu peux tout placer dans un assembly ressource.
    En cherchant un lien pour te donner un exemple je suis tomber la dessus, encore mieux ...
    http://www.codeproject.com/cs/miscct...rce_editor.asp

    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    merci.

    pas mal ce petit prog ... mais apparemment il faut ajouter les images une par une donc étant donnée la quantité que je dois traiter çà me paraît compromis.

    Sinon pour créer une assembly ressource, tu pourrais me donner un tuyau ?

    merci

  4. #4
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Voici les sources d'un petit soft.
    je te laisse le modifier pour qu'il prenne tes images. Pour le moment il prend des *.ico
    il faut que tu change l'extension des fichiers et le repertoire il va les chercher. C'est en dur mais facilement parametrable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Resources;
    using System.IO;
     
    namespace CreateRessourceFiles
    {
    	/// <summary>
    	/// Description résumée de Form1.
    	/// </summary>
    	public class Form1 : System.Windows.Forms.Form
    	{
    		private System.Windows.Forms.Button button1;
    		private System.Windows.Forms.Button button2;
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
     
    		public Form1()
    		{
    			//
    			// Requis pour la prise en charge du Concepteur Windows Forms
    			//
    			InitializeComponent();
     
    			//
    			// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
    			//
    		}
     
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if (components != null) 
    				{
    					components.Dispose();
    				}
    			}
    			base.Dispose( disposing );
    		}
     
    		#region Code généré par le Concepteur Windows Form
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		private void InitializeComponent()
    		{
    			this.button1 = new System.Windows.Forms.Button();
    			this.button2 = new System.Windows.Forms.Button();
    			this.SuspendLayout();
    			// 
    			// button1
    			// 
    			this.button1.Location = new System.Drawing.Point(32, 16);
    			this.button1.Name = "button1";
    			this.button1.Size = new System.Drawing.Size(224, 24);
    			this.button1.TabIndex = 0;
    			this.button1.Text = "Generate ResX File";
    			this.button1.Click += new System.EventHandler(this.button1_Click);
    			// 
    			// button2
    			// 
    			this.button2.Location = new System.Drawing.Point(32, 56);
    			this.button2.Name = "button2";
    			this.button2.Size = new System.Drawing.Size(224, 24);
    			this.button2.TabIndex = 1;
    			this.button2.Text = "Generate Resource File";
    			this.button2.Click += new System.EventHandler(this.button2_Click);
    			// 
    			// Form1
    			// 
    			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    			this.ClientSize = new System.Drawing.Size(292, 110);
    			this.Controls.Add(this.button2);
    			this.Controls.Add(this.button1);
    			this.Name = "Form1";
    			this.Text = "Form1";
    			this.ResumeLayout(false);
     
    		}
    		#endregion
     
    		/// <summary>
    		/// Point d'entrée principal de l'application.
    		/// </summary>
    		[STAThread]
    		static void Main() 
    		{
    			Application.Run(new Form1());
    		}
     
    		private void button1_Click(object sender, System.EventArgs e)
    		{
    			//Create a ResXResourceWriter object
    			ResXResourceWriter rsxw = new ResXResourceWriter("Flags.resx");
     
    			//the EXE will be placed in the bin\debug folder
    			// so refer to the Flags folder from there
    			foreach (string file in Directory.GetFiles(@"..\..\Flags", "*.ico"))
    			{
    				string countryCode = file.Substring(file.Length-6, 2);
    				Image img = Image.FromFile(file);
     
    				//store the Key-Value pair.
    				rsxw.AddResource(countryCode,img);
    			}
    			rsxw.Close();
    			MessageBox.Show("Flags.resx file generated");
    		}
     
    		private void button2_Click(object sender, System.EventArgs e)
    		{
    			//Create a ResourceWriter object
    			ResourceWriter rw = new ResourceWriter("Flags.resources"); 
     
    			//the EXE will be placed in the bin\debug folder
    			// so refer to the Flags folder from there
    			foreach (string file in Directory.GetFiles(@"..\..\Flags", "*.ico"))
    			{
    				string countryCode = file.Substring(file.Length-6, 2);
    				Image img = Image.FromFile(file);
    				//store the Key-Value pair
    				rw.AddResource(countryCode,img);
    			}
    			rw.Close();
    			MessageBox.Show("Flags.resources file generated");
    		}
    	}
    }
    Ensuite il faut que tu utilise cette ligne de commande pour convertir en assembly resource (dll).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    al /embed:TonfichierCreePrecedement.resources /out:NomDuFichierResource.Resources.dll
    En esperant que cela va te simplifier la vie.

    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    merci c'est sympa ....

    je teste tout de suite.

    a+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    parfait ... j'ai créé ma dll ... c'est nikel merci.

    du coup j'ai encore une petite question, comment je fais pour accéder au contenu de ma dll, ou l'extraire pour retrouver les images ?

  7. #7
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    il faut que tu utilise System.Resources.ResourceManager
    tu as la methode GetObject pour les images (avec un cast) et GetString pour les chaines de caracteres.

    @+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    ok ...

    Et sinon il n'est pas possible de l'extraire et de retrouver mes images dans un répertoire ... sinon il va falloir que je modifie tout mon code

  9. #9
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Citation Envoyé par mbibim63
    ok ...

    Et sinon il n'est pas possible de l'extraire et de retrouver mes images dans un répertoire ... sinon il va falloir que je modifie tout mon code
    aie alors la je crois pas que cela soit possible.
    sinon il faut modifier ton projet de deploiement et creer un repertoire pendant l'installation et copier toutes les images dedans et ne pas passer par les assembly resources.

    @+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    c'est ce que j'essayais au début mais vu le nombre d'images, je n'arrive pas à toutes les intégrer au projet de déploiement : visual studio plante.

    d'ou ce topic et ma question ...

    zut zut

    merci quand même

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    donc je modifie mon code ... mais je n'arrive pas à accéder à mes images :

    j'accède à mon assembly comme çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Assembly assembly = Assembly.LoadFile(System.IO.Directory.GetCurrentDirectory() + "\\thumbs\\Thumbs.Ressources.dll");
    et puis après ...

    sinon avec ta méthode, çà marche comment exactement ??

    encore merci pour ton aide depuis ce matin.

  12. #12
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    en fait j'ai trouvé une autre solution qui est super pratique et rapide :

    c'est d'incorporer les images dans une exécutable directement. Ainsi avec le code suvant je peux y accéder en cours d'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
    Stream myStream = myAssembly.GetManifestResourceStream("namespace." + figureName);
    this.pictureBoxFigure.Image = System.Drawing.Image.FromStream(myStream);
    Alors çà marche si l'image se trouve à la racine du projet. Par contre, si comme moi l'image est dans un répertoire (histoire d'organiser un peu tout çà), impossible de retrouver mon image ...

    une idée ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 142
    Par défaut
    c'est tout con en fait ... "namespace.répertoire.image.gif"

    et voilà comment on cloture un topic ...

    merci tout de même à toi freddyboy pour ton aide.

  15. #15
    Membre Expert
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Par défaut
    Citation Envoyé par mbibim63
    c'est tout con en fait ... "namespace.répertoire.image.gif"

    et voilà comment on cloture un topic ...

    merci tout de même à toi freddyboy pour ton aide.
    comptent que ton probleme soit resolu...

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Erreurs à la génération d'un projet de déployement
    Par popysan dans le forum C#
    Réponses: 1
    Dernier message: 17/12/2014, 10h00
  2. Qu'est ce qu'un grand projet ?
    Par Geronimo dans le forum Débats sur le développement - Le Best Of
    Réponses: 62
    Dernier message: 04/04/2013, 15h52
  3. déployement d'un projet web utilise Maven
    Par sakli dans le forum Maven
    Réponses: 2
    Dernier message: 20/12/2008, 23h11
  4. Projet de déployement d'appli asp.net
    Par gluc86 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 07/01/2008, 19h30
  5. Les fichiers d'un projet
    Par Manolo dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/05/2002, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo