diff options
author | Rob Mensching <rob@firegiant.com> | 2022-11-20 14:59:57 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-11-21 09:12:41 -0800 |
commit | e6ef75f3616f1221a43e3b412b42f9ca6a2bef7e (patch) | |
tree | 91dd483c78c24b96bde4026ed9772357b25cb882 /src | |
parent | 6ed066072db5bf15453da1f8da28f727ba46fc5b (diff) | |
download | wix-e6ef75f3616f1221a43e3b412b42f9ca6a2bef7e.tar.gz wix-e6ef75f3616f1221a43e3b412b42f9ca6a2bef7e.tar.bz2 wix-e6ef75f3616f1221a43e3b412b42f9ca6a2bef7e.zip |
Log error when path to executable cannot be found in MSBuild tool task
This is additional logging to try to track down the root cause of 7035.
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs | 47 | ||||
-rw-r--r-- | src/wix/WixToolset.BuildTasks/ReadTracking.cs | 2 |
2 files changed, 36 insertions, 13 deletions
diff --git a/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs b/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs index d9e3b5e8..6edd4a35 100644 --- a/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs +++ b/src/internal/WixInternal.BaseBuildTasks.Sources/BaseToolsetTask.cs | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace WixToolset.BaseBuildTasks | 3 | namespace WixToolset.BaseBuildTasks |
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Collections.Generic; | ||
6 | using System.IO; | 7 | using System.IO; |
7 | using System.Runtime.InteropServices; | 8 | using System.Runtime.InteropServices; |
8 | using Microsoft.Build.Utilities; | 9 | using Microsoft.Build.Utilities; |
@@ -129,24 +130,48 @@ namespace WixToolset.BaseBuildTasks | |||
129 | return false; | 130 | return false; |
130 | } | 131 | } |
131 | #else | 132 | #else |
132 | private static string GetArchitectureFolder(string baseFolder) | 133 | private string FindArchitectureSpecificToolPath(string baseFolder) |
133 | { | 134 | { |
135 | var checkedPaths = new List<string>(); | ||
136 | |||
134 | // First try to find a folder that matches this task's architecture. | 137 | // First try to find a folder that matches this task's architecture. |
135 | var folder = RuntimeInformation.ProcessArchitecture.ToString().ToLowerInvariant(); | 138 | var archFolder = RuntimeInformation.ProcessArchitecture.ToString().ToLowerInvariant(); |
139 | |||
140 | var path = Path.Combine(baseFolder, archFolder, this.ToolExe); | ||
141 | |||
142 | if (File.Exists(path)) | ||
143 | { | ||
144 | return path; | ||
145 | } | ||
146 | |||
147 | checkedPaths.Add(path); | ||
136 | 148 | ||
137 | if (Directory.Exists(Path.Combine(baseFolder, folder))) | 149 | // Try to fallback to "x86" folder since it tends to run on all architectures. |
150 | if (!String.Equals(archFolder, "x86", StringComparison.OrdinalIgnoreCase)) | ||
138 | { | 151 | { |
139 | return folder; | 152 | path = Path.Combine(baseFolder, "x86", this.ToolExe); |
153 | |||
154 | if (File.Exists(path)) | ||
155 | { | ||
156 | return path; | ||
157 | } | ||
158 | |||
159 | checkedPaths.Add(path); | ||
140 | } | 160 | } |
141 | 161 | ||
142 | // Try to fallback to "x86" folder. | 162 | // Return empty, even though this isn't likely to be there. |
143 | if (folder != "x86" && Directory.Exists(Path.Combine(baseFolder, "x86"))) | 163 | path = Path.Combine(baseFolder, this.ToolExe); |
164 | |||
165 | if (File.Exists(path)) | ||
144 | { | 166 | { |
145 | return "x86"; | 167 | return path; |
146 | } | 168 | } |
147 | 169 | ||
148 | // Return empty, even though this isn't likely to be useful. | 170 | checkedPaths.Add(path); |
149 | return String.Empty; | 171 | |
172 | this.Log.LogError("Cannot find tool executable {0} at any of the checked paths: {1}. This is unexpected and will cause later commands to fail.", this.ToolExe, String.Join(", ", checkedPaths)); | ||
173 | |||
174 | return path; | ||
150 | } | 175 | } |
151 | #endif | 176 | #endif |
152 | 177 | ||
@@ -159,9 +184,7 @@ namespace WixToolset.BaseBuildTasks | |||
159 | #else | 184 | #else |
160 | var thisTaskFolder = Path.GetDirectoryName(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).AbsolutePath); | 185 | var thisTaskFolder = Path.GetDirectoryName(new Uri(typeof(BaseToolsetTask).Assembly.CodeBase).AbsolutePath); |
161 | 186 | ||
162 | var archFolder = GetArchitectureFolder(thisTaskFolder); | 187 | return this.FindArchitectureSpecificToolPath(thisTaskFolder); |
163 | |||
164 | return Path.Combine(thisTaskFolder, archFolder, this.ToolExe); | ||
165 | #endif | 188 | #endif |
166 | } | 189 | } |
167 | 190 | ||
diff --git a/src/wix/WixToolset.BuildTasks/ReadTracking.cs b/src/wix/WixToolset.BuildTasks/ReadTracking.cs index f92baaf1..25215956 100644 --- a/src/wix/WixToolset.BuildTasks/ReadTracking.cs +++ b/src/wix/WixToolset.BuildTasks/ReadTracking.cs | |||
@@ -93,7 +93,7 @@ namespace WixToolset.BuildTasks | |||
93 | } | 93 | } |
94 | else | 94 | else |
95 | { | 95 | { |
96 | this.Log.LogError($"Failed to parse tracked line: {line}"); | 96 | this.Log.LogError("Failed to parse tracked line: {0}", line); |
97 | } | 97 | } |
98 | } | 98 | } |
99 | } | 99 | } |