[PATCH 0/1] MR8912: msi: Allow pre-2.0 assemblies to be installed using 2.0 fusion.
From: Hans Leidekker <hans(a)codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51345 --- dlls/msi/assembly.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/dlls/msi/assembly.c b/dlls/msi/assembly.c index bec2fc629b5..6f386d64a88 100644 --- a/dlls/msi/assembly.c +++ b/dlls/msi/assembly.c @@ -290,14 +290,6 @@ IAssemblyEnum *msi_create_assembly_enum( const WCHAR *displayname ) return ret; } -static const WCHAR *clr_version[] = -{ - L"v1.0.3705", - L"v1.2.4322", - L"v2.0.50727", - L"v4.0.30319" -}; - MSIASSEMBLY *msi_load_assembly( MSIPACKAGE *package, MSICOMPONENT *comp ) { MSIRECORD *rec; @@ -337,7 +329,15 @@ MSIASSEMBLY *msi_load_assembly( MSIPACKAGE *package, MSICOMPONENT *comp ) return a; } -static enum clr_version get_clr_version( MSIPACKAGE *package, const WCHAR *filename ) +static const WCHAR *clr_version[] = +{ + L"v1.0.3705", + L"v1.2.4322", + L"v2.0.50727", + L"v4.0.30319" +}; + +static enum clr_version get_clr_version( const WCHAR *filename ) { DWORD len; HRESULT hr; @@ -362,6 +362,14 @@ static enum clr_version get_clr_version( MSIPACKAGE *package, const WCHAR *filen return version; } +static IAssemblyCache *get_net_cache( enum clr_version version ) +{ + int i; + if (version == CLR_VERSION_V40) return cache_net[CLR_VERSION_V40]; + for (i = CLR_VERSION_V20; i >= CLR_VERSION_V10; i--) if (cache_net[i]) return cache_net[i]; + return NULL; +} + UINT msi_install_assembly( MSIPACKAGE *package, MSICOMPONENT *comp ) { HRESULT hr; @@ -393,7 +401,7 @@ UINT msi_install_assembly( MSIPACKAGE *package, MSICOMPONENT *comp ) else { manifest = msi_get_loaded_file( package, comp->KeyPath )->TargetPath; - cache = cache_net[get_clr_version( package, manifest )]; + cache = get_net_cache( get_clr_version(manifest) ); if (!cache) return ERROR_SUCCESS; } TRACE("installing assembly %s\n", debugstr_w(manifest)); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8912
participants (2)
-
Hans Leidekker -
Hans Leidekker (@hans)