[4/5] fusion: Add support for enumerating version 4.0 assemblies.
Hans Leidekker
hans at codeweavers.com
Mon May 21 04:25:43 CDT 2012
---
dlls/fusion/asmenum.c | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/dlls/fusion/asmenum.c b/dlls/fusion/asmenum.c
index 52229a8..e4f73e8 100644
--- a/dlls/fusion/asmenum.c
+++ b/dlls/fusion/asmenum.c
@@ -382,32 +382,50 @@ static HRESULT enum_gac_assemblies(struct list *assemblies, IAssemblyName *name,
static HRESULT enumerate_gac(IAssemblyEnumImpl *asmenum, IAssemblyName *pName)
{
- WCHAR path[MAX_PATH];
- WCHAR buf[MAX_PATH];
+ static const WCHAR gac[] = {'\\','G','A','C',0};
+ static const WCHAR gac_32[] = {'\\','G','A','C','_','3','2',0};
+ static const WCHAR gac_msil[] = {'\\','G','A','C','_','M','S','I','L',0};
+ WCHAR path[MAX_PATH], buf[MAX_PATH];
HRESULT hr;
DWORD size;
- static WCHAR under32[] = {'_','3','2',0};
- static WCHAR msil[] = {'_','M','S','I','L',0};
+ size = MAX_PATH;
+ hr = GetCachePath(ASM_CACHE_ROOT_EX, buf, &size);
+ if (FAILED(hr))
+ return hr;
+
+ strcpyW(path, buf);
+ strcpyW(path + size - 1, gac_32);
+ hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, path);
+ if (FAILED(hr))
+ return hr;
+
+ strcpyW(path, buf);
+ strcpyW(path + size - 1, gac_msil);
+ hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, path);
+ if (FAILED(hr))
+ return hr;
size = MAX_PATH;
- hr = GetCachePath(ASM_CACHE_GAC, buf, &size);
+ hr = GetCachePath(ASM_CACHE_ROOT, buf, &size);
if (FAILED(hr))
return hr;
- lstrcpyW(path, buf);
- lstrcatW(path, under32);
+ strcpyW(path, buf);
+ strcpyW(path + size - 1, gac_32);
hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, path);
if (FAILED(hr))
return hr;
- lstrcpyW(path, buf);
- lstrcatW(path, msil);
+ strcpyW(path, buf);
+ strcpyW(path + size - 1, gac_msil);
hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, path);
if (FAILED(hr))
return hr;
- hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, buf);
+ strcpyW(path, buf);
+ strcpyW(path + size - 1, gac);
+ hr = enum_gac_assemblies(&asmenum->assemblies, pName, 0, path);
if (FAILED(hr))
return hr;
--
1.7.10
More information about the wine-patches
mailing list