Merge pull request #1126 from wabbajack-tools/fix-fomod-extraction

Fix fomod extraction
This commit is contained in:
Timothy Baldridge
2020-10-13 05:31:01 -06:00
committed by GitHub
7 changed files with 32 additions and 11 deletions

View File

@ -1,5 +1,8 @@
### Changelog ### Changelog
#### Version - 2.3.0.4 - 10/13/2020
* Fix FOMOD extraction (for FNV)
#### Version - 2.3.0.3 - 10/12/2020 #### Version - 2.3.0.3 - 10/12/2020
* Revert some 7zip changes due to 7zip crashing the app * Revert some 7zip changes due to 7zip crashing the app

View File

@ -6,8 +6,8 @@
<AssemblyName>wabbajack-cli</AssemblyName> <AssemblyName>wabbajack-cli</AssemblyName>
<Company>Wabbajack</Company> <Company>Wabbajack</Company>
<Platforms>x64</Platforms> <Platforms>x64</Platforms>
<AssemblyVersion>2.3.0.3</AssemblyVersion> <AssemblyVersion>2.3.0.4</AssemblyVersion>
<FileVersion>2.3.0.3</FileVersion> <FileVersion>2.3.0.4</FileVersion>
<Copyright>Copyright © 2019-2020</Copyright> <Copyright>Copyright © 2019-2020</Copyright>
<Description>An automated ModList installer</Description> <Description>An automated ModList installer</Description>
<PublishReadyToRun>true</PublishReadyToRun> <PublishReadyToRun>true</PublishReadyToRun>

View File

@ -4,8 +4,8 @@
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<AssemblyVersion>2.3.0.3</AssemblyVersion> <AssemblyVersion>2.3.0.4</AssemblyVersion>
<FileVersion>2.3.0.3</FileVersion> <FileVersion>2.3.0.4</FileVersion>
<Copyright>Copyright © 2019-2020</Copyright> <Copyright>Copyright © 2019-2020</Copyright>
<Description>Wabbajack Application Launcher</Description> <Description>Wabbajack Application Launcher</Description>
<PublishReadyToRun>true</PublishReadyToRun> <PublishReadyToRun>true</PublishReadyToRun>

View File

@ -3,8 +3,8 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<AssemblyVersion>2.3.0.3</AssemblyVersion> <AssemblyVersion>2.3.0.4</AssemblyVersion>
<FileVersion>2.3.0.3</FileVersion> <FileVersion>2.3.0.4</FileVersion>
<Copyright>Copyright © 2019-2020</Copyright> <Copyright>Copyright © 2019-2020</Copyright>
<Description>Wabbajack Server</Description> <Description>Wabbajack Server</Description>
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <RuntimeIdentifier>win-x64</RuntimeIdentifier>

View File

@ -168,6 +168,21 @@ namespace Wabbajack.VirtualFileSystem.Test
}); });
} }
[Fact]
public async Task CanExtractFOMODFiles()
{
var tmpFolder = await TempFolder.Create();
var src = await DownloadMod(Game.FalloutNewVegas, 52510);
var newName = src.FileName.RelativeTo(tmpFolder.Dir);
await src.CopyToAsync(newName);
var ctx = new Context(_queue);
await ctx.AddRoot(tmpFolder.Dir);
Assert.NotEmpty(ctx.Index.ByName.Where(f => f.Key.FileName == (RelativePath)"Alternative Repairing.esp"));
}
[Fact] [Fact]
public async Task SmallZipNoLongerCrashes() public async Task SmallZipNoLongerCrashes()
{ {

View File

@ -27,6 +27,8 @@ namespace Wabbajack.VirtualFileSystem
Definitions.FileType._7Z); Definitions.FileType._7Z);
private static Extension OMODExtension = new Extension(".omod"); private static Extension OMODExtension = new Extension(".omod");
private static Extension FOMODExtension = new Extension(".fomod");
private static Extension BSAExtension = new Extension(".bsa"); private static Extension BSAExtension = new Extension(".bsa");
public static readonly HashSet<Extension> ExtractableExtensions = new HashSet<Extension> public static readonly HashSet<Extension> ExtractableExtensions = new HashSet<Extension>
@ -37,7 +39,8 @@ namespace Wabbajack.VirtualFileSystem
new Extension(".7zip"), new Extension(".7zip"),
new Extension(".rar"), new Extension(".rar"),
new Extension(".zip"), new Extension(".zip"),
OMODExtension OMODExtension,
FOMODExtension
}; };
@ -109,7 +112,7 @@ namespace Wabbajack.VirtualFileSystem
} }
return results; return results;
} }
private static async Task<Dictionary<RelativePath,T>> GatheringExtractWithOMOD<T>(Stream archive, Predicate<RelativePath> shouldExtract, Func<RelativePath,IExtractedFile,ValueTask<T>> mapfn) private static async Task<Dictionary<RelativePath,T>> GatheringExtractWithOMOD<T>(Stream archive, Predicate<RelativePath> shouldExtract, Func<RelativePath,IExtractedFile,ValueTask<T>> mapfn)
{ {
var tmpFile = new TempFile(); var tmpFile = new TempFile();
@ -119,7 +122,7 @@ namespace Wabbajack.VirtualFileSystem
Framework.Settings.TempPath = (string)dest.Dir; Framework.Settings.TempPath = (string)dest.Dir;
Framework.Settings.CodeProgress = new OMODProgress(); Framework.Settings.CodeProgress = new OMODProgress();
var omod = new OMOD((string)tmpFile.Path); var omod = new OMOD((string)tmpFile.Path);
omod.GetDataFiles(); omod.GetDataFiles();
omod.GetPlugins(); omod.GetPlugins();

View File

@ -6,8 +6,8 @@
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<Platforms>x64</Platforms> <Platforms>x64</Platforms>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier> <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<AssemblyVersion>2.3.0.3</AssemblyVersion> <AssemblyVersion>2.3.0.4</AssemblyVersion>
<FileVersion>2.3.0.3</FileVersion> <FileVersion>2.3.0.4</FileVersion>
<Copyright>Copyright © 2019-2020</Copyright> <Copyright>Copyright © 2019-2020</Copyright>
<Description>An automated ModList installer</Description> <Description>An automated ModList installer</Description>
<PublishReadyToRun>true</PublishReadyToRun> <PublishReadyToRun>true</PublishReadyToRun>