Files
Torch/Torch.Server/Program.cs
John Gross 97f380fb7b Fix moar
2019-06-06 18:03:58 -07:00

65 lines
1.8 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Reflection;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using NLog;
using NLog.Targets;
using Torch.Utils;
namespace Torch.Server
{
internal static class Program
{
/// <remarks>
/// This method must *NOT* load any types/assemblies from the vanilla game, otherwise automatic updates will fail.
/// </remarks>
[STAThread]
public static void Main(string[] args)
{
Target.Register<FlowDocumentTarget>("FlowDocument");
//Ensures that all the files are downloaded in the Torch directory.
var workingDir = new FileInfo(typeof(Program).Assembly.Location).Directory.ToString();
var binDir = Path.Combine(workingDir, "DedicatedServer64");
Directory.SetCurrentDirectory(workingDir);
//HACK for block skins update
var badDlls = new[]
{
"System.Security.Principal.Windows.dll"
};
foreach (var file in badDlls)
{
if (File.Exists(file))
File.Delete(file);
}
if (!TorchLauncher.IsTorchWrapped())
{
TorchLauncher.Launch(Assembly.GetEntryAssembly().FullName, args, binDir);
return;
}
if (!Environment.UserInteractive)
{
using (var service = new TorchService())
ServiceBase.Run(service);
return;
}
var initializer = new Initializer(workingDir);
if (!initializer.Initialize(args))
return;
initializer.Run();
}
}
}