private async void Wind_Loaded(object sender, RoutedEventArgs e) { try { if (Settings.ExperimentalFunctions == null) { MessageBoxResult result = MessageBox.Show(Res.ExperimentalFeaturesText.Replace(@"\n", "\n"), Res.ExperimentalFeatures, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); if (result == MessageBoxResult.Yes) { Settings.ExperimentalFunctions = true; } else { Settings.ExperimentalFunctions = false; } Settings.Save(); } } catch (Exception er) { Logger.Error("ExpFunc", er); } Mods.Init(); if (ExperimentalFunctions.HasExperimentalFunctions()) { if (!Mods.ExistMod("SkyMPCore")) { MessageBox.Show("All files will be reinstalled", "Attention", MessageBoxButton.OK, MessageBoxImage.Exclamation, MessageBoxResult.OK); GameCleaner.Clear(); } await CheckGameNew(); } else { await CheckGameOld(); } SetBackgroundServerList(); FillServerList(); Authorization_SignIn(); }
//TODO: Переработать private bool HandleCmdArgs() { string[] args = Environment.GetCommandLineArgs(); if (args.Length > 1) { bool eUpdate = false; int trying = 0; try { switch (args[1]) { case EndUpdate: eUpdate = true; Thread.Sleep(500); try { if (File.Exists($"{args[2]}.update.exe")) { File.SetAttributes($"{args[2]}.update.exe", FileAttributes.Normal); File.Delete($"{args[2]}.update.exe"); } } catch (IOException io) //фикс ошибки занятого файла, он должен освободится через какое то время { trying++; if (trying < 5) { goto case EndUpdate; } else { throw new TimeoutException("Timeout \"EndUpdate\"", io); } } break; case BeginUpdate: Thread.Sleep(500); try { File.Copy(EnvParams.PathToFile, $"{args[2]}.exe", true); File.SetAttributes($"{args[2]}.exe", FileAttributes.Normal); } catch (IOException io) //фикс ошибки занятого файла, он должен освободится через какое то время { trying++; if (trying < 5) { goto case BeginUpdate; } else { throw new TimeoutException("Timeout \"BeginUpdate\"", io); } } Process.Start($"{args[2]}.exe", $"{EndUpdate} {args[2]}"); goto default; case "recovery": RecoveryWindow rw = new RecoveryWindow(); rw.ShowDialog(); break; case "repair": Settings.Reset(); break; case "repair-client": try { ModVersion.Reset(); } catch (Exception e) { MessageBox.Show($"{e.Message}", $"{Res.Error}"); } goto default; case "clear-client": try { Mods.Init(); Mods.DisableAll(true).Wait(); GameCleaner.Clear(); } catch (Exception e) { MessageBox.Show($"{e.Message}", $"{Res.Error}"); } goto default; case "clear-full-client": try { Mods.Init(); Mods.DisableAll(true).Wait(); GameCleaner.Clear(true); } catch (Exception e) { MessageBox.Show($"{e.Message}", $"{Res.Error}"); } goto default; default: ExitApp(); return(false); } } catch (UnauthorizedAccessException e) { if (!eUpdate) { MessageBox.Show($"{Res.ErrorEndSelfUpdate}\n{e.Message}", $"{Res.Error}"); return(false); } } catch (Exception e) { Logger.Error("HandleCmdArgs", e); return(false); } } return(true); }