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]