Somewhat add SFX support

This commit is contained in:
Matt Nadareski
2025-08-28 15:26:37 -04:00
parent bf8bd04dc7
commit 02533cf947
2 changed files with 14 additions and 28 deletions

View File

@@ -160,41 +160,17 @@ namespace ExtractionTool
if (exe == null)
return;
// TODO: Add Wise installer handling here
// New Executable
if (exe is NewExecutable nex)
{
// Wise Installer -- Reimplement
// var wi = new WiseInstaller();
// if (wi.CheckExecutable(file, nex, includeDebug) != null)
// wi.Extract(file, nex, outputDirectory, includeDebug);
// No-op
}
// Portable Executable
else if (exe is PortableExecutable pex)
{
// CExe, Embedded Archives, Embedded Executables
pex.Extract(outputDirectory, includeDebug);
// 7-zip SFX -- Reimplement
// var szsfx = new SevenZipSFX();
// if (szsfx.CheckExecutable(file, pex, includeDebug) != null)
// szsfx.Extract(file, pex, outputDirectory, includeDebug);
// WinRAR SFX -- Reimplement
// var wrsfx = new WinRARSFX();
// if (wrsfx.CheckExecutable(file, pex, includeDebug) != null)
// wrsfx.Extract(file, pex, outputDirectory, includeDebug);
// WinZip SFX -- Reimplement
// var wzsfx = new WinZipSFX();
// if (wzsfx.CheckExecutable(file, pex, includeDebug) != null)
// wzsfx.Extract(file, pex, outputDirectory, includeDebug);
// Wise Installer -- Reimplement
// var wi = new WiseInstaller();
// if (wi.CheckExecutable(file, pex, includeDebug) != null)
// wi.Extract(file, pex, outputDirectory, includeDebug);
}
}
// GCF

View File

@@ -1100,7 +1100,17 @@ namespace SabreTools.Serialization.Wrappers
bool cexe = ExtractCExe(outputDirectory, includeDebug);
bool overlay = ExtractFromOverlay(outputDirectory, includeDebug);
bool resources = ExtractFromResources(outputDirectory, includeDebug);
return cexe || overlay || resources;
var sevenZipSfx = SevenZip.Create(_dataSource);
bool sevenZip = sevenZipSfx?.Extract(outputDirectory, lookForHeader: true, includeDebug) ?? false;
var pkzipSfx = PKZIP.Create(_dataSource);
bool pkzip = pkzipSfx?.Extract(outputDirectory, lookForHeader: true, includeDebug) ?? false;
var rarSfx = RAR.Create(_dataSource);
bool rar = rarSfx?.Extract(outputDirectory, lookForHeader: true, includeDebug) ?? false;
return cexe || overlay || resources || sevenZip || pkzip || rar;
}
/// <summary>