diff --git a/.gitmodules b/.gitmodules index 662c76f2..00469374 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,3 @@ [submodule "BinaryObjectScanner/_EXTERNAL/stormlibsharp"] path = BinaryObjectScanner/_EXTERNAL/stormlibsharp url = https://github.com/robpaveza/stormlibsharp.git -[submodule "BinaryObjectScanner/_EXTERNAL/libmspack4n"] - path = BinaryObjectScanner/_EXTERNAL/libmspack4n - url = https://github.com/activescott/libmspack4n.git -[submodule "BinaryObjectScanner/_EXTERNAL/LessIO"] - path = BinaryObjectScanner/_EXTERNAL/LessIO - url = https://github.com/activescott/LessIO.git diff --git a/BinaryObjectScanner/BinaryObjectScanner.csproj b/BinaryObjectScanner/BinaryObjectScanner.csproj index 81f1b691..59cd8c04 100644 --- a/BinaryObjectScanner/BinaryObjectScanner.csproj +++ b/BinaryObjectScanner/BinaryObjectScanner.csproj @@ -41,9 +41,6 @@ $(DefaultItemExcludes); **\AssemblyInfo.cs; - _EXTERNAL\LessIO\src\LessIO.Tests\**; - _EXTERNAL\libmspack4n\lib\**; - _EXTERNAL\libmspack4n\libmspack4ntest\**; _EXTERNAL\stormlibsharp\lib\**; _EXTERNAL\stormlibsharp\src\TestConsole\** diff --git a/BinaryObjectScanner/FileType/MicrosoftCAB.cs b/BinaryObjectScanner/FileType/MicrosoftCAB.cs index b50e6a80..12fe785e 100644 --- a/BinaryObjectScanner/FileType/MicrosoftCAB.cs +++ b/BinaryObjectScanner/FileType/MicrosoftCAB.cs @@ -2,11 +2,7 @@ using System.IO; using BinaryObjectScanner.Interfaces; using SabreTools.IO.Extensions; -#if (NET40_OR_GREATER || NETCOREAPP) && WINX86 -using LibMSPackN; -#else using SabreTools.Models.MicrosoftCabinet; -#endif namespace BinaryObjectScanner.FileType { @@ -30,7 +26,6 @@ namespace BinaryObjectScanner.FileType /// public bool Extract(Stream? stream, string file, string outDir, bool includeDebug) { -#if NET20 || NET35 || !WINX86 // TODO: Remove once Serialization is updated // Get a wrapper for the set, if possible @@ -61,46 +56,6 @@ namespace BinaryObjectScanner.FileType } return true; -#else - try - { - if (!File.Exists(file)) - return false; - - // Loop over each entry - var cabArchive = new MSCabinet(file); - foreach (var compressedFile in cabArchive.GetFiles()) - { - try - { - // Ensure directory separators are consistent - string fileName = compressedFile.Filename; - if (Path.DirectorySeparatorChar == '\\') - fileName = fileName.Replace('/', '\\'); - else if (Path.DirectorySeparatorChar == '/') - fileName = fileName.Replace('\\', '/'); - - string tempFile = Path.Combine(outDir, fileName); - var directoryName = Path.GetDirectoryName(tempFile); - if (directoryName != null && !Directory.Exists(directoryName)) - Directory.CreateDirectory(directoryName); - - compressedFile.ExtractTo(tempFile); - } - catch (Exception ex) - { - if (includeDebug) Console.Error.WriteLine(ex); - } - } - - return true; - } - catch (Exception ex) - { - if (includeDebug) Console.Error.WriteLine(ex); - return false; - } -#endif } /// diff --git a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs index f9a699a2..234f27c6 100644 --- a/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs +++ b/BinaryObjectScanner/Packer/MicrosoftCABSFX.cs @@ -4,7 +4,7 @@ using SabreTools.Serialization.Wrappers; namespace BinaryObjectScanner.Packer { - // TODO: Add extraction, which should be possible with LibMSPackN, but it refuses to extract due to SFX files lacking the typical CAB identifiers. + // TODO: Add extraction // https://raw.githubusercontent.com/wolfram77web/app-peid/master/userdb.txt public class MicrosoftCABSFX : IExtractableExecutable { diff --git a/BinaryObjectScanner/_EXTERNAL/LessIO b/BinaryObjectScanner/_EXTERNAL/LessIO deleted file mode 160000 index 3dcf2c14..00000000 --- a/BinaryObjectScanner/_EXTERNAL/LessIO +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3dcf2c147b219352c580ee9950e8ba1f3d1fbe27 diff --git a/BinaryObjectScanner/_EXTERNAL/README.MD b/BinaryObjectScanner/_EXTERNAL/README.MD index 4baa7370..1dab0038 100644 --- a/BinaryObjectScanner/_EXTERNAL/README.MD +++ b/BinaryObjectScanner/_EXTERNAL/README.MD @@ -4,6 +4,4 @@ This directory contains multiple external libraries. Here is the status of each: | Directory | Library | Status | | --------- | ------- | ------ | -| LessIO | [LessIO](https://github.com/activescott/LessIO) | External submodule | -| libmspack4n | [libmspack4n](https://github.com/activescott/libmspack4n) | External submodule | | stormlibsharp | [stormlibsharp](https://github.com/robpaveza/stormlibsharp) | External submodule | diff --git a/BinaryObjectScanner/_EXTERNAL/libmspack4n b/BinaryObjectScanner/_EXTERNAL/libmspack4n deleted file mode 160000 index 7213a361..00000000 --- a/BinaryObjectScanner/_EXTERNAL/libmspack4n +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7213a361f80bee1d96f428aceb5595977d024855 diff --git a/ExtractionTool/Program.cs b/ExtractionTool/Program.cs index eacabd5c..a3e07427 100644 --- a/ExtractionTool/Program.cs +++ b/ExtractionTool/Program.cs @@ -297,14 +297,12 @@ namespace ExtractionTool szdd.Extract(Path.GetFileName(file), outputDirectory); } - // Microsoft Cabinet archive -- Implementation partially moved to Serialization + // Microsoft Cabinet archive -- Implementation moved to Serialization else if (ft == WrapperType.MicrosoftCAB) { // Build the cabinet information Console.WriteLine("Extracting MS-CAB contents"); -#if NET20 || NET35 || !WINX86 - Console.WriteLine("WARNING: LZX compression not supported so some files may be skipped!"); -#endif + Console.WriteLine("WARNING: LZX and Quantum compression schemes are not supported so some files may be skipped!"); Console.WriteLine(); // Extract using the FileType diff --git a/README.md b/README.md index 83eb6cbc..5ebf429c 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ C# protection, packer, and archive scanning library. This currently compiles as The following non-project libraries (or ports thereof) are used for file handling: -- [LessIO](https://github.com/activescott/LessIO) - Used by libmspack4n for IO handling -- [libmspack4n](https://github.com/activescott/libmspack4n) MS-CAB extraction [Unused in .NET Framework 2.0/3.5, non-Windows, and non-x86 builds due to Windows-specific libraries] - [SharpCompress](https://github.com/adamhathcock/sharpcompress) - Common archive format extraction - [StormLibSharp](https://github.com/robpaveza/stormlibsharp) - MoPaQ extraction [Unused in .NET Framework 2.0/3.5/4.0, non-Windows, and non-x86 builds due to Windows-specific libraries] - [UnshieldSharp](https://github.com/mnadareski/UnshieldSharp) - InstallShield CAB extraction @@ -212,7 +210,7 @@ Below is a list of container formats that are supported in some way: | InstallShield CAB | Yes | Yes | Yes | Via `UnshieldSharp` | | Linear Executable | No | No | No | Skeleton only | | Link Data Security encrypted file | No | Yes | No | | -| Microsoft cabinet file | Yes | Yes | Yes* | Via `libmspack4n`, Windows x86 only, .NET Framework 4.5.2 and above | +| Microsoft cabinet file | Yes | Yes | Yes* | Does not support LZX or Quantum compression | | Microsoft LZ-compressed files | No | Yes | Yes | | | MoPaQ game data archive (MPQ) | No | Yes | Yes* | Via `StormLibSharp`, Windows x86 only, .NET Framework 4.5.2 and above | | MS-DOS Executable | Yes | Yes | No | Incomplete |