diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-30 12:16:27 +1000 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-30 23:06:26 +1000 |
commit | 223b2845955d4d6604cfd014cf9aa536ca1eb0a2 (patch) | |
tree | d54dfd97dfd0fa2b892b5eec087431e167de18a1 /src/WixBuildTools.TestSupport/VswhereRunner.cs | |
parent | 2ab17d9c527629fa70ee4dec81bd0050e1b27f31 (diff) | |
download | wix-223b2845955d4d6604cfd014cf9aa536ca1eb0a2.tar.gz wix-223b2845955d4d6604cfd014cf9aa536ca1eb0a2.tar.bz2 wix-223b2845955d4d6604cfd014cf9aa536ca1eb0a2.zip |
Add ability to run 64-bit msbuild.
Diffstat (limited to 'src/WixBuildTools.TestSupport/VswhereRunner.cs')
-rw-r--r-- | src/WixBuildTools.TestSupport/VswhereRunner.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/WixBuildTools.TestSupport/VswhereRunner.cs b/src/WixBuildTools.TestSupport/VswhereRunner.cs new file mode 100644 index 00000000..0197e125 --- /dev/null +++ b/src/WixBuildTools.TestSupport/VswhereRunner.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixBuildTools.TestSupport | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | |||
8 | public class VswhereRunner : ExternalExecutable | ||
9 | { | ||
10 | private static readonly string VswhereRelativePath = @"Microsoft Visual Studio\Installer\vswhere.exe"; | ||
11 | |||
12 | private static readonly object InitLock = new object(); | ||
13 | private static bool Initialized; | ||
14 | private static VswhereRunner Instance; | ||
15 | |||
16 | public static ExternalExecutableResult Execute(string args, bool mergeErrorIntoOutput = false) => | ||
17 | InitAndExecute(args, mergeErrorIntoOutput); | ||
18 | |||
19 | private static ExternalExecutableResult InitAndExecute(string args, bool mergeErrorIntoOutput) | ||
20 | { | ||
21 | lock (InitLock) | ||
22 | { | ||
23 | if (!Initialized) | ||
24 | { | ||
25 | Initialized = true; | ||
26 | var vswherePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), VswhereRelativePath); | ||
27 | if (!File.Exists(vswherePath)) | ||
28 | { | ||
29 | throw new InvalidOperationException($"Failed to find vswhere at: {vswherePath}"); | ||
30 | } | ||
31 | |||
32 | Instance = new VswhereRunner(vswherePath); | ||
33 | } | ||
34 | } | ||
35 | |||
36 | return Instance.Run(args, mergeErrorIntoOutput); | ||
37 | } | ||
38 | |||
39 | private VswhereRunner(string exePath) : base(exePath) { } | ||
40 | } | ||
41 | } | ||