[C#] Création de mon premier projet.

ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012 - 14 févr. 2011 à 13:57
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012 - 16 févr. 2011 à 14:42
Bonjour,

J'aimerai créer un outils (graphique) assez simple. Cet outil doit savoir explorer et modifier une sorte de .zip (C'est un .xap, un format pour Windows Phone 7 qui est très très proche du .zip)

Il n'y a que deux types de ressource à identifier et à modifier/changer. .png et .xml.

J'ai commencé à le codé en C#

J'ai terminé (quasiment la partie) graphique du soft. Tous les boutons n'appellent pas encore toutes les fonctions car je bloque dès le début. (Je n'arrive pas à entrer dans les ressources du .xap (.zip) en fait)

En effet, le principe c'est de modifier deux ressources dans le .xap (png et xml) mais aussi d'ajouter un provxml.

Je crois après des recherches avoir compris que pour explorer un .zip je dois avoir ICSharpCode.SharpZipLib.dll.

Je sais pas du tout comment faire. C'est mon premier réel projet. J'espère que vous allez pouvoir m'aider dans cette première expérience! Jusqu'à aujourd'hui je n'avais fais que des programmes en console de type cours comme des jeux du chaud ou froid. Je suis donc réellement novice. Mais j'ai ce projet à coeur. J'espère que vous allez pouvoir m'aider!

Merci pour tout !

46 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 févr. 2011 à 23:51
Hello,
Je t'ai fait un petit exemple
Pour info, il manque un truc: la compression ne se fait que sur un répertoire ne contenant pas de sous-répertoire. Il faudrait ajouter de la récursivité mais tu peux toujours regarder ma source...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 00:11
Salut Buno, tout d'abord, merci de passer autant de temps sur mon cas.

J'ai générer ton programme et j'ai le même problème qu'avec une des centaines de solutions que j'ai testé. Mon processus me dit que ça a été extrait (au même endroit où se trouvait le .zip) mais en fait rien n'apparait ! (J'ai actualisé mon explorer pour être sûr que c'était pas un problème "d'affichage" mais non... tu as testé chez toi ou ça vient vraiment de chez moi?

J'ai testé un .zip avec un .exe dedans et un avec .jpg

Bonne soirée !
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 09:27
Je teste toujours ce que je poste en tant que source
Tu dis que tu as un problème quand tu décompresse le zip de ma source? Tu utilises Winzip? Je viens de tester, je n'ai pas de souci de récupération...
Sinon, tu peux toujours regarder le code de Form1.cs

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 10:08
Salut,

Euh j'ai pris ton projet, ZipUnzip, je l'ai générer puis tester avec un .zip mais il ne s'est pas décompressé, du moins pas sur le même répertoire que le .zip (en l'occurrence du mon desktop)

étant donné que tu me dis que tu as testé ZipUnzip avant de me l'envoyé et que moi il marche pas, ça doit venir de chez moi mais je sais pas d'où...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 10:17
Normalement, le contenu du zip se retrouve dans le même répertoire que celui contenant le zip, ton bureau en l'occurence.
Tu ne vois rien?
Peux-tu essayer le debuggage "pas à pas", pour voir la valeur de outputPath?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 10:34
Quand je fais un débogage pas à pas, je reste bloqué sur une boucle. Celle-ci

while (true)
                    {
                        size = s.Read(data, 0, data.Length);
                        if (size > 0)
                        {
                            streamWriter.Write(data, 0, size);
                        }
                        else
                        {
                            break;
                        }
                    }

                    streamWriter.Close();
                }

Qui appartient au bouton Unzip
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 10:36
Quand je fais pas à pas principale au même endroit j'ai ça: {"Unexpected EOF"}par rapport à la librarie ICSharp...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 10:44
Envoies-moi ton zip (cf. mp), je vais y jeter un coup d'oeil.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 10:57
Ok, bien reçu: il a l'air normal...
Peux-tu faire un test? Mettre ton zip dans une arborescence sans espace? Genre D:\test\monZip.zip?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 11:23
Re,
En fait, ton zip est bien décompressé...mais pas au bon endroit... boulette de ma part.
Voici la modif, dans la callback de Unzip:
String outputPath = inputFile.Substring(0, inputFile.LastIndexOf('\\')+1); // rajouter +1


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 11:40
Ahahah, génial ! Et en plus la super bonne nouvelle, si on peut dire ça comme ça, c'est que même si je choisis un .xap il le décompresse sans problème ! J'espère que je vais pouvoir le compressé sous forme de .xap et non .zip

Maus du coup, le contenu du .xap/.zip est extrait directement sur le bureau. Donc dans le outpatch pour faire en sorte de créer un dossier qui a le même nom que le .xap/.zip je dois modifier le outpatch...

// output path
            String outputPath = textBoxFileName.Text.Substring(0, textBoxFileName.Text.LastIndexOf('\\')+1);


(ça provient du code de xap editor et non ZipUnzip.)

Je le transforme en quelque chose comme ça?

// output path
            String outputPath = textBoxFileName.Text.Substring(0, textBoxFileName.Text.LastIndexOf('\\textBoxfilename.Text')+1);
??

Car là j'ai une erreur...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 11:43
J'ai modifier un peu le code, j'arrive bien a refaire un .xap et non un .zip. Je vais le tester voir s'il marche!
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 11:53
Cool!

LastIndexOf() te permet, comme son nom l'indique, de trouver la dernière occurence du caractère '\', ce qui me permet de récupérer le répertoire contenant le zip. Il faut plutôt faire ceci:
// output path
String outputPath = inputFile.Substring(0, inputFile.LastIndexOf('\\')+1);
outputPath += inputFile.Substring(inputFile.LastIndexOf('\\')+1);
outputPath = outputPath.Remove(outputPath.LastIndexOf('.')) + "\";

Y'a sûrement moyen de faire plus court, mais bon...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 11:54
ça va te créer un répertoire du même nom que ton zip

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 12:21
// output path
            String outputPath = textBoxFileName.Text.Substring(0, textBoxFileName.Text.LastIndexOf('\\') + 1);
            outputPath += textBoxFileName.Text.Substring(textBoxFileName.Text.LastIndexOf('\\') + 1);
            outputPath = outputPath.Remove(outputPath.LastIndexOf('.')) + "\";


Voilà, j'ai réadapté le code pour mon projet ça marche super, super bien !

En gros xap editor fait:

-Decompresse le .xap
-Exploration du fichier + modification
-compression du fichier vers output.xap (qu'il faudra que je renomme en "Application Name".xap
-Signature du .xap pour pouvoir l'envoyer vers le téléphone

actuellement avec les ressources que j'ai (et surtout les tiennes depuis ZipUnzip) je peux aller jusqu'à la compression vers un nouveau .xap

pour le signé j'ai un autre soft. Le mec qui a fait le soft pour faire un patch de .xap devrait me filer son code source pour que je puisse finir le projet :)

C'est super.

Maintenant je vais m'attaquer à la phase d'exploration du fichier (la décompression du .xap)

http://www.hostingpics.net/viewer.php?id=447547xapeditor.png

au niveau de current picture je vais afficher "Background.png" qui se trouve à la racine de du fichier de l'extraction du .xap

private void pictureBox2_Click(object sender, EventArgs e)
        {
            \(textBoxFileName.Text.LastIndexOf('\\') + 1)\Background.png;
        }   


j'avais pensé à un truc comme ça mais ça marche pas... du coup je sais pas comment linké sur un dossier que je viens de créer !
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 13:41
Le chemin du dossier, tu peux le stocker dans une variable membre de ta form, par exemple...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 13:48
Vu que je suis novice de comprend à moitié ce que tu veux dire...

En gros tu me dis que le dossier créer suite à l'extraction est une variable que je vais devoir introduire dans mon code? Donc en gros je dois faire appel aux fonctions que j'ai rentré au moment de l'extraction (c'est à dire nom + répertoire)?

Dans ce cas ce n'est pas ce que j'ai fait?

private void pictureBox2_Click(object sender, EventArgs e)
        {
            \(textBoxFileName.Text.LastIndexOf('\\') + 1)\Background.png;
        }   


textBoxFile name c'est le nom du dossier, du moins sont répertoire. dans ce cas je peux faire ça non?

private void pictureBox2_Click(object sender, EventArgs e)
        {
            \(textBoxFileName.Text\Background.png;
        }   


car dans "textBoxfilename" j'ai "C:\Users\Guillaume\Desktop\LooknType.xap" donc c'est bien l'adresse de l'image. Sauf qu'il il ya peut-être le .xap en trop !
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 13:53
Avec ça
String outputPath = textBoxFileName.Text.Substring(0, textBoxFileName.Text.LastIndexOf('\\') + 1);

Tu récupères le répertoire contenant le zip.
Après, tu peux rajouter ce que tu veux avec un +=

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ThGraf Messages postés 58 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 14 juillet 2012
16 févr. 2011 à 13:59
Justement en attendant que tu réponde j'ai testé ça... Je devais être sur la bonne voie alors

private void pictureBox2_Click(object sender, EventArgs e)
        {
            string directoryName = textBoxFileName.Text.Substring(textBoxFileName.Text.LastIndexOf('\\Background.png') + 1);
        }


Mais ça marche par, je crois que "Background.Png n'est pas au bonne endroit !

Je vais tester avec ton code, merci !
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 févr. 2011 à 14:00
Dans ton cas,
String outputPath = textBoxFileName.Text.Substring(0, textBoxFileName.Text.LastIndexOf('\\') + 1);
outputPath += "\\Background.png";


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous