using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace MediaBrowser.Uninstaller
{
    class Program
    {
        static void Main(string[] args)
        {
            var product = args.Length > 1 ? args[1] : "server";
            //copy the real program to a temp location so we can delete everything here (including us)
            var tempExe = Path.Combine(Path.GetTempPath(), "MediaBrowser.Uninstaller.Execute.exe");
            var tempConfig = Path.Combine(Path.GetTempPath(), "MediaBrowser.Uninstaller.Execute.exe.config");
            //using (var file = File.Create(tempExe, 4096, FileOptions.DeleteOnClose))
            {
                //copy the real uninstaller to temp location
                var sourceDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "";
                File.WriteAllBytes(tempExe, File.ReadAllBytes(Path.Combine(sourceDir, "MediaBrowser.Uninstaller.Execute.exe")));
                File.Copy(Path.Combine(sourceDir, "MediaBrowser.Uninstaller.Execute.exe.config"), tempConfig, true);

                //get our pid to pass to the uninstaller so it can wait for us to exit
                var pid = Process.GetCurrentProcess().Id;
                //kick off the copy
                Process.Start(tempExe, product + " " + pid);
                //and shut down
            }
        }
    }
}