diff options
author | Rob Mensching <rob@firegiant.com> | 2020-06-17 11:15:36 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2020-06-17 11:18:05 -0700 |
commit | 4e9640c569e8f05c990e148ad2674ff67611382a (patch) | |
tree | 4c40bb16f6f533a6b0bb4bf718880f898de94ab3 /src | |
parent | 467bb4c65f4f6ac97d5b98110f31f51b10e4ac38 (diff) | |
download | wix-4e9640c569e8f05c990e148ad2674ff67611382a.tar.gz wix-4e9640c569e8f05c990e148ad2674ff67611382a.tar.bz2 wix-4e9640c569e8f05c990e148ad2674ff67611382a.zip |
Change AssemblyNameReader to better match GetAsemblyIdentityFromFile()
Diffstat (limited to 'src')
-rw-r--r-- | src/WixToolset.Core.WindowsInstaller/Bind/AssemblyNameReader.cs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/AssemblyNameReader.cs b/src/WixToolset.Core.WindowsInstaller/Bind/AssemblyNameReader.cs index 2f38fc68..2103cd32 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/AssemblyNameReader.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/AssemblyNameReader.cs | |||
@@ -29,7 +29,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
29 | 29 | ||
30 | var name = ReadString(reader, assembly.Name); | 30 | var name = ReadString(reader, assembly.Name); |
31 | var culture = ReadString(reader, assembly.Culture); | 31 | var culture = ReadString(reader, assembly.Culture); |
32 | var architecture = headers.PEHeader.Magic == PEMagic.PE32Plus ? "AMD64" : (headers.CorHeader.Flags & CorFlags.Requires32Bit) == CorFlags.Requires32Bit ? "x86" : (headers.CorHeader.Flags & CorFlags.ILOnly) == CorFlags.ILOnly ? "MSIL" : null; | 32 | var architecture = ArchitectureFromHeaders(headers); |
33 | var version = assembly.Version.ToString(); | 33 | var version = assembly.Version.ToString(); |
34 | var publicKeyToken = ReadPublicKeyToken(reader, assembly.PublicKey); | 34 | var publicKeyToken = ReadPublicKeyToken(reader, assembly.PublicKey); |
35 | 35 | ||
@@ -144,6 +144,28 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
144 | return new AssemblyName(win32Name, null, win32Version, null, win32ProcessorArchitecture, win32PublicKeyToken, win32Type); | 144 | return new AssemblyName(win32Name, null, win32Version, null, win32ProcessorArchitecture, win32PublicKeyToken, win32Type); |
145 | } | 145 | } |
146 | 146 | ||
147 | private static string ArchitectureFromHeaders(PEHeaders headers) | ||
148 | { | ||
149 | if (headers.PEHeader.Magic == PEMagic.PE32Plus) | ||
150 | { | ||
151 | return "AMD64"; | ||
152 | } | ||
153 | else if ((headers.CorHeader.Flags & CorFlags.Requires32Bit) == CorFlags.Requires32Bit) | ||
154 | { | ||
155 | return "x86"; | ||
156 | } | ||
157 | else if ((headers.CorHeader.Flags & CorFlags.ILOnly) == CorFlags.ILOnly) | ||
158 | { | ||
159 | return "MSIL"; | ||
160 | } | ||
161 | else | ||
162 | { | ||
163 | // We return "x86" here because that seems to best match the Fusion-based | ||
164 | // GetAssemblyIdentityFromFile() method of acquiring the assembly identity. | ||
165 | return "x86"; | ||
166 | } | ||
167 | } | ||
168 | |||
147 | private static string ReadString(MetadataReader reader, StringHandle handle) | 169 | private static string ReadString(MetadataReader reader, StringHandle handle) |
148 | { | 170 | { |
149 | return handle.IsNil ? null : reader.GetString(handle); | 171 | return handle.IsNil ? null : reader.GetString(handle); |