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 | ||
