问题标签 [sevenzipsharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 使用 C# 提取 7z SFX 文件
我有一个 7z SFX 类型的 exe 文件。一个文本文件被压缩在 exe 文件中。如何在 C# 中读取 exe 中的文本文件的内容。我尝试使用 Sevenzipsharp 库进行提取,但出现异常End of central directory record could not found
。
c# - SevenZipSharp ExtractARchive 决定了错误的格式
我使用的是sevenzipsharp,我有很多msi、rar、iso和更多格式的档案,ExtractArchive认为它是TAR,因此无法提取它们。可以通过 7zip gui 提取档案。所以我确信档案是好的。
这是我的提取代码:
SevenZipArchiveException 在 extractArchive 上引发:无效存档:打开/读取错误!它是否已加密并且提供了错误的密码?如果您的存档是异国情调的,则 SevenZipSharp 可能没有其格式的签名,因此错误地认为它是 TAR。
存档没有密码保护,也不是 TAR,可以通过 7zip gui 提取存档。
任何想法?
linux - 如何在 Linux 上运行的 .NET Core 应用中使用 7zip?
我们有一个托管在 Azure Service Fabric 中的 .NET Core 应用程序。现在我们将其移至基于 Linux 的 Docker 容器。
我们需要能够为外部服务创建 7zip 存档(其中一个需要 7zip 存档的“通过 ftp 将文件拖放到此处”接口)。
到目前为止,我们可以使用从 .NET Framework 移植到 .NET Core 的 CLI 包装器。但是一旦我们切换到 Linux 环境,这将不再有效。
我们无法更改外部服务(因为它不是我们的)并且我们不想使用基于 Windows 的 Docker 容器。
.NET Framework 有大量 7zip NuGet 包。.NET Core 很少(大部分已过时且不再维护)。我找不到适用于 Linux 上的 .NET Core 的内容。
您对我们如何解决该问题有任何建议吗?
更新:我在SevenZipSharp项目的未解决问题中发现了一个类似的问题。遗憾的是没有包含解决方案。
更新 2:不幸的是,我们不能使用 LZMA 算法的替代实现。我们的第 3 方需要 .7z 格式的档案 :-(
c# - 重新定位我的应用程序的依赖项会引发 System.IO.FileNotFoundException
我正在尝试清理我的 Release 文件夹,以便依赖文件对它们具有某种类型的组织。在这种情况下,我的目标是将压缩模块所需的所有依赖项包含在一个文件夹中。对于我的新类库的第一部分,我只是想支持 7zip 文件。我使用SevenZipSharp.Interop NuGet执行此操作,它依赖于SevenZipSharp NuGet。
默认情况下,上面的 NuGet 构建结果在我的 Release/Debug 文件夹中,如下所示...
当我向我的类库添加更多支持时,我想确保所有内容都有自己的文件夹等。所以,我想按以下方式组织它......
我通过运行一些 POST BUILD 命令来做到这一点,一旦项目构建,我就会得到上面想要的结构(后者)。但是,在调试时,在我编译并发生 POST BUILD 命令后,应用程序尝试运行,但我收到一条System.IO.FileNotFoundException
错误消息,告诉我它找不到SevenZipSharp.dll
. 我知道这会发生在我的脑海中,但希望有一种方法可以让应用程序知道依赖项的新位置。
是否可以重新定位文件,然后让我的应用程序知道它们以某种方式位于不同的位置?
c# - 为什么在尝试提取单个文件时 SevenZipSharp.Interop NuGet 会提取多个文件?
也许只是我,我做错了什么,或者这可能是课程的预期结果,但我觉得它有问题......
我制作了以下测试存档(文件夹中也有文件,但它不应该与这个问题相关):
我使用以下方法提取单个文件(New Text Document.txt
)...
然后随着事件Extracting
,我希望得到以下结果......FileExtractionStarted
FileExtractionFinished
但是,我得到以下结果......
似乎即使我试图提取一个文件,它也在处理所有文件。当我尝试更大规模地使用它时(提取整个文件而不是单个文件),我将在根目录中有一个大文件和一堆小文件文件夹的存档,并在尝试时看到巨大的影响处理每个小文件(提取每个小文件所需的时间与提取存档根目录中的大文件所需的时间一样长。
用户是否有某种期望在内存流中设置搜索点或其他东西?我怎样才能让提取一个小文本文件不需要这么长时间?
c# - 从多部分 rar 文件 c# 获取卷文件
我在同一个文件夹中有多部分 RAR 文件,我想检查 RAR 的所有部分是否存在。我正在使用 SharpCompress v0.24,这是我的代码:
但我无法获得卷的完整文件名。然后我使用 SevenZipSharp v 0.64 和 7z.dll 版本 19,这是我的代码:
但后来我得到了错误:
无效的存档打开/读取错误!它是否已加密并且提供了错误的密码?如果您的存档是异国情调的,则 SevenZipSharp 可能没有其格式的签名,因此错误地认为它是 TAR
请注意,WinRAR 程序似乎会更改 RAR 文件格式,因为我创建了一个版本为 5.71 的 RAR 文件,当我尝试使用旧版本的 WinRAR 打开它时,它无法正常打开,我的意思是文件格式不正确。
这同样适用于 SevenZipSharp。如果我打开自 2014 年以来创建的旧 RAR 文件,它可以正常打开,但是当我打开使用 WinRAR v 5.71 创建的 RAR 文件时,它会引发此错误。
那么现在如何获取多部分 RAR 文件的所有部分文件名?
谢谢你的帮助。
c# - 在 SevenZipSharp 中设置压缩根文件夹
我尝试更改现有的压缩工具。压缩工具目前使用 SharpZipLib。我必须将其转换为使用 SevenZipSharp。使用 SharpZipLib 进行压缩时,我可以更改 zip 的根目录,并且在使用 SevenZipSharp 时我想保留这个根目录。
所以如果我有例如绝对结构
然后我的 SevenSharpZip 将创建一个包含以下内容的 zip:
SharpZipLib 将创建以下内容
是否可以为 SevenZipSharp 设置一个根目录,以便我的两个拉链具有相同的内部结构?我还没有找到相应地更改它的设置。IncludeEmptyDirectory
,PreserveDirectoryRoot
并DirectoryStructure
没有得到我需要的结果。
c# - 如何在c#中压缩4GB以上的文件时跳过ZIP64格式
在这里,我尝试使用大小大于 4 GB 的 .net 4.5 版本创建 zip 文件。创建为 ZIP64 的文件格式。之后,还有一个用java编写的程序将解压缩和处理。但是java代码会抛出像“无效条目大小”这样的错误。我们可以跳过 ZIP64 格式,以便 java 代码可以轻松处理 zip 文件吗?
c# - SevenZipSharp 的问题。7z.dll 库未找到甚至定义的库路径
我正在创建 ASP.NET Web 应用程序。我需要在其中提取一些“7z”文件。
我的代码:
根据 SevenZipSharp 文档,SetLibraryPath 应该可以解决问题,但事实并非如此。
在我在控制台应用程序中进行测试期间,一切正常,但是当我尝试运行我的 Web 应用程序时,我得到“无法加载 7-zip 库或内部 COM 错误!消息:加载库失败。 ”。在控制台应用程序中它更容易,因为 dll 文件可以放在 Debug 文件夹中并且它可以工作。Web 应用程序由 IIS Express 处理,我猜这是问题所在。