Example #1
0
        static void Main(string[] args)
        {
            var excludeFiles = new HashSet <string>()
            {
                new FileInfo("Updater").FullName,
                new FileInfo("Updater.exe").FullName,
                new FileInfo("Updater.dll").FullName,
                new FileInfo("Updater.pdb").FullName,
                new FileInfo("update.zip").FullName,
            };
            var executable = FindExecutable();

            if (executable == null)
            {
                return;
            }

            var updateFile = new FileInfo("update.zip");

            if (!updateFile.Exists)
            {
                LaunchWowDatabaseEditor(executable);
                return;
            }

            if (!WaitUntilCantWriteExecutable(executable))
            {
                LaunchWowDatabaseEditor(executable);
                Console.WriteLine("Cannot overwrite executable. Canceling update");
                return;
            }

            var temporaryFolder = new DirectoryInfo(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()));

            temporaryFolder.Create();

            var dir = new DirectoryInfo(".");

            ZipFile.ExtractToDirectory(updateFile.FullName, temporaryFolder.FullName, true);

            var diff = new DirectoryDiffer().GenerateDiff(dir, temporaryFolder).Where(f => !excludeFiles.Contains(f.FullName)).ToList();

            foreach (var fileDir in diff)
            {
                if (fileDir is DirectoryInfo directory)
                {
                    directory.Delete(true);
                }
                else
                {
                    fileDir.Delete();
                }
            }

            temporaryFolder.Delete(true);

            ZipFile.ExtractToDirectory(updateFile.FullName, dir.FullName, true);
            File.Delete("update.zip");

            LaunchWowDatabaseEditor(executable);
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine();
            Console.WriteLine(" --- WoW Database Editor Updater ---");
            Console.WriteLine("    (sorry it is that ugly)");
            Console.WriteLine();
            var excludeFiles = new HashSet <string>()
            {
                new FileInfo("Updater").FullName,
                new FileInfo("Updater.exe").FullName,
                new FileInfo("Updater.dll").FullName,
                new FileInfo("Updater.pdb").FullName,
                new FileInfo("update.zip").FullName,
            };
            var executable = FindExecutable();

            if (executable == null)
            {
                return;
            }

            var updateFile = new FileInfo("update.zip");

            if (!updateFile.Exists)
            {
                LaunchWowDatabaseEditor(executable);
                return;
            }

            if (!WaitUntilCantWriteExecutable(executable))
            {
                LaunchWowDatabaseEditor(executable);
                Console.WriteLine("Cannot overwrite executable. Canceling update");
                return;
            }

            var temporaryFolder = new DirectoryInfo(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()));

            temporaryFolder.Create();

            var dir = new DirectoryInfo(".");

            try
            {
                ZipFile.ExtractToDirectory(updateFile.FullName, temporaryFolder.FullName, true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine("@@@@@@@@@@@@@@@@@");
                Console.WriteLine("@");
                Console.WriteLine("@");
                Console.WriteLine("@    ERROR WHILE INSTALLING THE WoW Database Editor UPDATE");
                Console.WriteLine("@");
                Console.WriteLine("@         will rollback to the previous version, please try to download the update again");
                Console.WriteLine("@");
                Console.WriteLine("@@@@@@@@@@@@@@@@@");
                Thread.Sleep(4000);
                File.Delete("update.zip");
                return;
            }

            var diff = new DirectoryDiffer().GenerateDiff(dir, temporaryFolder).Where(f => !excludeFiles.Contains(f.FullName)).ToList();

            foreach (var fileDir in diff)
            {
                if (fileDir is DirectoryInfo directory)
                {
                    directory.Delete(true);
                }
                else
                {
                    fileDir.Delete();
                }
            }

            temporaryFolder.Delete(true);

            ZipFile.ExtractToDirectory(updateFile.FullName, dir.FullName, true);
            File.Delete("update.zip");

            LaunchWowDatabaseEditor(executable);
        }