As I pointed to rafalh, we don't need a diff here.
The comctl32 source has comctl32.manifest file which needs to be copied in
winsxs with the correct name.
Other dlls need the same. (for example gdiplus)
Kind regards,
Sylvain Petreolle
>________________________________
> De : Timo Kreuzer <[email protected]>
>À : [email protected]
>Envoyé le : Mardi 13 mars 2012 13h18
>Objet : Re: [ros-dev] [ros-diffs] [rharabien] 56132: [COMCTL32] - When
>installing dll copy manifest to winsxs\manifests directory as comctl32 before
>sync did. Fixes Firefox 10 regression. See issue #6910 for more details.
>
>I would prefer if ros specific code would be seperated as much as
>possible to avoid huge diff files.
>The bigger the diff file, the more likely it will cause issues in the
>next sync.
>
>
>Am 12.03.2012 15:16, schrieb [email protected]:
>> Author: rharabien
>> Date: Mon Mar 12 14:16:58 2012
>> New Revision: 56132
>>
>> URL: http://svn.reactos.org/svn/reactos?rev=56132&view=rev
>> Log:
>> [COMCTL32]
>> - When installing dll copy manifest to winsxs\manifests directory as
>> comctl32 before sync did. Fixes Firefox 10 regression.
>> See issue #6910 for more details.
>>
>> Modified:
>> trunk/reactos/dll/win32/comctl32/commctrl.c
>>
>> Modified: trunk/reactos/dll/win32/comctl32/commctrl.c
>> URL:
>> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/commctrl.c?rev=56132&r1=56131&r2=56132&view=diff
>> ==============================================================================
>> --- trunk/reactos/dll/win32/comctl32/commctrl.c [iso-8859-1] (original)
>> +++ trunk/reactos/dll/win32/comctl32/commctrl.c [iso-8859-1] Mon Mar 12
>> 14:16:58 2012
>> @@ -71,6 +71,19 @@
>>
>> WINE_DEFAULT_DEBUG_CHANNEL(commctrl);
>>
>> +#define NAME L"microsoft.windows.common-controls"
>> +#define VERSION L"6.0.2600.2982"
>> +#define PUBLIC_KEY L"6595b64144ccf1df"
>> +
>> +#ifdef __i386__
>> +#define ARCH L"x86"
>> +#elif defined __x86_64__
>> +#define ARCH L"amd64"
>> +#else
>> +#define ARCH L"none"
>> +#endif
>> +
>> +static const WCHAR manifest_filename[] = ARCH L"_" NAME L"_" PUBLIC_KEY
>> L"_" VERSION L"_none_deadbeef.manifest";
>>
>> static LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM
>>wParam, LPARAM lParam);
>>
>> @@ -91,6 +104,67 @@
>> static const WCHAR strCC32SubclassInfo[] = {
>> 'C','C','3','2','S','u','b','c','l','a','s','s','I','n','f','o',0
>> };
>> +
>> +static BOOL create_manifest(BOOL install)
>> +{
>> + WCHAR *pwszBuf;
>> + HRSRC hResInfo;
>> + HGLOBAL hResData;
>> + PVOID pManifest;
>> + DWORD cchBuf, cbManifest, cbWritten;
>> + HANDLE hFile;
>> + BOOL bRet = FALSE;
>> +
>> + hResInfo = FindResourceW(COMCTL32_hModule, L"WINE_MANIFEST",
>> RT_MANIFEST);
>> + if (!hResInfo)
>> + return FALSE;
>> +
>> + cbManifest = SizeofResource(COMCTL32_hModule, hResInfo);
>> + if (!cbManifest)
>> + return FALSE;
>> +
>> + hResData = LoadResource(COMCTL32_hModule, hResInfo);
>> + if (!hResData)
>> + return FALSE;
>> +
>> + pManifest = LockResource(hResData);
>> + if (!pManifest)
>> + return FALSE;
>> +
>> + cchBuf = GetWindowsDirectoryW(NULL, 0) * sizeof(WCHAR) +
>> sizeof(L"\\winsxs\\manifests\\") + sizeof(manifest_filename);
>> + pwszBuf = (WCHAR*)HeapAlloc(GetProcessHeap(), 0, cchBuf *
>> sizeof(WCHAR));
>> + if (!pwszBuf)
>> + return FALSE;
>> +
>> + GetWindowsDirectoryW(pwszBuf, cchBuf);
>> + lstrcatW(pwszBuf, L"\\winsxs");
>> + CreateDirectoryW(pwszBuf, NULL);
>> + lstrcatW(pwszBuf, L"\\manifests\\");
>> + CreateDirectoryW(pwszBuf, NULL);
>> + lstrcatW(pwszBuf, manifest_filename);
>> + if (install)
>> + {
>> + hFile = CreateFileW(pwszBuf, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
>> 0, NULL);
>> + if (hFile != INVALID_HANDLE_VALUE)
>> + {
>> + if (WriteFile(hFile, pManifest, cbManifest,&cbWritten, NULL)&&
>> cbWritten == cbManifest)
>> + bRet = TRUE;
>> +
>> + CloseHandle(hFile);
>> +
>> + if (!bRet)
>> + DeleteFileW(pwszBuf);
>> + else
>> + TRACE("created %s\n", debugstr_w(pwszBuf));
>> + }
>> + }
>> + else
>> + bRet = DeleteFileW(pwszBuf);
>> +
>> + HeapFree(GetProcessHeap(), 0, pwszBuf);
>> +
>> + return bRet;
>> +}
>>
>>
>> /***********************************************************************
>> @@ -930,6 +1004,12 @@
>> HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
>> {
>> TRACE("(%u, %s): stub\n", bInstall, debugstr_w(cmdline));
>> + if (!create_manifest(bInstall))
>> + {
>> + ERR("create_manifest failed!\n");
>> + return HRESULT_FROM_WIN32(GetLastError());
>> + }
>> +
>> return S_OK;
>> }
>>
>>
>>
>>
>
>
>_______________________________________________
>Ros-dev mailing list
>[email protected]
>http://www.reactos.org/mailman/listinfo/ros-dev
>
>
>_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev