From a8a859ac87208c99317fb6d972d7191a8b6bb1e2 Mon Sep 17 00:00:00 2001 From: Justin Swanson Date: Sun, 13 Oct 2019 15:50:16 -0500 Subject: [PATCH 1/9] Added explicit XamlDebuggingInformation property Only the default "Debug" build option has this true by default? Using other build options like "Debug (no commandargs)" won't work without this --- Wabbajack/Wabbajack.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Wabbajack/Wabbajack.csproj b/Wabbajack/Wabbajack.csproj index a59348d7..98e2d297 100644 --- a/Wabbajack/Wabbajack.csproj +++ b/Wabbajack/Wabbajack.csproj @@ -1,4 +1,4 @@ - + @@ -32,6 +32,7 @@ false false true + True x64 From a4d6feae42907587aa7fad758ff4431c4359ee66 Mon Sep 17 00:00:00 2001 From: Justin Swanson Date: Sun, 13 Oct 2019 15:56:40 -0500 Subject: [PATCH 2/9] Added 32bit compilation option --- .../Compression.BSA.Test.csproj | 22 +++++++ Compression.BSA/Compression.BSA.csproj | 22 +++++++ .../VirtualFileSystem.Test.csproj | 22 +++++++ VirtualFileSystem/VirtualFileSystem.csproj | 20 +++++++ Wabbajack.Common/Wabbajack.Common.csproj | 20 +++++++ Wabbajack.Test/Wabbajack.Test.csproj | 20 +++++++ .../Wabbajack.WebAutomation.Test.csproj | 22 +++++++ .../Wabbajack.WebAutomation.csproj | 10 ++++ Wabbajack.sln | 57 +++++++++++++++++++ Wabbajack/Wabbajack.csproj | 34 ++++++++++- 10 files changed, 248 insertions(+), 1 deletion(-) diff --git a/Compression.BSA.Test/Compression.BSA.Test.csproj b/Compression.BSA.Test/Compression.BSA.Test.csproj index f39eb9b0..9dd108ef 100644 --- a/Compression.BSA.Test/Compression.BSA.Test.csproj +++ b/Compression.BSA.Test/Compression.BSA.Test.csproj @@ -52,6 +52,28 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + ..\packages\SharpZipLib.1.2.0\lib\net45\ICSharpCode.SharpZipLib.dll diff --git a/Compression.BSA/Compression.BSA.csproj b/Compression.BSA/Compression.BSA.csproj index 6d8c5470..bf481c6a 100644 --- a/Compression.BSA/Compression.BSA.csproj +++ b/Compression.BSA/Compression.BSA.csproj @@ -53,6 +53,28 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + true + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + ..\packages\AlphaFS.2.2.6\lib\net452\AlphaFS.dll diff --git a/VirtualFileSystem.Test/VirtualFileSystem.Test.csproj b/VirtualFileSystem.Test/VirtualFileSystem.Test.csproj index 504b9a88..221d41e6 100644 --- a/VirtualFileSystem.Test/VirtualFileSystem.Test.csproj +++ b/VirtualFileSystem.Test/VirtualFileSystem.Test.csproj @@ -52,6 +52,28 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + diff --git a/VirtualFileSystem/VirtualFileSystem.csproj b/VirtualFileSystem/VirtualFileSystem.csproj index 957155e6..3e3b4625 100644 --- a/VirtualFileSystem/VirtualFileSystem.csproj +++ b/VirtualFileSystem/VirtualFileSystem.csproj @@ -49,6 +49,26 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + ..\packages\AlphaFS.2.2.6\lib\net452\AlphaFS.dll diff --git a/Wabbajack.Common/Wabbajack.Common.csproj b/Wabbajack.Common/Wabbajack.Common.csproj index 335221d8..e8bccf3b 100644 --- a/Wabbajack.Common/Wabbajack.Common.csproj +++ b/Wabbajack.Common/Wabbajack.Common.csproj @@ -49,6 +49,26 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + ..\packages\AlphaFS.2.2.6\lib\net452\AlphaFS.dll diff --git a/Wabbajack.Test/Wabbajack.Test.csproj b/Wabbajack.Test/Wabbajack.Test.csproj index 49042276..5ea2b4f8 100644 --- a/Wabbajack.Test/Wabbajack.Test.csproj +++ b/Wabbajack.Test/Wabbajack.Test.csproj @@ -57,6 +57,26 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + ..\packages\AlphaFS.2.2.6\lib\net452\AlphaFS.dll diff --git a/Wabbajack.WebAutomation.Test/Wabbajack.WebAutomation.Test.csproj b/Wabbajack.WebAutomation.Test/Wabbajack.WebAutomation.Test.csproj index 1717af85..13764afe 100644 --- a/Wabbajack.WebAutomation.Test/Wabbajack.WebAutomation.Test.csproj +++ b/Wabbajack.WebAutomation.Test/Wabbajack.WebAutomation.Test.csproj @@ -52,6 +52,28 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + diff --git a/Wabbajack.WebAutomation/Wabbajack.WebAutomation.csproj b/Wabbajack.WebAutomation/Wabbajack.WebAutomation.csproj index c50b4590..b5fafcf8 100644 --- a/Wabbajack.WebAutomation/Wabbajack.WebAutomation.csproj +++ b/Wabbajack.WebAutomation/Wabbajack.WebAutomation.csproj @@ -28,6 +28,16 @@ bin\x64\Debug\ + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + ..\packages\Microsoft.AspNetCore.WebUtilities.2.0.2\lib\netstandard2.0\Microsoft.AspNetCore.WebUtilities.dll diff --git a/Wabbajack.sln b/Wabbajack.sln index cf13737f..60d780ac 100644 --- a/Wabbajack.sln +++ b/Wabbajack.sln @@ -34,120 +34,177 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug (no commandargs)|Any CPU = Debug (no commandargs)|Any CPU Debug (no commandargs)|x64 = Debug (no commandargs)|x64 + Debug (no commandargs)|x86 = Debug (no commandargs)|x86 Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|Any CPU.Build.0 = Debug|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|x64.ActiveCfg = Debug|x64 {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|x64.Build.0 = Debug|x64 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|x86.ActiveCfg = Debug|x86 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Debug|x86.Build.0 = Debug|x86 {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|Any CPU.ActiveCfg = Release|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|Any CPU.Build.0 = Release|Any CPU {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|x64.ActiveCfg = Release|x64 {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|x64.Build.0 = Release|x64 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|x86.ActiveCfg = Release|x86 + {B3F3FB6E-B9EB-4F49-9875-D78578BC7AE5}.Release|x86.Build.0 = Release|x86 {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug (no commandargs)|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|Any CPU.Build.0 = Debug (no commandargs)|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|x64.ActiveCfg = Debug (no commandargs)|x64 {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|x64.Build.0 = Debug (no commandargs)|x64 + {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|x86.ActiveCfg = Debug (no commandargs)|x86 + {33602679-8484-40C7-A10C-774DFF5D8314}.Debug (no commandargs)|x86.Build.0 = Debug (no commandargs)|x86 {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|Any CPU.Build.0 = Debug|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|x64.ActiveCfg = Debug|x64 {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|x64.Build.0 = Debug|x64 + {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|x86.ActiveCfg = Debug|x86 + {33602679-8484-40C7-A10C-774DFF5D8314}.Debug|x86.Build.0 = Debug|x86 {33602679-8484-40C7-A10C-774DFF5D8314}.Release|Any CPU.ActiveCfg = Release|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Release|Any CPU.Build.0 = Release|Any CPU {33602679-8484-40C7-A10C-774DFF5D8314}.Release|x64.ActiveCfg = Release|x64 {33602679-8484-40C7-A10C-774DFF5D8314}.Release|x64.Build.0 = Release|x64 + {33602679-8484-40C7-A10C-774DFF5D8314}.Release|x86.ActiveCfg = Release|x86 + {33602679-8484-40C7-A10C-774DFF5D8314}.Release|x86.Build.0 = Release|x86 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|Any CPU.Build.0 = Debug|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|x64.ActiveCfg = Debug|x64 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|x64.Build.0 = Debug|x64 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|x86.ActiveCfg = Debug|x86 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Debug|x86.Build.0 = Debug|x86 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|Any CPU.Build.0 = Release|Any CPU {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x64.ActiveCfg = Release|x64 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x64.Build.0 = Release|x64 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x86.ActiveCfg = Release|x86 + {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x86.Build.0 = Release|x86 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|Any CPU.Build.0 = Debug|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x64.ActiveCfg = Debug|x64 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x64.Build.0 = Debug|x64 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x86.ActiveCfg = Debug|x86 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x86.Build.0 = Debug|x86 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|Any CPU.Build.0 = Release|Any CPU {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x64.ActiveCfg = Release|x64 {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x64.Build.0 = Release|x64 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x86.ActiveCfg = Release|x86 + {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x86.Build.0 = Release|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.ActiveCfg = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.Build.0 = Debug|Any CPU + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x86.ActiveCfg = Debug|x86 + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x86.Build.0 = Debug|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|Any CPU.Build.0 = Release|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|x64.ActiveCfg = Release|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|x64.Build.0 = Release|Any CPU + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|x86.ActiveCfg = Release|x86 + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|x86.Build.0 = Release|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|Any CPU.Build.0 = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.ActiveCfg = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.Build.0 = Debug|Any CPU + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x86.ActiveCfg = Debug|x86 + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x86.Build.0 = Debug|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|Any CPU.ActiveCfg = Release|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|Any CPU.Build.0 = Release|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|x64.ActiveCfg = Release|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|x64.Build.0 = Release|Any CPU + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|x86.ActiveCfg = Release|x86 + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|x86.Build.0 = Release|x86 {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|Any CPU.Build.0 = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|x64.ActiveCfg = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|x64.Build.0 = Debug|Any CPU + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|x86.ActiveCfg = Debug|x86 + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Debug|x86.Build.0 = Debug|x86 {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|Any CPU.ActiveCfg = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|Any CPU.Build.0 = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|x64.ActiveCfg = Debug|Any CPU {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|x64.Build.0 = Debug|Any CPU + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|x86.ActiveCfg = Debug|x86 + {E5A6F0E6-F79E-460D-82E2-E6330ACE06BA}.Release|x86.Build.0 = Debug|x86 {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|Any CPU.Build.0 = Debug|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|x64.ActiveCfg = Debug|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|x64.Build.0 = Debug|Any CPU + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|x86.ActiveCfg = Debug|x86 + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Debug|x86.Build.0 = Debug|x86 {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|Any CPU.ActiveCfg = Release|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|Any CPU.Build.0 = Release|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|x64.ActiveCfg = Release|Any CPU {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|x64.Build.0 = Release|Any CPU + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|x86.ActiveCfg = Release|x86 + {73D0B663-A6FB-4A67-B945-EBB4A234C996}.Release|x86.Build.0 = Release|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|x64.Build.0 = Debug|x64 + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.ActiveCfg = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.Build.0 = Debug|Any CPU + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x86.ActiveCfg = Debug|x86 + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x86.Build.0 = Debug|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|Any CPU.Build.0 = Release|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|x64.ActiveCfg = Release|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|x64.Build.0 = Release|Any CPU + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|x86.ActiveCfg = Release|x86 + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Wabbajack/Wabbajack.csproj b/Wabbajack/Wabbajack.csproj index 98e2d297..e481d6b1 100644 --- a/Wabbajack/Wabbajack.csproj +++ b/Wabbajack/Wabbajack.csproj @@ -1,4 +1,4 @@ - + @@ -96,6 +96,38 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x86\Debug %28no commandargs%29\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + true + ..\packages\AlphaFS.2.2.6\lib\net452\AlphaFS.dll From a510a6b36cfe67c2e3ab4dbc77769836420913fc Mon Sep 17 00:00:00 2001 From: Justin Swanson Date: Sun, 13 Oct 2019 15:56:54 -0500 Subject: [PATCH 3/9] Added DesignInstance to MainWindow.xaml --- Wabbajack/UI/MainWindow.xaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Wabbajack/UI/MainWindow.xaml b/Wabbajack/UI/MainWindow.xaml index f17f5bba..32b73925 100644 --- a/Wabbajack/UI/MainWindow.xaml +++ b/Wabbajack/UI/MainWindow.xaml @@ -14,6 +14,7 @@ Icon="Icons/wabbajack.ico" ResizeMode="CanResize" Style="{StaticResource {x:Type Window}}" + d:DataContext="{d:DesignInstance local:AppState}" WindowStyle="ToolWindow" mc:Ignorable="d"> From a177a60c54d38b9ec82a153ac762139a42104625 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 14:32:40 -0600 Subject: [PATCH 4/9] add support for .mohidden and /optional/ esps in zEdit integration --- Wabbajack.Lib/zEditIntegration.cs | 17 +++++++++++++---- Wabbajack.Test/ZEditIntegrationTests.cs | 16 ++++++++-------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Wabbajack.Lib/zEditIntegration.cs b/Wabbajack.Lib/zEditIntegration.cs index 386b13ad..fa1216ee 100644 --- a/Wabbajack.Lib/zEditIntegration.cs +++ b/Wabbajack.Lib/zEditIntegration.cs @@ -73,10 +73,19 @@ namespace Wabbajack.Lib var result = source.EvolveTo(); result.Sources = merge.plugins.Select(f => { - var abs_path = Path.Combine(f.dataFolder, f.filename); - if (!File.Exists(abs_path)) + var orig_path = Path.Combine(f.dataFolder, f.filename); + var paths = new[] + { + orig_path, + orig_path + ".mohidden", + Path.Combine(Path.GetDirectoryName(orig_path), "optional", Path.GetFileName(orig_path)) + }; + + var abs_path = paths.FirstOrDefault(p => File.Exists(p)); + + if (abs_path == null) throw new InvalidDataException( - $"File {abs_path} is required to build {merge.filename} but it doesn't exist"); + $"File {abs_path} is required to build {merge.filename} but it doesn't exist searched in: \n" + String.Join("\n", paths)); return new SourcePatch { @@ -85,7 +94,7 @@ namespace Wabbajack.Lib }; }).ToList(); - var src_data = merge.plugins.Select(f => File.ReadAllBytes(Path.Combine(f.dataFolder, f.filename))) + var src_data = result.Sources.Select(f => File.ReadAllBytes(Path.Combine(_compiler.MO2Folder, f.RelativePath))) .ConcatArrays(); var dst_data = File.ReadAllBytes(source.AbsolutePath); diff --git a/Wabbajack.Test/ZEditIntegrationTests.cs b/Wabbajack.Test/ZEditIntegrationTests.cs index 15fff578..5b234df8 100644 --- a/Wabbajack.Test/ZEditIntegrationTests.cs +++ b/Wabbajack.Test/ZEditIntegrationTests.cs @@ -21,8 +21,8 @@ namespace Wabbajack.Test var modb = utils.AddMod(); var moddest = utils.AddMod(); var srca = utils.AddModFile(moda, @"srca.esp", 10); - var srcb = utils.AddModFile(moda, @"srcb.esp", 10); - var srcc = utils.AddModFile(modb, @"srcd.esp", 10); + var srcb = utils.AddModFile(moda, @"srcb.esp.mohidden", 10); + var srcc = utils.AddModFile(modb, @"optional\srcc.esp", 10); var dest = utils.AddModFile(moddest, @"merged.esp", 20); var srcs = new List {srca, srcb, srcc}; @@ -39,18 +39,18 @@ namespace Wabbajack.Test { new zEditIntegration.zEditMergePlugin() { - filename = srca, - dataFolder = Path.GetDirectoryName(srca), + filename = "srca.esp", + dataFolder = Path.Combine(utils.MO2Folder, "mods", moda) }, new zEditIntegration.zEditMergePlugin() { - filename = srcb, - dataFolder = Path.GetDirectoryName(srcb), + filename = "srcb.esp", + dataFolder = Path.Combine(utils.MO2Folder, "mods", moda), }, new zEditIntegration.zEditMergePlugin() { - filename = srcc, - dataFolder = Path.GetDirectoryName(srcc), + filename = "srcc.esp", + dataFolder = Path.Combine(utils.MO2Folder, "mods", modb), } } } From 979334197f7b2a19765c3a0554c5e51cce817778 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 15:08:37 -0600 Subject: [PATCH 5/9] bump version, add check for Cleaned ESMs before install --- Wabbajack.Lib/Installer.cs | 23 ++++++++++++++++++++--- Wabbajack.Test/ACompilerTest.cs | 2 +- Wabbajack.Test/SanityTests.cs | 31 ++++++++++++++++++++++++++++++- Wabbajack.Test/TestUtils.cs | 16 ++++++++++++---- 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/Wabbajack.Lib/Installer.cs b/Wabbajack.Lib/Installer.cs index cbedd716..abf0a280 100644 --- a/Wabbajack.Lib/Installer.cs +++ b/Wabbajack.Lib/Installer.cs @@ -98,7 +98,7 @@ namespace Wabbajack.Lib public void Install() { - + ValidateGameESMs(); ValidateModlist.RunValidation(ModList); VirtualFileSystem.Clean(); @@ -121,7 +121,8 @@ namespace Wabbajack.Lib var game = GameRegistry.Games[ModList.GameType]; - GameFolder = game.GameLocation; + if (GameFolder == null) + GameFolder = game.GameLocation; if (GameFolder == null) { @@ -163,6 +164,21 @@ namespace Wabbajack.Lib //AskToEndorse(); } + private void ValidateGameESMs() + { + foreach (var esm in ModList.Directives.OfType().ToList()) + { + var filename = Path.GetFileName(esm.To); + var game_file = Path.Combine(GameFolder, "Data", filename); + Utils.Log($"Validating {filename}"); + var hash = game_file.FileHash(); + if (hash != esm.SourceESMHash) + { + Utils.Error("Game ESM hash doesn't match, is the ESM already cleaned? Please verify your local game files."); + } + } + } + private void AskToEndorse() { var mods = ModList.Archives @@ -308,8 +324,9 @@ namespace Wabbajack.Lib var to_file = Path.Combine(Outputfolder, directive.To); Status($"Patching {filename}"); using (var output = File.OpenWrite(to_file)) + using (var input = File.OpenRead(game_file)) { - BSDiff.Apply(File.OpenRead(game_file), () => new MemoryStream(patch_data), output); + BSDiff.Apply(input, () => new MemoryStream(patch_data), output); } } diff --git a/Wabbajack.Test/ACompilerTest.cs b/Wabbajack.Test/ACompilerTest.cs index 9a0eb223..78dd2fe9 100644 --- a/Wabbajack.Test/ACompilerTest.cs +++ b/Wabbajack.Test/ACompilerTest.cs @@ -10,7 +10,7 @@ using Wabbajack.Lib; namespace Wabbajack.Test { - public abstract class ACompilerTest + public abstract class ACompilerTest { public TestContext TestContext { get; set; } protected TestUtils utils { get; set; } diff --git a/Wabbajack.Test/SanityTests.cs b/Wabbajack.Test/SanityTests.cs index 19115113..210f5aaf 100644 --- a/Wabbajack.Test/SanityTests.cs +++ b/Wabbajack.Test/SanityTests.cs @@ -1,13 +1,15 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Runtime; -using Alphaleonis.Win32.Filesystem; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; using VFS; using Wabbajack.Common; using Wabbajack.Lib; +using File = Alphaleonis.Win32.Filesystem.File; +using Path = Alphaleonis.Win32.Filesystem.Path; namespace Wabbajack.Test { @@ -32,6 +34,33 @@ namespace Wabbajack.Test utils.VerifyInstalledFile(mod, @"Data\scripts\test.pex"); } + [TestMethod] + public void CleanedESMTest() + { + + var profile = utils.AddProfile(); + var mod = utils.AddMod("Cleaned ESMs"); + var update_esm = utils.AddModFile(mod, @"Update.esm", 10); + + utils.Configure(); + + var game_file = Path.Combine(utils.GameFolder, "Data", "Update.esm"); + utils.GenerateRandomFileData(game_file, 20); + + var modlist = CompileAndInstall(profile); + + utils.VerifyInstalledFile(mod, @"Update.esm"); + + var compiler = ConfigureAndRunCompiler(profile); + + // Update the file and verify that it throws an error. + utils.GenerateRandomFileData(game_file, 20); + var exception = Assert.ThrowsException(() => Install(compiler)); + Assert.AreEqual(exception.Message, "Game ESM hash doesn't match, is the ESM already cleaned? Please verify your local game files."); + + + } + [TestMethod] public void UnmodifiedInlinedFilesArePulledFromArchives() { diff --git a/Wabbajack.Test/TestUtils.cs b/Wabbajack.Test/TestUtils.cs index d84811b2..95316f55 100644 --- a/Wabbajack.Test/TestUtils.cs +++ b/Wabbajack.Test/TestUtils.cs @@ -53,7 +53,7 @@ namespace Wabbajack.Test }); Directory.CreateDirectory(DownloadsFolder); - Directory.CreateDirectory(GameFolder); + Directory.CreateDirectory(Path.Combine(GameFolder, "Data")); Profiles.Do(profile => { @@ -92,6 +92,17 @@ namespace Wabbajack.Test /// /// public string AddModFile(string mod_name, string path, int random_fill=128) + { + + + var full_path = Path.Combine(ModsFolder, mod_name, path); + Directory.CreateDirectory(Path.GetDirectoryName(full_path)); + + GenerateRandomFileData(full_path, random_fill); + return full_path; + } + + public void GenerateRandomFileData(string full_path, int random_fill) { byte[] bytes = new byte[0]; if (random_fill != 0) @@ -100,10 +111,7 @@ namespace Wabbajack.Test RNG.NextBytes(bytes); } - var full_path = Path.Combine(ModsFolder, mod_name, path); - Directory.CreateDirectory(Path.GetDirectoryName(full_path)); File.WriteAllBytes(full_path, bytes); - return full_path; } public void Dispose() From 85cf125ac86724b5a7218c3baae201d2fd1b1ed4 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 15:15:51 -0600 Subject: [PATCH 6/9] now we bump the version --- CHANGELOG.md | 5 +++++ Wabbajack/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f6c11c5..68d0983d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ### Changelog +#### Version 1.0 alpha 4 - 11/2/2019 +* Reorganize steps so that we run zEdit merges before NOMATCH_INCLUDE +* Look for hidden/optional ESMs when building zEdit plugins +* Check for modified ESMs before starting the long install process + #### Version 1.0 alpha 3 - 11/2/2019 * Slideshow more responsive on pressing next * Slideshow timer resets when next is pressed diff --git a/Wabbajack/Properties/AssemblyInfo.cs b/Wabbajack/Properties/AssemblyInfo.cs index eb46e176..15cc733f 100644 --- a/Wabbajack/Properties/AssemblyInfo.cs +++ b/Wabbajack/Properties/AssemblyInfo.cs @@ -49,5 +49,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.3.0")] -[assembly: AssemblyFileVersion("1.0.3.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.4.0")] +[assembly: AssemblyFileVersion("1.0.4.0")] \ No newline at end of file From f33b018295c0bb942b9fc2a234e28a7c63b72a0f Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 15:20:05 -0600 Subject: [PATCH 7/9] add mediafire state to CerasConfig --- Wabbajack.Lib/CerasConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Wabbajack.Lib/CerasConfig.cs b/Wabbajack.Lib/CerasConfig.cs index 3525aea7..b536c3e3 100644 --- a/Wabbajack.Lib/CerasConfig.cs +++ b/Wabbajack.Lib/CerasConfig.cs @@ -22,7 +22,7 @@ namespace Wabbajack.Lib typeof(DropboxDownloader), typeof(GoogleDriveDownloader.State), typeof(HTTPDownloader.State), typeof(MegaDownloader.State), typeof(ModDBDownloader.State), typeof(NexusDownloader.State), typeof(BSAStateObject), typeof(BSAFileStateObject), typeof(BA2StateObject), typeof(BA2DX10EntryState), - typeof(BA2FileEntryState) + typeof(BA2FileEntryState), typeof(MediaFireDownloader.State) } }; } From d01636eff80fcbe6599deb18b9da7463255e01c5 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 17:20:41 -0600 Subject: [PATCH 8/9] set the install folder before checking ESMs --- Wabbajack.Lib/Installer.cs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Wabbajack.Lib/Installer.cs b/Wabbajack.Lib/Installer.cs index abf0a280..413eec98 100644 --- a/Wabbajack.Lib/Installer.cs +++ b/Wabbajack.Lib/Installer.cs @@ -98,6 +98,21 @@ namespace Wabbajack.Lib public void Install() { + var game = GameRegistry.Games[ModList.GameType]; + + if (GameFolder == null) + GameFolder = game.GameLocation; + + if (GameFolder == null) + { + MessageBox.Show( + $"In order to do a proper install Wabbajack needs to know where your {game.MO2Name} folder resides. We tried looking the" + + "game location up in the windows registry but were unable to find it, please make sure you launch the game once before running this installer. ", + "Could not find game location", MessageBoxButton.OK); + Utils.Log("Exiting because we couldn't find the game folder."); + return; + } + ValidateGameESMs(); ValidateModlist.RunValidation(ModList); @@ -119,20 +134,6 @@ namespace Wabbajack.Lib } } - var game = GameRegistry.Games[ModList.GameType]; - - if (GameFolder == null) - GameFolder = game.GameLocation; - - if (GameFolder == null) - { - MessageBox.Show( - $"In order to do a proper install Wabbajack needs to know where your {game.MO2Name} folder resides. We tried looking the" + - "game location up in the windows registry but were unable to find it, please make sure you launch the game once before running this installer. ", - "Could not find game location", MessageBoxButton.OK); - Utils.Log("Exiting because we couldn't find the game folder."); - return; - } HashArchives(); DownloadArchives(); From c95a4772215933d85494d421af081336f4a2597d Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Sat, 2 Nov 2019 17:23:47 -0600 Subject: [PATCH 9/9] bump version to alpha 5 --- CHANGELOG.md | 3 +++ Wabbajack/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68d0983d..5be0b507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ### Changelog +#### Version 1.0 alpha 5 - 11/2/2019 +* Fix a NPE exception with game ESM verification + #### Version 1.0 alpha 4 - 11/2/2019 * Reorganize steps so that we run zEdit merges before NOMATCH_INCLUDE * Look for hidden/optional ESMs when building zEdit plugins diff --git a/Wabbajack/Properties/AssemblyInfo.cs b/Wabbajack/Properties/AssemblyInfo.cs index 15cc733f..f6e7a7d2 100644 --- a/Wabbajack/Properties/AssemblyInfo.cs +++ b/Wabbajack/Properties/AssemblyInfo.cs @@ -49,5 +49,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.4.0")] -[assembly: AssemblyFileVersion("1.0.4.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.5.0")] +[assembly: AssemblyFileVersion("1.0.5.0")] \ No newline at end of file