Ejemplo n.º 1
0
        private void _updateObsoleteFiles()
        {
            HTTPDownloader   downloader = new HTTPDownloader(ObsoleteFiles, Client, "source/");
            DownloadListener listener   = new DownloadListener(this, downloader);
            BackgroundWorker bw         = new BackgroundWorker();

            bw.DoWork += (object s, DoWorkEventArgs e) =>
            {
                downloader.startDownload();
            };
            bw.RunWorkerAsync();
        }
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            m = new Mutex(false, "rom2updater");
            if (!m.WaitOne(0, false))
            {
                Application.Current.Shutdown();
            }
            if (IsProcessOpen("warlords.patcher.exe"))
            {
                Application.Current.Shutdown();
            }

            //Da fare gestione config
            string updateIndexFileName = "metaFiles/UpdaterIndex";
            string cleanerFileName     = "metaFiles/UpdateCleaner";
            string baseAddress         = "http://patcher.metin2warlords.net/";
            string argument            = "nonhofantasia";

            UpdateWindow window = new UpdateWindow();

            window.Show();
            WebClient client = new WebClient();

            client.BaseAddress = baseAddress;

            string s = client.DownloadString(updateIndexFileName);
            string c = client.DownloadString(cleanerFileName);


            CleanerExtractor ce          = new CleanerExtractor(c);
            List <PatchFile> toCleanFile = ce.extract();

            foreach (PatchFile f in toCleanFile)
            {
                string path = Path.Combine(f.BasePath, f.Name);
                if (File.Exists(path))
                {
                    File.SetAttributes(path, FileAttributes.Normal);
                    File.Delete(path);
                }
            }
            PipeDelimitedFileManifestParser p = new PipeDelimitedFileManifestParser(s);
            ObsoleteFileFinder scanner        = new ObsoleteFileFinder(p);

            scanner.Search();
            List <PatchFile> toUpdateFiles = scanner.getToUpdateFiles();
            List <PatchFile> sourceFiles   = scanner.getSourceFiles();
            string           exeName       = sourceFiles[0].Name;
            BackgroundWorker bw            = new BackgroundWorker();

            if (toUpdateFiles.Count > 0)
            {
                HTTPDownloader          downloader = new HTTPDownloader(toUpdateFiles, client, "sourceUpdater/");
                UpdaterDownloadListener listener   = new UpdaterDownloadListener(window, downloader);
                downloader.allFileDownloaded += (object ss) =>
                {
                    System.Diagnostics.Process.Start(exeName, argument);
                    Application.Current.Dispatcher.Invoke((Action)(() =>
                    {
                        window.Close();
                    }
                                                                   ));
                };

                bw.DoWork += (object se, DoWorkEventArgs es) =>
                {
                    downloader.startDownload();
                };
                bw.RunWorkerAsync();
            }


            if (bw.IsBusy == false)
            {
                System.Diagnostics.Process.Start(exeName, argument);
                window.Close();
            }
        }