From bbe75e506126c5e8c6153491f7538d02cae3b94e Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Thu, 23 Jun 2022 17:28:57 -0600 Subject: [PATCH 1/2] Fix launcher failures --- .../Wabbajack.App.Blazor.csproj | 18 +++++++++--------- Wabbajack.App.Wpf/Wabbajack.App.Wpf.csproj | 12 ++++++------ Wabbajack.CLI/Wabbajack.CLI.csproj | 6 +++--- .../Wabbajack.Downloaders.Bethesda.csproj | 2 +- .../Wabbajack.Downloaders.GoogleDrive.csproj | 2 +- .../Wabbajack.Downloaders.MediaFire.csproj | 2 +- .../Wabbajack.Downloaders.ModDB.csproj | 2 +- .../Wabbajack.Hashing.PHash.Test.csproj | 2 +- .../ViewModels/MainWindowViewModel.cs | 17 +++++++++++++++++ Wabbajack.Launcher/Wabbajack.Launcher.csproj | 11 ++++++----- .../Wabbajack.Server.Lib.csproj | 2 +- Wabbajack.Server/Wabbajack.Server.csproj | 6 +++--- Wabbajack.VFS.Test/Wabbajack.VFS.Test.csproj | 2 +- Wabbajack.VFS/Wabbajack.VFS.csproj | 2 +- 14 files changed, 52 insertions(+), 34 deletions(-) diff --git a/Wabbajack.App.Blazor/Wabbajack.App.Blazor.csproj b/Wabbajack.App.Blazor/Wabbajack.App.Blazor.csproj index 9e7cb294..a43206c7 100644 --- a/Wabbajack.App.Blazor/Wabbajack.App.Blazor.csproj +++ b/Wabbajack.App.Blazor/Wabbajack.App.Blazor.csproj @@ -16,21 +16,21 @@ - + - - - - - + + + + + - - - + + + diff --git a/Wabbajack.App.Wpf/Wabbajack.App.Wpf.csproj b/Wabbajack.App.Wpf/Wabbajack.App.Wpf.csproj index 004ea6af..9756c01d 100644 --- a/Wabbajack.App.Wpf/Wabbajack.App.Wpf.csproj +++ b/Wabbajack.App.Wpf/Wabbajack.App.Wpf.csproj @@ -60,12 +60,12 @@ - + NU1701 - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -79,11 +79,11 @@ - + - - - + + + diff --git a/Wabbajack.CLI/Wabbajack.CLI.csproj b/Wabbajack.CLI/Wabbajack.CLI.csproj index 5b22d99e..791f8933 100644 --- a/Wabbajack.CLI/Wabbajack.CLI.csproj +++ b/Wabbajack.CLI/Wabbajack.CLI.csproj @@ -18,9 +18,9 @@ - - - + + + diff --git a/Wabbajack.Downloaders.Bethesda/Wabbajack.Downloaders.Bethesda.csproj b/Wabbajack.Downloaders.Bethesda/Wabbajack.Downloaders.Bethesda.csproj index 8126cfb1..9eb3b4a9 100644 --- a/Wabbajack.Downloaders.Bethesda/Wabbajack.Downloaders.Bethesda.csproj +++ b/Wabbajack.Downloaders.Bethesda/Wabbajack.Downloaders.Bethesda.csproj @@ -13,7 +13,7 @@ - + diff --git a/Wabbajack.Downloaders.GoogleDrive/Wabbajack.Downloaders.GoogleDrive.csproj b/Wabbajack.Downloaders.GoogleDrive/Wabbajack.Downloaders.GoogleDrive.csproj index 824784e5..9b0f1109 100644 --- a/Wabbajack.Downloaders.GoogleDrive/Wabbajack.Downloaders.GoogleDrive.csproj +++ b/Wabbajack.Downloaders.GoogleDrive/Wabbajack.Downloaders.GoogleDrive.csproj @@ -8,7 +8,7 @@ - + diff --git a/Wabbajack.Downloaders.MediaFire/Wabbajack.Downloaders.MediaFire.csproj b/Wabbajack.Downloaders.MediaFire/Wabbajack.Downloaders.MediaFire.csproj index 722c0ecd..99c2e5f8 100644 --- a/Wabbajack.Downloaders.MediaFire/Wabbajack.Downloaders.MediaFire.csproj +++ b/Wabbajack.Downloaders.MediaFire/Wabbajack.Downloaders.MediaFire.csproj @@ -6,7 +6,7 @@ - + diff --git a/Wabbajack.Downloaders.ModDB/Wabbajack.Downloaders.ModDB.csproj b/Wabbajack.Downloaders.ModDB/Wabbajack.Downloaders.ModDB.csproj index 8faa9448..f2edf311 100644 --- a/Wabbajack.Downloaders.ModDB/Wabbajack.Downloaders.ModDB.csproj +++ b/Wabbajack.Downloaders.ModDB/Wabbajack.Downloaders.ModDB.csproj @@ -12,7 +12,7 @@ - + diff --git a/Wabbajack.Hashing.PHash.Test/Wabbajack.Hashing.PHash.Test.csproj b/Wabbajack.Hashing.PHash.Test/Wabbajack.Hashing.PHash.Test.csproj index 8d7b5215..e498454f 100644 --- a/Wabbajack.Hashing.PHash.Test/Wabbajack.Hashing.PHash.Test.csproj +++ b/Wabbajack.Hashing.PHash.Test/Wabbajack.Hashing.PHash.Test.csproj @@ -9,7 +9,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs b/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs index f394629c..c57c81e6 100644 --- a/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs +++ b/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs @@ -46,6 +46,8 @@ public class MainWindowViewModel : ViewModelBase private async Task CheckForUpdates() { + await VerifyCurrentLocation(); + _client.Headers.Add("user-agent", "Wabbajack Launcher"); Status = "Selecting Release"; @@ -168,6 +170,21 @@ public class MainWindowViewModel : ViewModelBase } } + private async Task VerifyCurrentLocation() + { + var entryPoint = KnownFolders.EntryPoint; + if (entryPoint.FileName == "Desktop".ToRelativePath() + || entryPoint.Depth <= 1 + || entryPoint.FileName == "Downloads".ToRelativePath()) + { + var msg = MessageBox.Avalonia.MessageBoxManager + .GetMessageBoxStandardWindow("Bad Download Path", + "Cannot start in the root, Downloads or Desktop folders."); + var result = await msg.Show(); + Environment.Exit(1); + } + } + private async Task FinishAndExit() { try diff --git a/Wabbajack.Launcher/Wabbajack.Launcher.csproj b/Wabbajack.Launcher/Wabbajack.Launcher.csproj index d8c24a91..cb21e946 100644 --- a/Wabbajack.Launcher/Wabbajack.Launcher.csproj +++ b/Wabbajack.Launcher/Wabbajack.Launcher.csproj @@ -17,12 +17,13 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + + - + diff --git a/Wabbajack.Server.Lib/Wabbajack.Server.Lib.csproj b/Wabbajack.Server.Lib/Wabbajack.Server.Lib.csproj index c1382405..f4669306 100644 --- a/Wabbajack.Server.Lib/Wabbajack.Server.Lib.csproj +++ b/Wabbajack.Server.Lib/Wabbajack.Server.Lib.csproj @@ -12,7 +12,7 @@ - + diff --git a/Wabbajack.Server/Wabbajack.Server.csproj b/Wabbajack.Server/Wabbajack.Server.csproj index 4e49dd26..26944fbc 100644 --- a/Wabbajack.Server/Wabbajack.Server.csproj +++ b/Wabbajack.Server/Wabbajack.Server.csproj @@ -11,11 +11,11 @@ - - + + - + diff --git a/Wabbajack.VFS.Test/Wabbajack.VFS.Test.csproj b/Wabbajack.VFS.Test/Wabbajack.VFS.Test.csproj index e35ad2c0..49141666 100644 --- a/Wabbajack.VFS.Test/Wabbajack.VFS.Test.csproj +++ b/Wabbajack.VFS.Test/Wabbajack.VFS.Test.csproj @@ -9,7 +9,7 @@ - + diff --git a/Wabbajack.VFS/Wabbajack.VFS.csproj b/Wabbajack.VFS/Wabbajack.VFS.csproj index 31348691..0c506591 100644 --- a/Wabbajack.VFS/Wabbajack.VFS.csproj +++ b/Wabbajack.VFS/Wabbajack.VFS.csproj @@ -9,7 +9,7 @@ - + From 1408926de9b781d685e41fe0c21c91282fb2213f Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Fri, 24 Jun 2022 16:16:40 -0600 Subject: [PATCH 2/2] Fix the launcher so it no longer dies when run from strange folders --- .../Wabbajack.Downloaders.Nexus.csproj | 5 --- .../ViewModels/MainWindowViewModel.cs | 37 ++++++++++++++++--- .../Wabbajack.Networking.Steam.Test.csproj | 2 + Wabbajack.Paths.IO/KnownFolders.cs | 10 +++-- Wabbajack.Paths/AbsolutePath.cs | 2 +- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/Wabbajack.Downloaders.Nexus/Wabbajack.Downloaders.Nexus.csproj b/Wabbajack.Downloaders.Nexus/Wabbajack.Downloaders.Nexus.csproj index 2ead5edb..96c12049 100644 --- a/Wabbajack.Downloaders.Nexus/Wabbajack.Downloaders.Nexus.csproj +++ b/Wabbajack.Downloaders.Nexus/Wabbajack.Downloaders.Nexus.csproj @@ -17,9 +17,4 @@ - - - - - diff --git a/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs b/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs index c57c81e6..a1311a6c 100644 --- a/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs +++ b/Wabbajack.Launcher/ViewModels/MainWindowViewModel.cs @@ -9,6 +9,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; +using MessageBox.Avalonia.DTO; using ReactiveUI.Fody.Helpers; using Wabbajack.Compression.Zip; using Wabbajack.Downloaders.Http; @@ -172,14 +173,38 @@ public class MainWindowViewModel : ViewModelBase private async Task VerifyCurrentLocation() { - var entryPoint = KnownFolders.EntryPoint; - if (entryPoint.FileName == "Desktop".ToRelativePath() - || entryPoint.Depth <= 1 - || entryPoint.FileName == "Downloads".ToRelativePath()) + try { + var entryPoint = KnownFolders.EntryPoint; + if (entryPoint.FileName == "Desktop".ToRelativePath() + || entryPoint.Depth <= 1 + || entryPoint.FileName == "Downloads".ToRelativePath()) + { + + var msg = MessageBox.Avalonia.MessageBoxManager + .GetMessageBoxStandardWindow(new MessageBoxStandardParams() + { + Topmost = true, + ShowInCenter = true, + ContentTitle = "Wabbajack Launcher: Bad startup path", + ContentMessage = + "Cannot start in the root, Downloads or Desktop folders.\nPlease move Wabbajack to another folder." + }); + var result = await msg.Show(); + Environment.Exit(1); + } + } + catch (Exception ex) + { + Status = ex.Message; var msg = MessageBox.Avalonia.MessageBoxManager - .GetMessageBoxStandardWindow("Bad Download Path", - "Cannot start in the root, Downloads or Desktop folders."); + .GetMessageBoxStandardWindow(new MessageBoxStandardParams() + { + Topmost = true, + ShowInCenter = true, + ContentTitle = "Wabbajack Launcher: Error", + ContentMessage = ex.ToString() + }); var result = await msg.Show(); Environment.Exit(1); } diff --git a/Wabbajack.Networking.Steam.Test/Wabbajack.Networking.Steam.Test.csproj b/Wabbajack.Networking.Steam.Test/Wabbajack.Networking.Steam.Test.csproj index 275bc9cd..05f8b01e 100644 --- a/Wabbajack.Networking.Steam.Test/Wabbajack.Networking.Steam.Test.csproj +++ b/Wabbajack.Networking.Steam.Test/Wabbajack.Networking.Steam.Test.csproj @@ -11,6 +11,8 @@ + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Wabbajack.Paths.IO/KnownFolders.cs b/Wabbajack.Paths.IO/KnownFolders.cs index 2c45f5a1..59c44222 100644 --- a/Wabbajack.Paths.IO/KnownFolders.cs +++ b/Wabbajack.Paths.IO/KnownFolders.cs @@ -11,13 +11,15 @@ public static class KnownFolders { get { - var result = Process.GetCurrentProcess().MainModule!.FileName!.ToAbsolutePath().Parent; - if (result.FileName == "dotnet".ToRelativePath() || Assembly.GetEntryAssembly() != null) + var result = Process.GetCurrentProcess().MainModule?.FileName?.ToAbsolutePath() ?? default; + + + if ((result != default && result.Depth > 1 && result.FileName == "dotnet".ToRelativePath()) || Assembly.GetEntryAssembly() != null) { - return Assembly.GetExecutingAssembly().Location.ToAbsolutePath().Parent; + result = Assembly.GetEntryAssembly()!.Location.ToAbsolutePath(); } - return result; + return result == default ? Environment.CurrentDirectory.ToAbsolutePath() : result.Parent; } } diff --git a/Wabbajack.Paths/AbsolutePath.cs b/Wabbajack.Paths/AbsolutePath.cs index 959c9f13..42f6c0bb 100644 --- a/Wabbajack.Paths/AbsolutePath.cs +++ b/Wabbajack.Paths/AbsolutePath.cs @@ -20,7 +20,7 @@ public struct AbsolutePath : IPath, IComparable, IEquatable Extension.FromPath(Parts[^1]); - public RelativePath FileName => (RelativePath) Parts[^1]; + public RelativePath FileName => new(Parts[^1..]); internal AbsolutePath(string[] parts, PathFormat format) {