@joebigelow / wix / commits / 2245144e

Handle spaces when finding path to executables in MSBuild task

Fixes 7035

Rob Mensching committed Nov 21, 2022 at 11:59 UTC 2245144eb5923eca93bd16c7892eb4670a51e10a
4 files changed +5 -5
src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs
+2 -2
@@ -178,11 +178,11 @@ namespace WixToolset.BaseBuildTasks
178 private string GetDefaultToolFullPath()
179 {
180 #if NETCOREAPP
181 - var thisTaskFolder = Path.GetDirectoryName(typeof(BaseToolsetTask).Assembly.Location);
181 + var thisTaskFolder = Path.GetDirectoryName(Path.GetFullPath(typeof(BaseToolsetTask).Assembly.Location));
182
183 return Path.Combine(thisTaskFolder, this.ToolExe);
184 #else
185 - var thisTaskFolder = Path.GetDirectoryName(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).AbsolutePath);
185 + var thisTaskFolder = Path.GetDirectoryName(Path.GetFullPath(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).LocalPath));
186
187 return this.FindArchitectureSpecificToolPath(thisTaskFolder);
188 #endif
src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
+1 -1
@@ -13,7 +13,7 @@ namespace WixToolsetTest.Sdk
13
14 public class MsbuildHeatFixture
15 {
16 - public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets");
16 + public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets");
17
18 public MsbuildHeatFixture()
19 {
src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs
+1 -1
@@ -15,7 +15,7 @@ namespace WixToolsetTest.BuildTasks
15
16 public class WixBuildTaskFixture
17 {
18 - public static readonly string PublishedWixSdkToolsFolder = Path.Combine(Path.GetDirectoryName(new Uri(typeof(WixBuildTaskFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Sdk", "tools");
18 + public static readonly string PublishedWixSdkToolsFolder = Path.Combine(Path.GetDirectoryName(new Uri(typeof(WixBuildTaskFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Sdk", "tools");
19
20 // This line replicates what happens in WixBuild task when hosted in the PublishedWixSdkToolsFolder. However, WixBuild task is hosted inproc to this test assembly so the
21 // root folder is relative to the test assembly's folder which does not have wix.exe local. So, we have to find wix.exe relative to PublishedWixSdkToolsFolder.
src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
+1 -1
@@ -11,7 +11,7 @@ namespace WixToolsetTest.Sdk
11
12 public class MsbuildFixture
13 {
14 - public static readonly string WixMsbuildPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Sdk");
14 + public static readonly string WixMsbuildPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Sdk");
15 public static readonly string WixPropsPath = Path.Combine(WixMsbuildPath, "build", "WixToolset.Sdk.props");
16
17 [Theory]