Escape a trailing backslash in args to wixnative.exe
Fixes 7294
Rob Mensching committed
Mar 22, 2023 at 22:41 UTC
2426cee1fc8c6e809c5a37abdf9d722a6e8e3a33
2 files changed
+13
-7
src/wix/WixToolset.Core.Native/WixNativeExe.cs
+6
@@ -113,6 +113,12 @@ namespace WixToolset.Core.Native
113
}
114
else if (str.Contains(" ") && !str.StartsWith("\""))
115
{
116
+ // Escape a trailing backslash with another backslash if quoting the path.
117
+ if (str.EndsWith("\\", StringComparison.Ordinal))
118
+ {
119
+ str += "\\";
120
+ }
121
+
122
yield return $"\"{str}\"";
123
}
124
else
src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs
+7
-7
@@ -50,14 +50,14 @@ namespace WixToolsetTest.CoreIntegration
50
[Fact]
51
public void CanMergeModuleAndValidate()
52
{
53
- var msmFolder = TestData.Get(@"TestData\SimpleModule");
54
- var folder = TestData.Get(@"TestData\SimpleMerge");
53
+ var msmFolder = TestData.Get("TestData", "SimpleModule");
54
+ var folder = TestData.Get("TestData", "SimpleMerge");
55
56
using (var fs = new DisposableFileSystem())
57
{
58
- var intermediateFolder = fs.GetFolder();
59
- var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi");
60
- var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab");
58
+ var intermediateFolder = Path.Combine(fs.GetFolder(), "path with spaces");
59
+ var msiPath = Path.Combine(intermediateFolder, "bin", "test.msi");
60
+ var cabPath = Path.Combine(intermediateFolder, "bin", "cab1.cab");
61
62
var msmResult = WixRunner.Execute(new[]
63
{
@@ -83,11 +83,11 @@ namespace WixToolsetTest.CoreIntegration
83
84
result.AssertSuccess();
85
86
- var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
86
+ var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, "bin", "test.wixpdb"));
87
var section = intermediate.Sections.Single();
88
Assert.Empty(section.Symbols.OfType<FileSymbol>());
89
90
- var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
90
+ var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, "bin", "test.wixpdb"));
91
Assert.Empty(data.Tables["File"].Rows);
92
93
var results = Query.QueryDatabase(msiPath, new[] { "File" });