diff --git a/ExtractionTool/Program.cs b/ExtractionTool/Program.cs index 26e94ee0..90292361 100644 --- a/ExtractionTool/Program.cs +++ b/ExtractionTool/Program.cs @@ -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 diff --git a/SabreTools.Serialization/Wrappers/PortableExecutable.cs b/SabreTools.Serialization/Wrappers/PortableExecutable.cs index bb02d1e5..5279ab14 100644 --- a/SabreTools.Serialization/Wrappers/PortableExecutable.cs +++ b/SabreTools.Serialization/Wrappers/PortableExecutable.cs @@ -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; } ///