Author: cwittich Date: Wed Feb 4 12:09:03 2009 New Revision: 39393
URL: http://svn.reactos.org/svn/reactos?rev=39393&view=rev Log: allow to use a local copy of wine_gecko.cab instead of having to download it every time
http://www.winehq.org/pipermail/wine-patches/2009-February/068889.html http://www.winehq.org/pipermail/wine-patches/2009-February/068891.html http://www.winehq.org/pipermail/wine-patches/2009-February/068890.html http://www.winehq.org/pipermail/wine-patches/2009-February/068892.html
Modified: trunk/reactos/boot/bootdata/hivedef_i386.inf trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/dll/win32/mshtml/install.c trunk/reactos/dll/win32/mshtml/mshtml.rbuild
Modified: trunk/reactos/boot/bootdata/hivedef_i386.inf URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivedef_i386.... ============================================================================== --- trunk/reactos/boot/bootdata/hivedef_i386.inf [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/hivedef_i386.inf [iso-8859-1] Wed Feb 4 12:09:03 2009 @@ -279,6 +279,7 @@ HKCU,"Software\Microsoft\Internet Explorer\Main","Search Page",,"http://www.google.com"
HKCU,Software\Wine\MSHTML,"GeckoUrl",,"http://links.reactos.org/links/winegecko.php" +HKCU,Software\Wine\MSHTML,"GeckoCabDir",0x00020000,"%SystemRoot%"
; EOF
Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/reac... ============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Wed Feb 4 12:09:03 2009 @@ -705,3 +705,6 @@ modules\windows\kvmnet.sys 2 optional modules\windows\kvmnet.inf 6 optional
+; Gecko +modules\windows\wine_gecko-0.9.0.cab 4 optional +
Modified: trunk/reactos/dll/win32/mshtml/install.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/install.c?... ============================================================================== --- trunk/reactos/dll/win32/mshtml/install.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mshtml/install.c [iso-8859-1] Wed Feb 4 12:09:03 2009 @@ -54,6 +54,11 @@ '\','W','i','n','e', '\','M','S','H','T','M','L',0};
+static const CHAR mshtml_keyA[] = + {'S','o','f','t','w','a','r','e', + '\','W','i','n','e', + '\','M','S','H','T','M','L',0}; + static HWND install_dialog = NULL; static LPWSTR tmp_file_name = NULL; static HANDLE tmp_file = INVALID_HANDLE_VALUE; @@ -193,18 +198,21 @@
close(fd);
- if(!wine_get_dos_file_name) { + if(!wine_get_dos_file_name) wine_get_dos_file_name = (void*)GetProcAddress(GetModuleHandleW(kernel32W), "wine_get_dos_file_name"); - if(!wine_get_dos_file_name) { - ERR("Could not get wine_get_dos_file_name function.\n"); + + if(wine_get_dos_file_name) { /* Wine UNIX mode */ + dos_file_name = wine_get_dos_file_name(file_name); + if(!dos_file_name) { + ERR("Could not get dos file name of %s\n", debugstr_a(file_name)); return FALSE; } - } - - dos_file_name = wine_get_dos_file_name(file_name); - if(!dos_file_name) { - ERR("Could not get dos file name of %s\n", debugstr_a(file_name)); - return FALSE; + } else { /* ReactOS mode. */ + UINT res; + WARN("Could not get wine_get_dos_file_name function, calling install_cab directly.\n"); + res = MultiByteToWideChar( CP_ACP, 0, file_name, -1, 0, 0); + dos_file_name = heap_alloc (res*sizeof(WCHAR)); + MultiByteToWideChar( CP_ACP, 0, file_name, -1, dos_file_name, res); }
ret = install_cab(dos_file_name); @@ -216,23 +224,18 @@ static BOOL install_from_registered_dir(void) { char *file_name; - HKEY hkey; DWORD res, type, size = MAX_PATH; BOOL ret;
+ file_name = heap_alloc(size+sizeof(GECKO_FILE_NAME)); /* @@ Wine registry key: HKCU\Software\Wine\MSHTML */ - res = RegOpenKeyW(HKEY_CURRENT_USER, mshtml_keyW, &hkey); - if(res != ERROR_SUCCESS) - return FALSE; - - file_name = heap_alloc(size+sizeof(GECKO_FILE_NAME)); - res = RegQueryValueExA(hkey, "GeckoCabDir", NULL, &type, (PBYTE)file_name, &size); + res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)file_name, &size); if(res == ERROR_MORE_DATA) { file_name = heap_realloc(file_name, size+sizeof(GECKO_FILE_NAME)); - res = RegQueryValueExA(hkey, "GeckoCabDir", NULL, &type, (PBYTE)file_name, &size); - } - RegCloseKey(hkey); - if(res != ERROR_SUCCESS || type != REG_SZ) { + res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)file_name, &size); + } + + if(res != ERROR_SUCCESS || (type != REG_SZ && type != REG_EXPAND_SZ)) { heap_free(file_name); return FALSE; } @@ -443,7 +446,7 @@
if(size > sizeof(httpW) && !memcmp(url, httpW, sizeof(httpW))) { strcatW(url, v_formatW); - MultiByteToWideChar(CP_ACP, 0, GECKO_VERSION, -1, url+strlenW(url), -1); + MultiByteToWideChar(CP_ACP, 0, GECKO_VERSION, -1, url+strlenW(url), (size-strlenW(url)) / sizeof(WCHAR)); }
TRACE("Got URL %s\n", debugstr_w(url));
Modified: trunk/reactos/dll/win32/mshtml/mshtml.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/mshtml.rbu... ============================================================================== --- trunk/reactos/dll/win32/mshtml/mshtml.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mshtml/mshtml.rbuild [iso-8859-1] Wed Feb 4 12:09:03 2009 @@ -7,6 +7,7 @@ <include base="mshtml">.</include> <include base="ReactOS">include/reactos/wine</include> <define name="__WINESRC__" /> + <define name="_WIN32_WINNT">0x600</define> <file>conpoint.c</file> <file>dispex.c</file> <file>editor.c</file>