diff --git a/Wabbajack.Common/Utils.cs b/Wabbajack.Common/Utils.cs index 275243d1..c78c26a2 100644 --- a/Wabbajack.Common/Utils.cs +++ b/Wabbajack.Common/Utils.cs @@ -928,5 +928,12 @@ namespace Wabbajack.Common var decoded = ProtectedData.Unprotect(bytes, Encoding.UTF8.GetBytes(key), DataProtectionScope.LocalMachine); return Encoding.UTF8.GetString(decoded).FromJSONString(); } + + public static bool IsInPath(this string path, string parent) + { + return path.ToLower().TrimEnd('\\').StartsWith(parent.ToLower().TrimEnd('\\') + "\\"); + } + + } } diff --git a/Wabbajack.Lib/AInstaller.cs b/Wabbajack.Lib/AInstaller.cs index b122c472..a40f81e2 100644 --- a/Wabbajack.Lib/AInstaller.cs +++ b/Wabbajack.Lib/AInstaller.cs @@ -348,10 +348,8 @@ namespace Wabbajack.Lib { var relative_to = f.RelativeTo(OutputFolder); Utils.Status($"Checking if modlist file {relative_to}"); - if (indexed.ContainsKey(relative_to) || f.StartsWith(DownloadFolder + Path.DirectorySeparator)) - { + if (indexed.ContainsKey(relative_to) || f.IsInPath(DownloadFolder)) return; - } Utils.Log($"Deleting {relative_to} it's not part of this modlist"); File.Delete(f); diff --git a/Wabbajack.Test/UtilsTests.cs b/Wabbajack.Test/UtilsTests.cs new file mode 100644 index 00000000..cd913a43 --- /dev/null +++ b/Wabbajack.Test/UtilsTests.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Wabbajack.Common; + +namespace Wabbajack.Test +{ + [TestClass] + public class UtilsTests + { + [TestMethod] + public void IsInPathTests() + { + Assert.IsTrue("c:\\foo\\bar.exe".IsInPath("c:\\foo")); + Assert.IsFalse("c:\\foo\\bar.exe".IsInPath("c:\\fo")); + Assert.IsTrue("c:\\Foo\\bar.exe".IsInPath("c:\\foo")); + Assert.IsTrue("c:\\foo\\bar.exe".IsInPath("c:\\Foo")); + Assert.IsTrue("c:\\foo\\bar.exe".IsInPath("c:\\fOo")); + Assert.IsTrue("c:\\foo\\bar.exe".IsInPath("c:\\foo\\")); + Assert.IsTrue("c:\\foo\\bar\\".IsInPath("c:\\foo\\")); + } + } +} diff --git a/Wabbajack.Test/Wabbajack.Test.csproj b/Wabbajack.Test/Wabbajack.Test.csproj index d95eeaa3..3bbe3d94 100644 --- a/Wabbajack.Test/Wabbajack.Test.csproj +++ b/Wabbajack.Test/Wabbajack.Test.csproj @@ -112,6 +112,7 @@ +