private void BWorker_tweakerWebBrowser_load_DoWork(object sender, DoWorkEventArgs e) { /*string linefiletoskip = Classes.AIDA.TweakerWebPanel.CutString; * linefiletoskip = WebClientPool.GetWebClient(DefaultValues.MyServer.GetWebLink).DownloadString(DefaultValues.MyServer.GetWebLink + DefaultValues.MyServer.Web.TweakerSidePanelLiner); * if (string.IsNullOrWhiteSpace(linefiletoskip)) * linefiletoskip = Classes.AIDA.TweakerWebPanel.CutString;*/ TweakerWebBrowser_IsLoading(true); if (!AIDA.IsPingedAIDA) { AIDA.GetIdeaServer(); } if (AIDA.IsPingedAIDA) { this.webBrowserTweaker.LockNavigate = false; string resultofgettinghtmlfile = WebClientPool.GetWebClient_AIDA().DownloadString(AIDA.TweakerWebPanel.InfoPageLink); if (string.IsNullOrEmpty(resultofgettinghtmlfile)) { this.webBrowserTweaker.NavigateAsync(AIDA.TweakerWebPanel.InfoPageLink); this.webBrowserTweaker.LockNavigate = true; } else { this.webBrowserTweaker.NavigateContentAsync(resultofgettinghtmlfile); this.webBrowserTweaker.LockNavigate = true; //this.tweakerWebBrowser.EnglishPatchStatus = result.EnglishPatch; //this.tweakerWebBrowser.ItemPatchStatus = result.ItemPatch; }//*/ } else { this.webBrowserTweaker.LockNavigate = false; this.webBrowserTweaker.NavigateContentAsync( @" <!DOCTYPE html> <html> <head> <meta charset=""utf-8"" /> <style> div{text-align:center;width:100%;font-weight:bold;font-family:""Times New Roman"",Times,serif;font-size:17px;} a:visited,a{color:red;} </style> </head> <body> <div> <span>Failed to connect to Arks-Layer's server.</span><br/> <a href=""leayal://retry"">Click me to retry</a> </div> </body> </html> "); this.webBrowserTweaker.LockNavigate = true; } }
private void myWebClient_ForAIDA_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { WorkerInfo state = null; WebClientInstallingMetaWrapper meta = null; if (e.UserState != null) { if (e.UserState is WorkerInfo) { state = e.UserState as WorkerInfo; } else if (e.UserState is WebClientInstallingMetaWrapper) { meta = e.UserState as WebClientInstallingMetaWrapper; } } if (e.Error != null) { if (state != null) { switch (state.Step) { case "UninstallPatchEx": this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnHandledException(new HandledExceptionEventArgs(e.Error)); break; default: this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnHandledException(new HandledExceptionEventArgs(e.Error)); break; } } } else if (e.Cancelled) { if (state != null) { switch (state.Step) { case "UninstallPatchEx": this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnPatchUninstalled(new PatchFinishedEventArgs(false, string.Empty)); break; default: this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnHandledException(new HandledExceptionEventArgs(new NotImplementedException())); break; } } } else { //this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); if (state != null) { switch (state.Step) { case "UninstallPatchEx": WorkerInfo wi = new WorkerInfo(string.Empty, e.Result, null, null, true); this.bWorker_uninstall.RunWorkerAsync(wi); break; default: this.OnHandledException(new HandledExceptionEventArgs(new NotImplementedException())); break; } } else if (meta != null) { if (meta.Step == 0) { if (!string.IsNullOrEmpty(e.Result)) { string hue = AIDA.FlatJsonFetch <string>(e.Result, Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.LargeFilesTransAmDate); //System.Windows.Forms.MessageBox.Show(hue, "awghalwihgaliwhglaihwg"); if (!string.IsNullOrWhiteSpace(hue)) { DateTime dt = AIDA.StringToDateTime(hue, "M/d/yyyy", '/'); if (dt != DateTime.MinValue) { InstallingMeta newMeta = new InstallingMeta(meta.Meta.Backup, meta.Meta.Force, dt); if (VersionString != newMeta.NewVersionString) { PatchNotificationEventArgs theevent = new PatchNotificationEventArgs(true, newMeta.NewVersionString, VersionString); this.OnPatchNotification(theevent); if (meta.Meta.Force || theevent.Continue) { //this.OnHandledException(new HandledExceptionEventArgs(new NotImplementedException("This function is not available yet."))); InstallPatchEx(theevent, dt); } } else { this.OnPatchInstalled(new PatchFinishedEventArgs(newMeta.NewVersionString)); } } else { this.OnHandledException(new HandledExceptionEventArgs(new System.Exception("Failed to check for patch.\r\n" + e.Result))); } } else { this.OnPatchInstalled(new PatchFinishedEventArgs(hue)); } } else { this.OnHandledException(new HandledExceptionEventArgs(new System.Exception("Failed to check for patch.\r\n" + e.Result))); } } } } }
protected void OnUninstalling(object sender, DoWorkEventArgs e) { WorkerInfo wi = e.Argument as WorkerInfo; this.OnCurrentStepChanged(new StepEventArgs(string.Format(LanguageManager.GetMessageText("Restoring0PatchFiles", "Restoring {0} files"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled))); string sourceTable = string.Empty; using (var theTextReader = new StringReader(wi.Params as string)) using (var jsonReader = new Newtonsoft.Json.JsonTextReader(theTextReader)) while (jsonReader.Read()) { if (jsonReader.TokenType == Newtonsoft.Json.JsonToken.PropertyName) { if (jsonReader.Value is string && (jsonReader.Value as string).ToLower() == "largefileslist") { sourceTable = jsonReader.ReadAsString(); } } } string[] tbl_files = AIDA.StringToTableString(sourceTable); string pso2datafolder = DefaultValues.Directory.PSO2Win32Data; string englishBackupFolder = Path.Combine(pso2datafolder, DefaultValues.Directory.PSO2Win32DataBackup, DefaultValues.Directory.Backup.LargeFiles); List <string> backup_files = new List <string>(); if (Directory.Exists(englishBackupFolder)) { foreach (string derp in Directory.GetFiles(englishBackupFolder, "*", SearchOption.TopDirectoryOnly)) { backup_files.Add(Path.GetFileName(derp).ToLower()); } } string backedup; string data; string currentStringIndex; this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.Percent)); if (backup_files.Count > 0) { if (tbl_files.Length > backup_files.Count) { int total = tbl_files.Length; this.OnCurrentTotalProgressChanged(new ProgressEventArgs(total)); int count = 0; List <string> nonExist = new List <string>(); for (int i = 0; i < tbl_files.Length; i++) { currentStringIndex = tbl_files[i].ToLower(); data = Path.Combine(pso2datafolder, currentStringIndex); backedup = Path.Combine(englishBackupFolder, currentStringIndex); if (File.Exists(backedup)) { backup_files.Remove(currentStringIndex); File.Delete(data); File.Move(backedup, data); count++; this.OnCurrentProgressChanged(new ProgressEventArgs(count + 1)); } else { nonExist.Add(currentStringIndex); } } if (backup_files.Count > 0) { for (int i = 0; i < backup_files.Count; i++) { currentStringIndex = backup_files[i]; data = Path.Combine(pso2datafolder, currentStringIndex); backedup = Path.Combine(englishBackupFolder, currentStringIndex); if (File.Exists(backedup)) { File.Delete(data); File.Move(backedup, data); count++; this.OnCurrentProgressChanged(new ProgressEventArgs(count + 1)); } } } Directory.Delete(englishBackupFolder, true); if (nonExist.Count > 0) { this.OnCurrentTotalProgressChanged(new ProgressEventArgs(nonExist.Count)); this.OnCurrentStepChanged(new StepEventArgs(LanguageManager.GetMessageText("RedownloadingMissingOriginalFiles", "Redownloading missing original files"))); using (CustomWebClient downloader = WebClientPool.GetWebClient_PSO2Download()) { Dictionary <string, string> downloadlist = new Dictionary <string, string>(); for (int i = 0; i < nonExist.Count; i++) { currentStringIndex = nonExist[i]; downloadlist.Add("data/win32/" + currentStringIndex + DefaultValues.Web.FakeFileExtension, Path.Combine(pso2datafolder, currentStringIndex)); } downloader.AutoUserAgent = true; PSO2UpdateManager.RedownloadFiles(downloader, downloadlist, Downloader_StepProgressChanged, Downloader_DownloadFileProgressChanged, this.Uninstall_RedownloadCallback); e.Result = false; } } else { e.Result = true; } } else { int total = backup_files.Count; this.OnCurrentTotalProgressChanged(new ProgressEventArgs(total)); for (int i = 0; i < backup_files.Count; i++) { currentStringIndex = backup_files[i]; data = Path.Combine(pso2datafolder, currentStringIndex); backedup = Path.Combine(englishBackupFolder, currentStringIndex); if (File.Exists(backedup)) { File.Delete(data); File.Move(backedup, data); this.OnCurrentProgressChanged(new ProgressEventArgs(i + 1)); } } Directory.Delete(englishBackupFolder, true); e.Result = true; } } else if (tbl_files.Length > 0) { if (!this.IsInstalled) { throw new KeyNotFoundException(string.Format(LanguageManager.GetMessageText("0PatchIsNotInstalled", "{0} is not installed."), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled)); } this.OnCurrentTotalProgressChanged(new ProgressEventArgs(tbl_files.Length)); this.OnCurrentStepChanged(new StepEventArgs(LanguageManager.GetMessageText("RedownloadingMissingOriginalFiles", "Redownloading missing original files"))); using (CustomWebClient downloader = WebClientPool.GetWebClient_PSO2Download()) { Dictionary <string, string> downloadlist = new Dictionary <string, string>(); for (int i = 0; i < tbl_files.Length; i++) { currentStringIndex = tbl_files[i]; downloadlist.Add("data/win32/" + currentStringIndex + DefaultValues.Web.FakeFileExtension, Path.Combine(pso2datafolder, currentStringIndex)); } downloader.AutoUserAgent = true; PSO2UpdateManager.RedownloadFiles(downloader, downloadlist, Downloader_StepProgressChanged, Downloader_DownloadFileProgressChanged, this.Uninstall_RedownloadCallback); e.Result = false; } } else { throw new Exception("Unknown Error"); //Failed } }
protected virtual void OnInstalling(object sender, DoWorkEventArgs e) { //return; TransarmWorkerInfo seed = e.Argument as TransarmWorkerInfo; PatchNotificationEventArgs seedEvent = seed.Params as PatchNotificationEventArgs; string pso2datadir = DefaultValues.Directory.PSO2Win32Data; string largefilesBackupFolder = Path.Combine(pso2datadir, DefaultValues.Directory.PSO2Win32DataBackup, DefaultValues.Directory.Backup.LargeFiles); this.OnCurrentStepChanged(new StepEventArgs(string.Format(LanguageManager.GetMessageText("Begin0PatchFiles", "Extracting {0} data"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled))); string myPatcher = Path.Combine(seed.Path, Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.TransAmEXE); string my7zDB = Path.Combine(seed.Path, Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.LargeFilesDB + "zip"); string myDB = string.Empty; bool isOkay = false; var result = AbstractExtractor.ExtractZip(my7zDB, seed.Path, null); isOkay = result.IsSuccess; myDB = result.SuccessItems[0].Key; File.Delete(my7zDB); if (isOkay) { if (false) { this.OnCurrentStepChanged(new StepEventArgs(string.Format(LanguageManager.GetMessageText("BeginRestoring0PatchFiles", "Getting {0} filelist"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled))); string rawtbl = this.myWebClient_ForAIDA.DownloadString(Classes.AIDA.WebPatches.PatchesFileListInfos); string sourceTable = string.Empty; using (var theTextReader = new StringReader(rawtbl)) using (var jsonReader = new Newtonsoft.Json.JsonTextReader(theTextReader)) while (jsonReader.Read()) { if (jsonReader.TokenType == Newtonsoft.Json.JsonToken.PropertyName) { if (jsonReader.Value is string && (jsonReader.Value as string).ToLower() == "largefileslist") { sourceTable = jsonReader.ReadAsString(); } } } string[] tbl_files = AIDA.StringToTableString(sourceTable); string originalFile, backupFile, currentIndexString; this.OnCurrentStepChanged(new StepEventArgs(string.Format(LanguageManager.GetMessageText("Creating0PatchBackup", "Creating backup for {0} files"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled))); int total = tbl_files.Length; this.OnCurrentTotalProgressChanged(new ProgressEventArgs(total)); Directory.CreateDirectory(largefilesBackupFolder); for (int i = 0; i < tbl_files.Length; i++) { currentIndexString = tbl_files[i]; originalFile = Path.Combine(pso2datadir, currentIndexString); backupFile = Path.Combine(largefilesBackupFolder, currentIndexString); File.Copy(originalFile, backupFile, true); this.OnCurrentProgressChanged(new ProgressEventArgs(i + 1)); } } this.OnCurrentStepChanged(new StepEventArgs(LanguageManager.GetMessageText("CallTransarmPatcherBackup", "Call patcher and wait for patcher finish the job"))); this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.Infinite)); patcherProcess = Infos.CommonMethods.MakeProcess(myPatcher); //-i "Backup/" -h largefiles-10-7-2016 lf.stripped.db "Out" string MyBaseDateString = "largefiles-" + seed.Date.Month.ToString() + "-" + seed.Date.Day.ToString() + "-" + seed.Date.Year.ToString(); //lf.stripped.db //Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.LargeFilesBackupFolder List <string> myParams = new List <string>(); myParams.Add(Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.paramNodeForBackupOutput); myParams.Add(Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.LargeFilesBackupFolder); myParams.Add(Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.paramNodeForOutput); myParams.Add(MyBaseDateString); myParams.Add(myDB); myParams.Add(Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.ValidPath(DefaultValues.Directory.PSO2Win32Data)); string pso2bin = DefaultValues.Directory.PSO2Dir; string veda = Path.Combine(pso2bin, Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.VEDA_Filename); string asdadasd = Leayal.ProcessHelper.TableStringToArgs(myParams); //Log.LogManager.GetLog("asdasd.txt", true).Print(asdadasd); patcherProcess.StartInfo.Arguments = asdadasd; patcherProcess.StartInfo.WorkingDirectory = seed.Path; patcherProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal; if (Leayal.OSVersionInfo.Name.ToLower() != "windows xp") { patcherProcess.StartInfo.Verb = "runas"; } Exception exVeda = AIDA.TransarmOrVedaOrWhatever.VEDA_Activate(pso2bin); if (exVeda == null) { patcherProcess.StartInfo.UseShellExecute = false; patcherProcess.Start(); patcherProcess.WaitForExit(); File.Delete(veda); this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); //Log.LogManager.GetLogDefaultPath("LargeFile.txt", true).Print("LargeFile Exit COde: " + patcher.ExitCode.ToString()); try { if ((patcherProcess != null) && (patcherProcess.ExitCode == 0)) { patcherProcess = null; e.Result = seed.Date.ToVersionString(); } else { patcherProcess = null; if (seed.Backup) { if (Directory.Exists(largefilesBackupFolder)) { this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.Percent)); this.OnCurrentStepChanged(new StepEventArgs(string.Format(LanguageManager.GetMessageText("Rollback0Patch", "Rolling back the {0} installation"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled))); string[] tbl_backup = Directory.GetFiles(largefilesBackupFolder, "*", SearchOption.TopDirectoryOnly); string originalFile, backupFile, currentIndexString; int total = tbl_backup.Length; this.OnCurrentTotalProgressChanged(new ProgressEventArgs(total)); for (int i = 0; i < tbl_backup.Length; i++) { currentIndexString = Path.GetFileName(tbl_backup[i]); originalFile = Path.Combine(pso2datadir, currentIndexString); backupFile = Path.Combine(largefilesBackupFolder, currentIndexString); File.Delete(originalFile); File.Move(backupFile, originalFile); this.OnCurrentProgressChanged(new ProgressEventArgs(i + 1)); } } } throw new Exception(LanguageManager.GetMessageText("CancelLargeFilesPatchFiles", "User cancelled or the patcher closed with Error(s).")); } File.Delete(Path.Combine(seed.Path, myDB)); File.Delete(myPatcher); } catch (System.Net.WebException) { } } else { throw exVeda; } } else { throw new Exception(LanguageManager.GetMessageText("BadArchiveOrUnknownError", "Bad archive file or unknown error happened while") + " " + string.Format(LanguageManager.GetMessageText("Begin0PatchFiles", "Extracting {0} data"), Infos.DefaultValues.AIDA.Strings.LargeFilesPatchCalled)); } try { Directory.Delete(seed.Path, true); } catch (IOException) { try { Leayal.IO.DirectoryHelper.EmptyFolder(seed.Path); Directory.Delete(seed.Path, true); } catch { } } e.Result = seedEvent.NewPatchVersion; }
private void MyWebClient_ForAIDA_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { WorkerInfo state = e.UserState as WorkerInfo; RaiserWebClientInstallingMetaWrapper meta = null; if (state == null) { meta = e.UserState as RaiserWebClientInstallingMetaWrapper; } if (e.Error != null) { if (state != null) { switch (state.Step) { default: this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnHandledException(new HandledExceptionEventArgs(e.Error)); break; } } } else if (e.Cancelled) { if (state != null) { switch (state.Step) { default: this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); this.OnHandledException(new HandledExceptionEventArgs(new NotImplementedException())); break; } } } else { if (state != null) { switch (state.Step) { default: this.OnHandledException(new HandledExceptionEventArgs(new NotImplementedException())); break; } } else if (meta != null) { switch (meta.Step) { case 0: if (!string.IsNullOrEmpty(e.Result)) { try { string raiserURL = AIDA.FlatJsonFetch <string>(e.Result, Infos.DefaultValues.AIDA.Tweaker.TransArmThingiesOrWatever.RaiserURL); if (!string.IsNullOrWhiteSpace(raiserURL)) { this.myWebClient_ForAIDA.DownloadStringAsync(new System.Uri(raiserURL), new RaiserWebClientInstallingMetaWrapper(1, meta.Meta, meta.LanguageName)); } else { this.OnPatchInstalled(new PatchFinishedEventArgs(VersionString)); } } catch (UriFormatException uriEx) { this.OnHandledException(new HandledExceptionEventArgs(uriEx)); } } else { this.OnHandledException(new HandledExceptionEventArgs(new Exception("Failed to check for patch.\r\n"))); } break; case 1: this.OnProgressBarStateChanged(new ProgressBarStateChangedEventArgs(Forms.MyMainMenu.ProgressBarVisibleState.None)); if (!string.IsNullOrEmpty(e.Result)) { try { var langcode = GetLangCode(meta.LanguageName); var obj = GetValueFromJson(e.Result, langcode.ToString()); string newverurl = obj.URL, newvermd5 = obj.MD5; if (!string.IsNullOrWhiteSpace(newverurl)) { System.Uri url = new System.Uri(newverurl); InstallingMeta asd = new InstallingMeta(meta.Meta.Backup, meta.Meta.Force, newvermd5); if (this.VersionString != newvermd5 || !this.IsInstalled) { RaiserPatchNotificationEventArgs theevent = new RaiserPatchNotificationEventArgs(true, newvermd5, VersionString, meta.LanguageName); this.OnPatchNotification(theevent); if (meta.Meta.Force || theevent.Continue) { InstallPatchEx(theevent, url); } } else { this.OnPatchInstalled(new PatchFinishedEventArgs(VersionString)); } } else { this.OnPatchInstalled(new PatchFinishedEventArgs(VersionString)); } } catch (UriFormatException uriEx) { this.OnHandledException(new HandledExceptionEventArgs(uriEx)); } } else { this.OnHandledException(new HandledExceptionEventArgs(new Exception("Failed to check for patch.\r\n"))); } break; } } } }