98 lines
No EOL
3.6 KiB
C#
98 lines
No EOL
3.6 KiB
C#
using System.IO.Compression;
|
|
using MetaforceInstaller.Core.Models;
|
|
|
|
namespace MetaforceInstaller.Core.Services;
|
|
|
|
public class ZipScrapper
|
|
{
|
|
public static InstallationParts PeekFiles(ZipArchive archive)
|
|
{
|
|
return new InstallationParts
|
|
{
|
|
AndroidContentPath = DoesAndroidContentExists(archive),
|
|
OculusClientPath = DoesOculusClientExists(archive),
|
|
PicoClientPath = DoesPicoClientExists(archive),
|
|
AndroidAdminPath = DoesAndroidAdminExists(archive),
|
|
WindowsAdminPath = DoesPcAdminExists(archive),
|
|
WindowsContentPath = DoesWindowsContentExists(archive),
|
|
WindowsServerPath = DoesServerExists(archive),
|
|
};
|
|
// Console.WriteLine($"Contents of {archive}:");
|
|
// Console.WriteLine("----------------------------------");
|
|
//
|
|
// foreach (ZipArchiveEntry entry in archive.Entries)
|
|
// {
|
|
// // You can access properties like entry.Name, entry.FullName, entry.Length (uncompressed size), entry.CompressedLength
|
|
// Console.WriteLine($"Entry: {entry.FullName}");
|
|
// Console.WriteLine($" Uncompressed Size: {entry.Length} bytes");
|
|
// Console.WriteLine($" Compressed Size: {entry.CompressedLength} bytes");
|
|
// Console.WriteLine("----------------------------------");
|
|
// }
|
|
}
|
|
|
|
public static string ExtractZip(ZipArchive archive, string outputPath)
|
|
{
|
|
archive.ExtractToDirectory(outputPath);
|
|
return outputPath;
|
|
}
|
|
|
|
private static string? DoesPicoClientExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.Name.Contains("MetaforcePico")
|
|
&& entry.Name.EndsWith(".apk"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesOculusClientExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.Name.Contains("MetaforceOculus")
|
|
&& entry.Name.EndsWith(".apk"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesAndroidAdminExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.Name.Contains("MetaforceAdmin")
|
|
&& entry.Name.EndsWith(".apk"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesAndroidContentExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.Name.Contains("Content_Android")
|
|
&& entry.Name.EndsWith(".zip"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesWindowsContentExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.Name.Contains("Content_StandaloneWindows")
|
|
&& entry.Name.EndsWith(".zip"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesPcAdminExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.FullName.Contains("MetaforceAdminPC") &&
|
|
entry.Name.EndsWith(".exe")
|
|
&& !entry.Name.Contains("UnityCrashHandler") &&
|
|
!entry.Name.Contains("crashpad_handler"));
|
|
return entry?.FullName;
|
|
}
|
|
|
|
private static string? DoesServerExists(ZipArchive archive)
|
|
{
|
|
var entry = archive.Entries.FirstOrDefault(entry =>
|
|
entry.FullName.Contains("MetaforceServer") &&
|
|
entry.Name.EndsWith(".exe")
|
|
&& !entry.Name.Contains("UnityCrashHandler") &&
|
|
!entry.Name.Contains("crashpad_handler"));
|
|
return entry?.FullName;
|
|
}
|
|
} |