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