diff options
author | Rob Mensching <rob@firegiant.com> | 2018-12-24 07:32:57 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2018-12-24 07:32:57 -0800 |
commit | 22672837ce4248778cbe3ad0b0056c3998a33a84 (patch) | |
tree | fec6788ce99274ce01982845ca62e795b62a0c5c /src | |
parent | f8b6183ed434ee9cb07d8adfa5ac660b1ae1cce3 (diff) | |
download | wix-22672837ce4248778cbe3ad0b0056c3998a33a84.tar.gz wix-22672837ce4248778cbe3ad0b0056c3998a33a84.tar.bz2 wix-22672837ce4248778cbe3ad0b0056c3998a33a84.zip |
Move wixnative.*.exe in Core.Native.nupkg into arch folder
Moving the native executable to a subdirectory in the Core.Native to
avoid NuGet warning about non-managed code files in "lib" folder.
Also, better support NCrunch by ignoring wixnative.exe
Diffstat (limited to 'src')
-rw-r--r-- | src/WixToolset.Core.Native/WixNativeExe.cs | 36 | ||||
-rw-r--r-- | src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec | 8 | ||||
-rw-r--r-- | src/wixnative/wixnative.v3.ncrunchproject | 5 |
3 files changed, 35 insertions, 14 deletions
diff --git a/src/WixToolset.Core.Native/WixNativeExe.cs b/src/WixToolset.Core.Native/WixNativeExe.cs index 90ab0042..3bd340bc 100644 --- a/src/WixToolset.Core.Native/WixNativeExe.cs +++ b/src/WixToolset.Core.Native/WixNativeExe.cs | |||
@@ -12,16 +12,12 @@ namespace WixToolset.Core.Native | |||
12 | internal class WixNativeExe | 12 | internal class WixNativeExe |
13 | { | 13 | { |
14 | private const int FiveMinutesInMilliseconds = 300000; | 14 | private const int FiveMinutesInMilliseconds = 300000; |
15 | private static readonly string PathToWixNativeExe; | 15 | private static readonly object PathToWixNativeExeLock = new object(); |
16 | private static string PathToWixNativeExe; | ||
16 | 17 | ||
17 | private readonly string commandLine; | 18 | private readonly string commandLine; |
18 | private readonly List<string> stdinLines = new List<string>(); | 19 | private readonly List<string> stdinLines = new List<string>(); |
19 | 20 | ||
20 | static WixNativeExe() | ||
21 | { | ||
22 | PathToWixNativeExe = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), "wixnative.x86.exe"); | ||
23 | } | ||
24 | |||
25 | public WixNativeExe(params object[] args) | 21 | public WixNativeExe(params object[] args) |
26 | { | 22 | { |
27 | this.commandLine = String.Join(" ", QuoteArgumentsAsNecesary(args)); | 23 | this.commandLine = String.Join(" ", QuoteArgumentsAsNecesary(args)); |
@@ -39,10 +35,7 @@ namespace WixToolset.Core.Native | |||
39 | 35 | ||
40 | public IEnumerable<string> Run() | 36 | public IEnumerable<string> Run() |
41 | { | 37 | { |
42 | if (!File.Exists(PathToWixNativeExe)) | 38 | EnsurePathToWixNativeExeSet(); |
43 | { | ||
44 | throw new FileNotFoundException($"Could not find internal piece of WiX Toolset at: {PathToWixNativeExe}", PathToWixNativeExe); | ||
45 | } | ||
46 | 39 | ||
47 | var wixNativeInfo = new ProcessStartInfo(PathToWixNativeExe, this.commandLine) | 40 | var wixNativeInfo = new ProcessStartInfo(PathToWixNativeExe, this.commandLine) |
48 | { | 41 | { |
@@ -88,6 +81,29 @@ namespace WixToolset.Core.Native | |||
88 | return stdoutLines; | 81 | return stdoutLines; |
89 | } | 82 | } |
90 | 83 | ||
84 | private static void EnsurePathToWixNativeExeSet() | ||
85 | { | ||
86 | lock (PathToWixNativeExeLock) | ||
87 | { | ||
88 | if (String.IsNullOrEmpty(PathToWixNativeExe)) | ||
89 | { | ||
90 | var path = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), @"x86\wixnative.x86.exe"); | ||
91 | |||
92 | if (!File.Exists(path)) | ||
93 | { | ||
94 | path = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), "wixnative.x86.exe"); | ||
95 | |||
96 | if (!File.Exists(path)) | ||
97 | { | ||
98 | throw new FileNotFoundException($"Could not find internal piece of WiX Toolset at: {path}", path); | ||
99 | } | ||
100 | } | ||
101 | |||
102 | PathToWixNativeExe = path; | ||
103 | } | ||
104 | } | ||
105 | } | ||
106 | |||
91 | private static IEnumerable<string> QuoteArgumentsAsNecesary(object[] args) | 107 | private static IEnumerable<string> QuoteArgumentsAsNecesary(object[] args) |
92 | { | 108 | { |
93 | foreach (var arg in args) | 109 | foreach (var arg in args) |
diff --git a/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec b/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec index 195ea7b6..a99c5ec3 100644 --- a/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec +++ b/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec | |||
@@ -28,9 +28,9 @@ | |||
28 | These native executables are included in this .nupkg to place the .exe correctly for tests to work. | 28 | These native executables are included in this .nupkg to place the .exe correctly for tests to work. |
29 | That are ignored when published. The dependency above is used when publishing the tools. | 29 | That are ignored when published. The dependency above is used when publishing the tools. |
30 | --> | 30 | --> |
31 | <file src="..\Win32\wixnative.x86.exe" target="lib\netstandard2.0" /> | 31 | <file src="..\Win32\wixnative.x86.exe" target="lib\netstandard2.0\x86" /> |
32 | <file src="..\Win32\wixnative.x86.pdb" target="lib\netstandard2.0" /> | 32 | <file src="..\Win32\wixnative.x86.pdb" target="lib\netstandard2.0\x86" /> |
33 | <file src="..\x64\wixnative.amd64.exe" target="lib\netstandard2.0" /> | 33 | <file src="..\x64\wixnative.amd64.exe" target="lib\netstandard2.0\amd64" /> |
34 | <file src="..\x64\wixnative.amd64.pdb" target="lib\netstandard2.0" /> | 34 | <file src="..\x64\wixnative.amd64.pdb" target="lib\netstandard2.0\amd64" /> |
35 | </files> | 35 | </files> |
36 | </package> | 36 | </package> |
diff --git a/src/wixnative/wixnative.v3.ncrunchproject b/src/wixnative/wixnative.v3.ncrunchproject new file mode 100644 index 00000000..319cd523 --- /dev/null +++ b/src/wixnative/wixnative.v3.ncrunchproject | |||
@@ -0,0 +1,5 @@ | |||
1 | <ProjectConfiguration> | ||
2 | <Settings> | ||
3 | <IgnoreThisComponentCompletely>True</IgnoreThisComponentCompletely> | ||
4 | </Settings> | ||
5 | </ProjectConfiguration> \ No newline at end of file | ||