我创建了 hallo.7z 并使用 7zxSD_LZMA.sfx 作为模块。我认为我的配置是正确的,但在提取sfx时,我收到了
7-zip:不支持的方法
void CreateExeFile()
{
try
{
SfxModule mdl = SfxModule.Extended;
SevenZipSfx sfx = new SevenZipSfx(mdl);
sfx.ModuleFileName = @"7zxSD_LZMA.sfx";
sfx.MakeSfx("D:\\hallo.7z",
new Dictionary<string, string>
{
{ "Title", "Extract Files" },
{ "InstallPath", ProgramFilesx86() + "\\ATIG Platform" },
{ "BeginPrompt", "Choose directory },
{ "CancelPrompt", "Extract Now" },
{ "OverwriteMode", "0" },
{ "GUIMode", "1" },
{ "ExtractDialogText", "Process Extract" },
{ "ExtractTitle", "Extract Files" },
{ "ErrorTitle", "Error" }
},
"D:\\hallo.exe");
MessageBox.Show("Success !");
}
catch (IOException ex)
{
MessageBox.Show(this, ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
static string ProgramFilesx86()
{
if (8 == IntPtr.Size
|| (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
7zxSD_LZMA.sfx和7zxSD_All无法运行提取,因为使用了密码。
答案 0 :(得分:6)
我理解为什么会这样表现出来。这也和我有关。这就是我发现的原因:此SFX模块不支持LZMA2存档,仅支持LZMA。因此您需要将存档重建为LZMA。
问候:)
答案 1 :(得分:0)
在Windows上造成此问题的另一个原因是Windows上的路径长度限制。如果归档文件中包含的文件在提取后导致路径长度大于260个字符(Windows中的最大值),则会出现此错误。