77 lines
2.9 KiB
C#
77 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Security.Cryptography;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace SignToolsGUI
|
|
{
|
|
static class Program
|
|
{
|
|
/// <summary>
|
|
/// The main entry point for the application.
|
|
/// </summary>
|
|
[STAThread]
|
|
static void Main()
|
|
{
|
|
//WriteResourceToFile("SignToolsGUI.System.Buffers.dll", "System.Buffers.dll");
|
|
//WriteResourceToFile("SignToolsGUI.UnityEngine.CoreModule.dll", "UnityEngine.CoreModule.dll");
|
|
//WriteResourceToFile("SignToolsGUI.UnityEngine.SharedInternalsModule.dll", "UnityEngine.SharedInternalsModule.dl");
|
|
//WriteResourceToFile("SignToolsGUI.LZ4pn.dll", "LZ4pn.dll");
|
|
//WriteResourceToFile("SignToolsGUI.LZ4.dll", "LZ4.dll");
|
|
//WriteResourceToFile("SignToolsGUI.Facepunch.System.exe", "Facepunch.System.exe");
|
|
//WriteResourceToFile("SignToolsGUI.Rust.Data.dll", "Rust.Data.dll");
|
|
//WriteResourceToFile("SignToolsGUI.Rust.World.dll", "Rust.World.dll");
|
|
|
|
AssemblyResolver.Register();
|
|
Application.EnableVisualStyles();
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
Application.Run(new GUI());
|
|
}
|
|
public static void WriteResourceToFile(string resourceName, string fileName)
|
|
{
|
|
using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
|
|
{
|
|
using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
|
|
{
|
|
resource.CopyTo(file);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
internal class AssemblyResolver
|
|
{
|
|
public static void Register()
|
|
{
|
|
AppDomain.CurrentDomain.AssemblyResolve +=
|
|
(sender, args) =>
|
|
{
|
|
var an = new AssemblyName(args.Name);
|
|
|
|
string[] dlls = { "System.Buffers", "UnityEngine.CoreModule", "UnityEngine.SharedInternalsModule", "LZ4pn", "LZ4", "Facepunch.System", "Rust.Data", "Rust.World" };
|
|
|
|
if (dlls.Contains(an.Name))
|
|
{
|
|
string resourcepath = "SignToolsGUI." + an.Name + ".dll";
|
|
if (an.Name.Contains("Facepunch.System"))
|
|
{
|
|
resourcepath = resourcepath.Replace(".dll", ".exe");
|
|
}
|
|
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcepath);
|
|
using (stream)
|
|
{
|
|
byte[] data = new byte[stream.Length];
|
|
stream.Read(data, 0, data.Length);
|
|
return Assembly.Load(data);
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
}
|
|
}
|