/// <summary> /// Compresses old loader log files into a zip archive. /// </summary> private static void HandleLogsAndCrashdumps() { var loaderConfig = IoC.Get <LoaderConfig>(); // Logs (delete & compress) using var logCompressor = new LogFileCompressor(Paths.ArchivedLogPath); logCompressor.AddFiles(Paths.LogPath, TimeSpan.FromHours(loaderConfig.LogFileCompressTimeHours)); logCompressor.DeleteOldFiles(TimeSpan.FromHours(loaderConfig.LogFileDeleteHours)); // Crashdumps (delete) var dumpFolders = Directory.GetDirectories(Paths.CrashDumpPath); var now = DateTime.UtcNow; foreach (var folder in dumpFolders) { var timeElapsed = now - Directory.GetLastWriteTimeUtc(folder); if (timeElapsed.TotalHours > loaderConfig.CrashDumpDeleteHours) { IOEx.TryDeleteDirectory(folder); } } }
public async Task InstallReloadedAsync(string?installFolder = null, bool createShortcut = true, bool startReloaded = true) { // Step installFolder ??= Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Reloaded-II"); Directory.CreateDirectory(installFolder); using var tempDownloadDir = new TemporaryFolderAllocation(); var progressSlicer = new ProgressSlicer(new Progress <double>(d => { Progress = d * 100.0; })); try { var downloadLocation = Path.Combine(tempDownloadDir.FolderPath, $"Reloaded-II.zip"); // 0.15 CurrentStepNo = 0; await DownloadReloadedAsync(downloadLocation, progressSlicer.Slice(0.15)); if (CancellationToken.IsCancellationRequested) { throw new TaskCanceledException(); } // 0.20 CurrentStepNo = 1; await ExtractReloadedAsync(installFolder, downloadLocation, progressSlicer.Slice(0.05)); if (CancellationToken.IsCancellationRequested) { throw new TaskCanceledException(); } // 1.00 CurrentStepNo = 2; await CheckAndInstallMissingRuntimesAsync(installFolder, tempDownloadDir.FolderPath, progressSlicer.Slice(0.8), s => { CurrentStepDescription = s; }, CancellationToken.Token); var executableName = IntPtr.Size == 8 ? "Reloaded-II.exe" : "Reloaded-II32.exe"; var executablePath = Path.Combine(installFolder, executableName); var shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Reloaded-II.lnk"); if (createShortcut) { CurrentStepDescription = "Creating Shortcut"; MakeShortcut(shortcutPath, executablePath); } CurrentStepDescription = "All Set"; if (startReloaded) { Process.Start(executablePath); } } catch (TaskCanceledException) { IOEx.TryDeleteDirectory(installFolder); } catch (Exception e) { IOEx.TryDeleteDirectory(installFolder); MessageBox.Show("There was an error in installing Reloaded.\n" + $"Feel free to open an issue on github.com/Reloaded-Project/Reloaded-II if you require support.\n" + $"Message: {e.Message}\n" + $"Stack Trace: {e.StackTrace}", "Error in Installing Reloaded"); } }