xnooztv
Messages postés6Date d'inscriptionmercredi 6 janvier 2016StatutMembreDernière intervention23 décembre 2018
-
Modifié par xnooztv le 7/01/2016 à 04:59
Whismeril
Messages postés19020Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention15 avril 2024
-
8 janv. 2016 à 09:18
Bonjour,
Voila, je suis sur la création d'un launcher et je souhaite dézippé le fichier dans le dossier ou se trouve le launcher.
Mon launcher récupère un fichier de configuration sur mon site, voici le fichier conf.txt:
Whismeril
Messages postés19020Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention15 avril 2024656 7 janv. 2016 à 18:18
Bonsoir, mettre tout ton code n'est pas très utile, cela oblige celui qui voudrait tester à créer une Window "clone" de la tienne... ou à chercher dans tout ça les parties utiles, soit le téléchargement et la décompression....
Ton (tes?) lien maintenant, tu l'as mis entre des balises de codes du coup, pas sûr de le lire correctement
Dans le fichier de configuration, le premier lien est la version du jeu
Le deuxième, le lien du patch à faire télécharger sur le launcher
Le troisième, c'est le nom du dossier d'extraction de maj.zip
Donc, DOSSIER_LORS_DU_DEZIP s'active quand mon launcher à fini de télécharger la mise à jour, et le dossier "DOSSIER_LORS_DU_DEZIP " se crée et il y aura les mise à jours dedans.
Mais moi je souhaite, que lorsque mon launcher unzip maj.zip, il le dezip à l'endroit ou est le launcher (a la racine) et qu'il ne crée par de dosseier (ex: DOSSIER_LORS_DU_DEZIP)
Whismeril
Messages postés19020Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention15 avril 2024656 7 janv. 2016 à 21:22
Ok mais tu demandes exactement le contraire à ton programme....
ligne 68
m_unziPath = settingLine[2];
là tu enregistre "Dossier_Lors_du_Dezip"
ligne 131 à 136
if (Directory.Exists(m_unziPath)) //On supprime l'ancienne version.
{
string[] filePaths = Directory.GetFiles(m_unziPath);
foreach (string filePath in filePaths)
File.Delete(filePath);
}
tu testes si le dossier existe déjà et si oui tu le vides.
ligne 138
Decompress("maj.zip", m_unziPath, true);
tu envoies ce chemin à ta méthode de décompression.
Dans celle-ci, tu (re)crées le dossier et tu décompresse dedans, lignes 188 à 219.
Donc, il fait précisément ce que tu dis ne pas vouloir.
Tu peux essayer d'appeler Decompress comme ça:
Decompress("maj.zip", string.Empty, true);
Mais bon, dommage de s'être donné tant de mal à faire en sorte de lire sur un serveur le nom d'un dossier à créer, le réinitialiser s'il existe déjà, avec l'avantage comme ça d'effacer la version obsolète, et enfin télécharger et deziper la nouvelle version dans ce dossier.
xnooztv
Messages postés6Date d'inscriptionmercredi 6 janvier 2016StatutMembreDernière intervention23 décembre 2018 7 janv. 2016 à 21:26
Le code n'est pas de moi, j'ai suivie un tutoriel mais il n'a pas expliquer la fonction ZIP c'est pour sa que je suis venu vous voir..
J'ai regarder vite fais la documentation et maintenant sa fonctionne.
Pour ceux qui sa intéresse:
public void ExtractZipFile(string archiveFilenameIn, string password, string outFolder) { ZipFile zf = null; try { FileStream fs = File.OpenRead(archiveFilenameIn); zf = new ZipFile(fs); if (!String.IsNullOrEmpty(password)) { zf.Password = password; // AES encrypted entries are handled automatically } foreach (ZipEntry zipEntry in zf) { if (!zipEntry.IsFile) { continue; // Ignore directories } String entryFileName = zipEntry.Name; // to remove the folder from the entry:- entryFileName = Path.GetFileName(entryFileName); // Optionally match entrynames against a selection list here to skip as desired. // The unpacked length is available in the zipEntry.Size property.
byte[] buffer = new byte[4096]; // 4K is optimum Stream zipStream = zf.GetInputStream(zipEntry);
// Manipulate the output filename here as desired. String fullZipToPath = System.IO.Path.Combine(outFolder, entryFileName); string directoryName = System.IO.Path.GetDirectoryName(fullZipToPath); if (directoryName.Length > 0) Directory.CreateDirectory(directoryName);
// Unzip file in buffered chunks. This is just as fast as unpacking to a buffer the full size // of the file, but does not waste memory. // The "using" will close the stream even if an exception occurs. using (FileStream streamWriter = File.Create(fullZipToPath)) { StreamUtils.Copy(zipStream, streamWriter, buffer); } } }
Whismeril
Messages postés19020Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention15 avril 2024656 8 janv. 2016 à 09:18
Bonjour,
On aurait pu gagner du temps, si tu avais présenté les choses comme il faut, la charte explique que l'on peut utiliser un code source à condition de ne pas s'en attribuer la paternité, il en va de même sur l'ensemble des sites de partage.
En commençant, par "j'ai trouvé" ou "on m'a donné" plutôt que par
Voila, je suis sur la création d'un launcher
Ma première lecture du code n'aurait pas été la même.
Présenter les choses correctement permet non seulement de respecter les règles du partage, mais aussi d'obtenir plus rapidement une aide efficace.