private static void UpdateDalamud(DirectoryInfo gamePath, DalamudLoadingOverlay overlay) { DalamudUpdater.overlay = overlay; using var client = new WebClient(); var doDalamudTest = DalamudSettings.GetSettings().DoDalamudTest; // GitHub requires TLS 1.2, we need to hardcode this for Windows 7 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var versionInfoJson = client.DownloadString(DalamudLauncher.REMOTE_BASE + (doDalamudTest ? "stg/" : string.Empty) + "version"); var remoteVersionInfo = JsonConvert.DeserializeObject <DalamudVersionInfo>(versionInfoJson); var addonPath = new DirectoryInfo(Path.Combine(Paths.RoamingPath, "addon", "Hooks", remoteVersionInfo.AssemblyVersion)); AssetDirectory = new DirectoryInfo(Path.Combine(Util.GetRoaming(), "dalamudAssets")); try { if (Repository.Ffxiv.GetVer(gamePath) != remoteVersionInfo.SupportedGameVer) { State = DownloadState.Failed; return; } } catch (Exception ex) { Log.Error(ex, "[DUPDATE] Could not get game version"); State = DownloadState.Failed; } if (!addonPath.Exists) { Log.Information("[DUPDATE] Not found, redownloading"); overlay.Dispatcher.Invoke(() => overlay.SetProgress(DalamudLoadingOverlay.DalamudLoadingProgress.Dalamud)); Download(addonPath, doDalamudTest); Log.Information("[DUPDATE] Download OK!"); } try { overlay.Dispatcher.Invoke(() => overlay.SetProgress(DalamudLoadingOverlay.DalamudLoadingProgress.Assets)); if (!AssetManager.EnsureAssets(AssetDirectory)) { Log.Information("[DUPDATE] Assets not ensured, bailing out..."); State = DownloadState.Failed; return; } } catch (Exception ex) { Log.Error(ex, "[DUPDATE] Asset ensurement error, bailing out..."); State = DownloadState.Failed; return; } Log.Information("[DUPDATE] All set."); Runner = new FileInfo(Path.Combine(addonPath.FullName, "Dalamud.Injector.exe")); State = DownloadState.Done; }
public static void SetOverlayProgress(DalamudLoadingOverlay.DalamudLoadingProgress progress) { _overlay.Dispatcher.Invoke(() => _overlay.SetProgress(progress)); }