aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-05-09 21:08:49 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-05-09 21:11:56 +1000
commit670075995cf1b78d0a66e1a7678fd2facc8958ff (patch)
treedf7f699b85e34bb8f487fdad64aaaa9cb8dbfe9f
parentdf6e15e2b026f8a419fb275c0b50c9d3b3298859 (diff)
downloadwix-670075995cf1b78d0a66e1a7678fd2facc8958ff.tar.gz
wix-670075995cf1b78d0a66e1a7678fd2facc8958ff.tar.bz2
wix-670075995cf1b78d0a66e1a7678fd2facc8958ff.zip
Use NATIVE_DLL_SEARCH_DIRECTORIES to support cross-platform wixnative.exe
-rw-r--r--src/WixToolset.Core.Native/WixNativeExe.cs21
-rw-r--r--src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec4
-rw-r--r--src/wixnative/runtime.win.WixToolset.Core.Native.nuspec8
-rw-r--r--src/wixnative/wixnative.vcxproj7
4 files changed, 26 insertions, 14 deletions
diff --git a/src/WixToolset.Core.Native/WixNativeExe.cs b/src/WixToolset.Core.Native/WixNativeExe.cs
index 935c2a89..063485d3 100644
--- a/src/WixToolset.Core.Native/WixNativeExe.cs
+++ b/src/WixToolset.Core.Native/WixNativeExe.cs
@@ -11,6 +11,7 @@ namespace WixToolset.Core.Native
11 11
12 internal class WixNativeExe 12 internal class WixNativeExe
13 { 13 {
14 private const string WixNativeExeFileName = "wixnative.exe";
14 private static string PathToWixNativeExe; 15 private static string PathToWixNativeExe;
15 16
16 private readonly string commandLine; 17 private readonly string commandLine;
@@ -80,7 +81,25 @@ namespace WixToolset.Core.Native
80 { 81 {
81 if (String.IsNullOrEmpty(PathToWixNativeExe)) 82 if (String.IsNullOrEmpty(PathToWixNativeExe))
82 { 83 {
83 var path = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), "wixnative.x86.exe"); 84 var path = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), WixNativeExeFileName);
85
86 if (!File.Exists(path))
87 {
88 var searchDirectoriesString = AppContext.GetData("NATIVE_DLL_SEARCH_DIRECTORIES") as string;
89 var searchDirectories = searchDirectoriesString?.Split(';');
90 if (searchDirectories != null)
91 {
92 foreach (string directoryPath in searchDirectories)
93 {
94 var possiblePath = Path.Combine(directoryPath, WixNativeExeFileName);
95 if (File.Exists(possiblePath))
96 {
97 path = possiblePath;
98 break;
99 }
100 }
101 }
102 }
84 103
85 if (!File.Exists(path)) 104 if (!File.Exists(path))
86 { 105 {
diff --git a/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec b/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec
index 195ea7b6..1ff5538b 100644
--- a/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec
+++ b/src/WixToolset.Core.Native/WixToolset.Core.Native.nuspec
@@ -25,12 +25,10 @@
25 <file src="$id$.dll" target="lib\netstandard2.0" /> 25 <file src="$id$.dll" target="lib\netstandard2.0" />
26 26
27 <!-- 27 <!--
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.
30 -->
31 <file src="..\Win32\wixnative.x86.exe" target="lib\netstandard2.0" /> 28 <file src="..\Win32\wixnative.x86.exe" target="lib\netstandard2.0" />
32 <file src="..\Win32\wixnative.x86.pdb" target="lib\netstandard2.0" /> 29 <file src="..\Win32\wixnative.x86.pdb" target="lib\netstandard2.0" />
33 <file src="..\x64\wixnative.amd64.exe" target="lib\netstandard2.0" /> 30 <file src="..\x64\wixnative.amd64.exe" target="lib\netstandard2.0" />
34 <file src="..\x64\wixnative.amd64.pdb" target="lib\netstandard2.0" /> 31 <file src="..\x64\wixnative.amd64.pdb" target="lib\netstandard2.0" />
32 -->
35 </files> 33 </files>
36</package> 34</package>
diff --git a/src/wixnative/runtime.win.WixToolset.Core.Native.nuspec b/src/wixnative/runtime.win.WixToolset.Core.Native.nuspec
index f7697694..59eff4e6 100644
--- a/src/wixnative/runtime.win.WixToolset.Core.Native.nuspec
+++ b/src/wixnative/runtime.win.WixToolset.Core.Native.nuspec
@@ -14,9 +14,9 @@
14 </metadata> 14 </metadata>
15 15
16 <files> 16 <files>
17 <file src="Win32\wixnative.x86.exe" target="runtimes\win-x86\native" /> 17 <file src="Win32\wixnative.exe" target="runtimes\win-x86\native" />
18 <file src="Win32\wixnative.x86.pdb" target="runtimes\win-x86\native" /> 18 <file src="Win32\wixnative.pdb" target="runtimes\win-x86\native" />
19 <file src="x64\wixnative.amd64.exe" target="runtimes\win-x64\native" /> 19 <file src="x64\wixnative.exe" target="runtimes\win-x64\native" />
20 <file src="x64\wixnative.amd64.pdb" target="runtimes\win-x64\native" /> 20 <file src="x64\wixnative.pdb" target="runtimes\win-x64\native" />
21 </files> 21 </files>
22</package> 22</package>
diff --git a/src/wixnative/wixnative.vcxproj b/src/wixnative/wixnative.vcxproj
index 1c1c9010..57afcc0b 100644
--- a/src/wixnative/wixnative.vcxproj
+++ b/src/wixnative/wixnative.vcxproj
@@ -23,16 +23,11 @@
23 </ProjectConfiguration> 23 </ProjectConfiguration>
24 </ItemGroup> 24 </ItemGroup>
25 25
26 <PropertyGroup>
27 <NameSuffix Condition=" '$(Platform)'=='Win32' ">x86</NameSuffix>
28 <NameSuffix Condition=" '$(Platform)'=='x64' ">amd64</NameSuffix>
29 </PropertyGroup>
30
31 <PropertyGroup Label="Globals"> 26 <PropertyGroup Label="Globals">
32 <ProjectGuid>{8497EC72-B8D0-4272-A9D0-7E9D871CEFBF}</ProjectGuid> 27 <ProjectGuid>{8497EC72-B8D0-4272-A9D0-7E9D871CEFBF}</ProjectGuid>
33 <ConfigurationType>Application</ConfigurationType> 28 <ConfigurationType>Application</ConfigurationType>
34 <ProjectSubSystem>Console</ProjectSubSystem> 29 <ProjectSubSystem>Console</ProjectSubSystem>
35 <TargetName>wixnative.$(NameSuffix)</TargetName> 30 <TargetName>wixnative</TargetName>
36 <PlatformToolset>v141</PlatformToolset> 31 <PlatformToolset>v141</PlatformToolset>
37 <CharacterSet>Unicode</CharacterSet> 32 <CharacterSet>Unicode</CharacterSet>
38 <Description>Native component of WixToolset.Core</Description> 33 <Description>Native component of WixToolset.Core</Description>