gpt4 book ai didi

c# - 我如何将 Sevenzipsharp 与此代码一起使用?

转载 作者:可可西里 更新时间:2023-11-01 08:54:57 25 4
gpt4 key购买 nike

iv 尝试了许多不同的方法来让它工作,我让它基本工作,但我无法得到 WaitForExit();就像他们在这里一样工作......那么我如何将其转换为与 sevenzip 一起工作?因为我无法让它工作,而且我的 SFX 已设置密码,因此除非使用该程序,否则无法访问它们,至于添加 7z.DLL,我无法添加它,因为我收到错误消息:

A reference to 7za.dll could not be added. please make sure that the file is accessible, and that it is a valid assembly or COM component.

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);

新:好的,这是我目前所拥有的,但我收到错误“无法加载 7-zip 库或内部 COM 错误!消息:加载库失败”

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));

最佳答案

从您的 .NET 项目中引用 SevenZipSharp.dll,并确保将 7z DLL 作为构建后事件复制到目标输出目录。由于 7z.dll 不是 .NET 程序集,您的 .NET 项目不能直接引用它。

“无法加载 7-zip 库或内部 COM 错误!消息:无法加载库”有两种典型的解释:

  1. 很明显,找不到7z DLL。在这种情况下,在进行任何相关的 SevenZipSharp 调用之前,使用 DLL 的完整路径调用 SevenZipCompressor/SevenZipExtractor.SetLibraryPath()。相对路径也应该有效,但尝试使用绝对路径,以防某些代码更改了进程的当前目录。获取绝对路径的一种策略是使用执行程序集的路径,请参见下面的示例。

  2. 被引用的 DLL 的体系结构与当前进程不匹配。例如,您的 .NET 程序集正在运行 x64,但您引用了 7z.dll 的 32 位版本。在这种情况下,您需要引用 7z64.dll。从 SevenZipSharp 的 release 下载 7-Zip DLL 二进制文件以确保没有其他不匹配问题,并确保您使用的是正确的版本。

这是一个示例,如果它与使用它的程序集位于同一目录中,则如何设置 7z.dll 的绝对路径:

SevenZip.SevenZipCompressor.SetLibraryPath(
Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"7z.dll"));

关于c# - 我如何将 Sevenzipsharp 与此代码一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com