From 2245144eb5923eca93bd16c7892eb4670a51e10a Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 21 Nov 2022 11:59:19 -0800 Subject: Handle spaces when finding path to executables in MSBuild task Fixes 7035 --- src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs | 4 ++-- src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs | 2 +- src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs | 2 +- src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs b/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs index 6edd4a35..56277912 100644 --- a/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs +++ b/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs @@ -178,11 +178,11 @@ namespace WixToolset.BaseBuildTasks private string GetDefaultToolFullPath() { #if NETCOREAPP - var thisTaskFolder = Path.GetDirectoryName(typeof(BaseToolsetTask).Assembly.Location); + var thisTaskFolder = Path.GetDirectoryName(Path.GetFullPath(typeof(BaseToolsetTask).Assembly.Location)); return Path.Combine(thisTaskFolder, this.ToolExe); #else - var thisTaskFolder = Path.GetDirectoryName(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).AbsolutePath); + var thisTaskFolder = Path.GetDirectoryName(Path.GetFullPath(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).LocalPath)); return this.FindArchitectureSpecificToolPath(thisTaskFolder); #endif diff --git a/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs index 1b7e1a32..cea76712 100644 --- a/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs +++ b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs @@ -13,7 +13,7 @@ namespace WixToolsetTest.Sdk public class MsbuildHeatFixture { - public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets"); + public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets"); public MsbuildHeatFixture() { diff --git a/src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs b/src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs index 3d110b81..3709130b 100644 --- a/src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs +++ b/src/wix/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs @@ -15,7 +15,7 @@ namespace WixToolsetTest.BuildTasks public class WixBuildTaskFixture { - public static readonly string PublishedWixSdkToolsFolder = Path.Combine(Path.GetDirectoryName(new Uri(typeof(WixBuildTaskFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Sdk", "tools"); + public static readonly string PublishedWixSdkToolsFolder = Path.Combine(Path.GetDirectoryName(new Uri(typeof(WixBuildTaskFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Sdk", "tools"); // 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 // 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. diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index 845df9be..a259298c 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs @@ -11,7 +11,7 @@ namespace WixToolsetTest.Sdk public class MsbuildFixture { - public static readonly string WixMsbuildPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Sdk"); + public static readonly string WixMsbuildPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Sdk"); public static readonly string WixPropsPath = Path.Combine(WixMsbuildPath, "build", "WixToolset.Sdk.props"); [Theory] -- cgit v1.2.3-55-g6feb