mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge branch 'main' into game_support_readme_update
This commit is contained in:
commit
77eb536162
@ -132,12 +132,13 @@ namespace Wabbajack
|
||||
try
|
||||
{
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
var location = assembly.Location;
|
||||
if (string.IsNullOrWhiteSpace(location))
|
||||
location = Process.GetCurrentProcess().MainModule?.FileName ?? throw new Exception("Assembly location is unavailable!");
|
||||
var assemblyLocation = assembly.Location;
|
||||
var processLocation = Process.GetCurrentProcess().MainModule?.FileName ?? throw new Exception("Process location is unavailable!");
|
||||
|
||||
_logger.LogInformation("App Location: {Location}", assembly.Location);
|
||||
var fvi = FileVersionInfo.GetVersionInfo(location);
|
||||
_logger.LogInformation("Assembly Location: {AssemblyLocation}", assemblyLocation);
|
||||
_logger.LogInformation("Process Location: {ProcessLocation}", processLocation);
|
||||
|
||||
var fvi = FileVersionInfo.GetVersionInfo(string.IsNullOrWhiteSpace(assemblyLocation) ? processLocation : assemblyLocation);
|
||||
Consts.CurrentMinimumWabbajackVersion = Version.Parse(fvi.FileVersion);
|
||||
VersionDisplay = $"v{fvi.FileVersion}";
|
||||
AppName = "WABBAJACK " + VersionDisplay;
|
||||
@ -151,7 +152,7 @@ namespace Wabbajack
|
||||
{
|
||||
var applicationRegistrationService = _serviceProvider.GetRequiredService<IApplicationRegistrationService>();
|
||||
|
||||
var applicationInfo = new ApplicationInfo("Wabbajack", "Wabbajack", "Wabbajack", location);
|
||||
var applicationInfo = new ApplicationInfo("Wabbajack", "Wabbajack", "Wabbajack", processLocation);
|
||||
applicationInfo.SupportedExtensions.Add("wabbajack");
|
||||
applicationRegistrationService.RegisterApplication(applicationInfo);
|
||||
}
|
||||
|
@ -165,7 +165,11 @@
|
||||
<Button Name="AddInclude">
|
||||
<icon:Material Kind="Plus"></icon:Material>
|
||||
</Button>
|
||||
<Label>Include</Label>
|
||||
<Label>Include Folders</Label>
|
||||
<Button Name="AddIncludeFiles">
|
||||
<icon:Material Kind="Plus"></icon:Material>
|
||||
</Button>
|
||||
<Label>Include Files</Label>
|
||||
</StackPanel>
|
||||
<ListBox x:Name="Include">
|
||||
<ListBox.ItemTemplate>
|
||||
@ -179,7 +183,11 @@
|
||||
<Button Name="AddIgnore">
|
||||
<icon:Material Kind="Plus"></icon:Material>
|
||||
</Button>
|
||||
<Label>Ignore</Label>
|
||||
<Label>Ignore Folders</Label>
|
||||
<Button Name="AddIgnoreFiles">
|
||||
<icon:Material Kind="Plus"></icon:Material>
|
||||
</Button>
|
||||
<Label>Ignore Files</Label>
|
||||
</StackPanel>
|
||||
<ListBox x:Name="Ignore">
|
||||
<ListBox.ItemTemplate>
|
||||
|
@ -219,6 +219,7 @@ namespace Wabbajack
|
||||
.DisposeWith(disposables);
|
||||
|
||||
AddInclude.Command = ReactiveCommand.CreateFromTask(async () => await AddIncludeCommand());
|
||||
AddIncludeFiles.Command = ReactiveCommand.CreateFromTask(async () => await AddIncludeFilesCommand());
|
||||
|
||||
ViewModel.WhenAnyValue(vm => vm.Ignore)
|
||||
.WhereNotNull()
|
||||
@ -227,6 +228,7 @@ namespace Wabbajack
|
||||
.DisposeWith(disposables);
|
||||
|
||||
AddIgnore.Command = ReactiveCommand.CreateFromTask(async () => await AddIgnoreCommand());
|
||||
AddIgnoreFiles.Command = ReactiveCommand.CreateFromTask(async () => await AddIgnoreFilesCommand());
|
||||
|
||||
|
||||
});
|
||||
@ -258,16 +260,19 @@ namespace Wabbajack
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = false,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
|
||||
foreach (var fileName in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = fileName.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) return;
|
||||
|
||||
ViewModel.AddAlwaysEnabled(selectedPath.RelativeTo(ViewModel.Source));
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddAlwaysEnabled(selectedPath.RelativeTo(ViewModel.Source));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task AddOtherProfileCommand()
|
||||
@ -295,16 +300,19 @@ namespace Wabbajack
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = false,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source.Combine("profiles"))) return;
|
||||
|
||||
ViewModel.AddOtherProfile(selectedPath.FileName.ToString());
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source.Combine("profiles"))) continue;
|
||||
|
||||
ViewModel.AddOtherProfile(selectedPath.FileName.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public Task AddNoMatchIncludeCommand()
|
||||
@ -321,16 +329,20 @@ namespace Wabbajack
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = false,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return Task.CompletedTask;
|
||||
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) return Task.CompletedTask;
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddNoMatchInclude(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
}
|
||||
|
||||
ViewModel.AddNoMatchInclude(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
@ -338,7 +350,7 @@ namespace Wabbajack
|
||||
{
|
||||
var dlg = new CommonOpenFileDialog
|
||||
{
|
||||
Title = "Please select a file to include",
|
||||
Title = "Please select folders to include",
|
||||
IsFolderPicker = true,
|
||||
InitialDirectory = ViewModel!.Source.ToString(),
|
||||
AddToMostRecentlyUsedList = false,
|
||||
@ -348,23 +360,55 @@ namespace Wabbajack
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = false,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) return;
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task AddIncludeFilesCommand()
|
||||
{
|
||||
var dlg = new CommonOpenFileDialog
|
||||
{
|
||||
Title = "Please select files to include",
|
||||
IsFolderPicker = false,
|
||||
InitialDirectory = ViewModel!.Source.ToString(),
|
||||
AddToMostRecentlyUsedList = false,
|
||||
AllowNonFileSystemItems = false,
|
||||
DefaultDirectory = ViewModel!.Source.ToString(),
|
||||
EnsureFileExists = true,
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task AddIgnoreCommand()
|
||||
{
|
||||
var dlg = new CommonOpenFileDialog
|
||||
{
|
||||
Title = "Please select a file to ignore",
|
||||
Title = "Please select folders to ignore",
|
||||
IsFolderPicker = true,
|
||||
InitialDirectory = ViewModel!.Source.ToString(),
|
||||
AddToMostRecentlyUsedList = false,
|
||||
@ -374,16 +418,48 @@ namespace Wabbajack
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = false,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) return;
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task AddIgnoreFilesCommand()
|
||||
{
|
||||
var dlg = new CommonOpenFileDialog
|
||||
{
|
||||
Title = "Please select files to ignore",
|
||||
IsFolderPicker = false,
|
||||
InitialDirectory = ViewModel!.Source.ToString(),
|
||||
AddToMostRecentlyUsedList = false,
|
||||
AllowNonFileSystemItems = false,
|
||||
DefaultDirectory = ViewModel!.Source.ToString(),
|
||||
EnsureFileExists = true,
|
||||
EnsurePathExists = true,
|
||||
EnsureReadOnly = false,
|
||||
EnsureValidNames = true,
|
||||
Multiselect = true,
|
||||
ShowPlacesList = true,
|
||||
};
|
||||
|
||||
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
|
||||
foreach (var filename in dlg.FileNames)
|
||||
{
|
||||
var selectedPath = filename.ToAbsolutePath();
|
||||
|
||||
if (!selectedPath.InFolder(ViewModel.Source)) continue;
|
||||
|
||||
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ public class CompilerSettings
|
||||
public RelativePath[] Include { get; set; } = Array.Empty<RelativePath>();
|
||||
|
||||
/// <summary>
|
||||
/// These files are inlined into the modlist
|
||||
/// These files are ignored when compiling the modlist
|
||||
/// </summary>
|
||||
public RelativePath[] Ignore { get; set; } = Array.Empty<RelativePath>();
|
||||
|
||||
|
@ -107,6 +107,12 @@ public static class GameRegistry
|
||||
MO2Name = "Skyrim Special Edition",
|
||||
MO2ArchiveName = "skyrimse",
|
||||
SteamIDs = new[] {489830},
|
||||
GOGIDs = new[]
|
||||
{
|
||||
1711230643,// The Elder Scrolls V: Skyrim Special Edition AKA Base Game
|
||||
1801825368,// The Elder Scrolls V: Skyrim Anniversary Edition AKA The Store Bundle
|
||||
1162721350 // Upgrade DLC
|
||||
},
|
||||
RequiredFiles = new[]
|
||||
{
|
||||
"SkyrimSE.exe".ToRelativePath()
|
||||
|
Loading…
Reference in New Issue
Block a user