Comment utiliser Sevenzipsharp avec ce code?
iv essayé de nombreuses façons différentes pour obtenir que cela fonctionne et je l'ai eu d'abord le travail, mais je ne peux pas obtenir le WaitForExit(); 's de travailler comme ils le font ici... alors, comment aurais-je convertir ce de travailler avec sevenzip? cause je ne peux pas le faire fonctionner, et aussi, je les SFX sont passworded, de sorte qu'ils ne sont pas accessibles, sauf par l'utilisation du programme et comme pour ajouter de l'7z.DLL je ne peux pas l'ajouter parce que j'ai l'erreur:
Une référence à 7za.dll n'a pas pu être ajouté. assurez-vous que le fichier est accessible, et qu'il est valide de l'assemblée ou d'un composant COM.
string tempFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
System.Diagnostics.Process defrag1 = System.Diagnostics.Process.Start(@"AusLogics_Defrag.exe", string.Format(" -o{0} -y -Pthisisthepass", tempFolder));
defrag1.WaitForExit();
string executableDirectoryName = Path.GetDirectoryName(Application.ExecutablePath);
System.Diagnostics.Process defrag2 = System.Diagnostics.Process.Start(tempFolder + "\\" + "AusLogics_Defrag" + "\\" + "DiskDefrag.exe", "");
defrag2.WaitForExit();
System.IO.Directory.Delete(tempFolder + "\\" + "AusLogics_Defrag", true);
nouveau: ok c'est bien ce que j'ai jusqu'à présent, mais im obtenir cette erreur "ne Peut pas charger 7-zip bibliothèque ou interne COM erreur! Message: impossible de charger la bibliothèque"
SevenZipExtractor.SetLibraryPath("7z.dll"); //no idea of this is needed or not
SevenZipCompressor.SetLibraryPath("7z.dll"); //no idea of this is needed or not
string tempFolder = Environment.GerFolderPath(Environment.SpecialFolder.ApplicationData);
SevenZipExtractor defrag = new SevenZipExtractor(@"Programs\Optimize\Auslogics_Defrag.7z");
defrag.ExtracArchive(string.Format("-o{0} -y -PThisisthepass", tempFolder));
source d'informationauteur NightsEVil
Vous devez vous connecter pour publier un commentaire.
De référence SevenZipSharp.dll de vous .Un projet de réseau et assurez-vous que vous avez le 7z DLL copié vers la cible répertoire de sortie comme un événement post-build. Depuis 7z.dll n'est pas un .NET votre assemblée .Un projet de réseau ne peut pas faire référence directement.
Il y a deux typique des explications "ne Peut pas charger 7-zip bibliothèque ou interne COM erreur! Message: impossible de charger la bibliothèque":
L'évidence est que le 7z DLL ne peut être trouvée. Dans ce cas, l'appel SevenZipCompressor/SevenZipExtractor.SetLibraryPath() avec le chemin d'accès complet de la DLL avant de prendre toute SevenZipSharp appels. Les chemins d'accès relatifs devrait fonctionner aussi bien, mais essayez de l'absolu dans les cas où le code a changé le répertoire courant du processus. Une stratégie pour obtenir le chemin absolu est d'utiliser le chemin de l'assembly en cours d'exécution, voir ci-dessous pour un exemple.
L'architecture de la DLL qui est référencé ne correspond pas au processus actuel. Par exemple, votre .NET de l'assemblée est en cours d'exécution x64, mais vous faites référence à une version 32 bits de 7z.dll. Dans ce cas, vous avez besoin de faire référence à 7z64.dll. Télécharger 7-Zip DLL fichiers binaires à partir de SevenZipSharp de libération il n'y a pas d'autres problèmes de disparité et assurez-vous que vous utilisez la bonne version.
Voici un exemple de la façon de définir le chemin d'accès absolu de la 7z.dll si c'est dans le même répertoire que l'assemblée de l'utiliser:
Vous devez ajouter une référence à
SevenZipSharp.dll
pas à la régulière7za.dll
ou la7z.dll
.Puisque vous avez besoin d'avoir 7zip dll disponible, vous avez besoin de les compresser avec votre code, cela ne signifie pas que vous avez besoin de les référencer.
Vous pouvez ajouter une solution de projet/dossier de votre application et ajouter la dll requise. Assurez-vous de définir le "Copier dans le Répertoire de construction" à la propriété "Copier si plus Récent".
Si vous utilisez la version 32 bits de l' .dll, vous pouvez essayer le réglage de votre projet à préférer une architecture 32 bits.