diff --git a/SPTInstaller/Helpers/DownloadCacheHelper.cs b/SPTInstaller/Helpers/DownloadCacheHelper.cs index 59e0ae7..4831e98 100644 --- a/SPTInstaller/Helpers/DownloadCacheHelper.cs +++ b/SPTInstaller/Helpers/DownloadCacheHelper.cs @@ -25,7 +25,7 @@ namespace SPTInstaller.Aki.Helper { if (expectedHash != null && FileHashHelper.CheckHash(cacheFile, expectedHash)) { - Log.Information($"Using cached file: {cacheFile.Name}"); + Log.Information($"Using cached file: {cacheFile.Name} - Hash: {expectedHash}"); return true; } @@ -119,8 +119,9 @@ namespace SPTInstaller.Aki.Helper return result.Succeeded ? cacheFile : null; } - catch + catch(Exception ex) { + Log.Error(ex, $"Error while getting file: {fileName}"); return null; } } @@ -135,8 +136,9 @@ namespace SPTInstaller.Aki.Helper return result.Succeeded ? cacheFile : null; } - catch + catch(Exception ex) { + Log.Error(ex, $"Error while getting file: {fileName}"); return null; } } diff --git a/SPTInstaller/Helpers/FileHelper.cs b/SPTInstaller/Helpers/FileHelper.cs index 954332e..d624668 100644 --- a/SPTInstaller/Helpers/FileHelper.cs +++ b/SPTInstaller/Helpers/FileHelper.cs @@ -3,6 +3,7 @@ using Serilog; using SPTInstaller.Models; using System; using System.IO; +using System.Text.RegularExpressions; namespace SPTInstaller.Aki.Helper { @@ -49,6 +50,19 @@ namespace SPTInstaller.Aki.Helper } } + public static string GetRedactedPath(string path) + { + var nameMatched = Regex.Match(path, @".:\\[uU]sers\\(?[^\\]+)"); + + if (nameMatched.Success) + { + var name = nameMatched.Groups["NAME"].Value; + return path.Replace(name, "-REDACTED-"); + } + + return path; + } + public static Result CopyDirectoryWithProgress(DirectoryInfo sourceDir, DirectoryInfo targetDir, IProgress progress = null) => CopyDirectoryWithProgress(sourceDir, targetDir, (msg, prog) => progress?.Report(prog)); diff --git a/SPTInstaller/Helpers/ServiceHelper.cs b/SPTInstaller/Helpers/ServiceHelper.cs index 7a3833f..e17b8ed 100644 --- a/SPTInstaller/Helpers/ServiceHelper.cs +++ b/SPTInstaller/Helpers/ServiceHelper.cs @@ -1,4 +1,5 @@ -using Splat; +using Serilog; +using Splat; using System; using System.Collections.Generic; using System.Linq; @@ -76,7 +77,11 @@ namespace SPTInstaller.Helpers var service = Locator.Current.GetService(type); if (service == null) - throw new InvalidOperationException($"Could not locate service of type '{type.Name}'"); + { + var message = $"Could not locate service of type '{type.Name}'"; + Log.Error(message); + throw new InvalidOperationException(message); + } return service; } @@ -92,7 +97,11 @@ namespace SPTInstaller.Helpers var service = Locator.Current.GetService(); if (service == null) - throw new InvalidOperationException($"Could not locate service of type '{nameof(T)}'"); + { + var message = $"Could not locate service of type '{nameof(T)}'"; + Log.Error(message); + throw new InvalidOperationException(message); + } return service; } @@ -108,7 +117,11 @@ namespace SPTInstaller.Helpers var services = Locator.Current.GetServices().ToArray(); if (services == null || services.Count() == 0) - throw new InvalidOperationException($"Could not locate service of type '{nameof(T)}'"); + { + var message = $"Could not locate service of type '{nameof(T)}'"; + Log.Error(message); + throw new InvalidOperationException(message); + } return services; } diff --git a/SPTInstaller/Installer Tasks/IntializationTask.cs b/SPTInstaller/Installer Tasks/IntializationTask.cs index ed1635f..6fdafc8 100644 --- a/SPTInstaller/Installer Tasks/IntializationTask.cs +++ b/SPTInstaller/Installer Tasks/IntializationTask.cs @@ -17,7 +17,7 @@ namespace SPTInstaller.Installer_Tasks public override async Task TaskOperation() { - SetStatus("Initializing", ""); + SetStatus("Initializing", $"Target Install Path: {FileHelper.GetRedactedPath(_data.TargetInstallPath)}"); _data.OriginalGamePath = PreCheckHelper.DetectOriginalGamePath(); @@ -26,6 +26,8 @@ namespace SPTInstaller.Installer_Tasks return Result.FromError("EFT IS NOT INSTALLED!"); } + SetStatus(null, $"Installed EFT Game Path: {FileHelper.GetRedactedPath(_data.OriginalGamePath)}"); + var result = PreCheckHelper.DetectOriginalGameVersion(_data.OriginalGamePath); if (!result.Succeeded) @@ -35,6 +37,8 @@ namespace SPTInstaller.Installer_Tasks _data.OriginalGameVersion = result.Message; + SetStatus(null, $"Installed EFT Game Version: {_data.OriginalGameVersion}"); + if (_data.OriginalGamePath == null) { return Result.FromError("Unable to find original EFT directory, please make sure EFT is installed. Please also run EFT once"); diff --git a/SPTInstaller/SPTInstaller.csproj b/SPTInstaller/SPTInstaller.csproj index 84e7f8c..d6d32c4 100644 --- a/SPTInstaller/SPTInstaller.csproj +++ b/SPTInstaller/SPTInstaller.csproj @@ -9,6 +9,8 @@ icon.ico Assets\icon.ico Debug;Release;TEST + 2.2 + 2.2 diff --git a/SPTInstaller/ViewModels/MainWindowViewModel.cs b/SPTInstaller/ViewModels/MainWindowViewModel.cs index eff42ec..793a76c 100644 --- a/SPTInstaller/ViewModels/MainWindowViewModel.cs +++ b/SPTInstaller/ViewModels/MainWindowViewModel.cs @@ -2,6 +2,7 @@ using ReactiveUI; using Serilog; using System; +using System.Reflection; namespace SPTInstaller.ViewModels { @@ -10,9 +11,20 @@ namespace SPTInstaller.ViewModels public RoutingState Router { get; } = new RoutingState(); public ViewModelActivator Activator { get; } = new ViewModelActivator(); + private string _title; + public string Title + { + get => _title; + set => this.RaiseAndSetIfChanged(ref _title, value); + } + public MainWindowViewModel() { - Log.Information("========= LAUNCHER STARTED ========="); + string? version = Assembly.GetExecutingAssembly().GetName()?.Version?.ToString(); + + Title = $"SPT Installer {"v" + version ?? "--unknown version--"}"; + + Log.Information($"========= {Title} Started ========="); Log.Information(Environment.OSVersion.VersionString); Router.Navigate.Execute(new PreChecksViewModel(this)); diff --git a/SPTInstaller/Views/MainWindow.axaml b/SPTInstaller/Views/MainWindow.axaml index 7534f05..659652b 100644 --- a/SPTInstaller/Views/MainWindow.axaml +++ b/SPTInstaller/Views/MainWindow.axaml @@ -27,7 +27,7 @@ -