You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.1 KiB
128 lines
4.1 KiB
--- dlls/mshtml/install.c.orig 2010-03-28 23:48:50.000000000 +0200
|
|
+++ dlls/mshtml/install.c 2010-03-29 20:43:54.000000000 +0200
|
|
@@ -284,6 +284,103 @@
|
|
return ret;
|
|
}
|
|
|
|
+static BOOL install_from_fedora_mingw32_wine_gecko(void) {
|
|
+ const char *data_dir, *subdir;
|
|
+ BOOL res;
|
|
+
|
|
+ LPWSTR dos_dir_name;
|
|
+ LPSTR dos_dir_name_a;
|
|
+ static WCHAR *(*wine_get_dos_file_name)(const char*);
|
|
+ static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
|
|
+
|
|
+ char install_dir[MAX_PATH];
|
|
+ char gecko_dir[MAX_PATH];
|
|
+
|
|
+ SHFILEOPSTRUCTA sf;
|
|
+
|
|
+ TRACE("()\n");
|
|
+
|
|
+ if((data_dir = wine_get_data_dir()))
|
|
+ subdir = "/gecko/";
|
|
+ else if((data_dir = wine_get_build_dir()))
|
|
+ subdir = "/../gecko/";
|
|
+ else
|
|
+ return FALSE;
|
|
+
|
|
+ TRACE("data_dir=%s\n",data_dir);
|
|
+ TRACE("subdir=%s\n",subdir);
|
|
+
|
|
+ memcpy(gecko_dir, data_dir, MAX_PATH);
|
|
+ strncat(gecko_dir, subdir, MAX_PATH-strlen(gecko_dir));
|
|
+ strncat(gecko_dir, GECKO_VERSION, MAX_PATH-strlen(gecko_dir));
|
|
+ strncat(gecko_dir, "/", MAX_PATH-strlen(gecko_dir));
|
|
+
|
|
+ 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) { /* Wine UNIX mode */
|
|
+ dos_dir_name = wine_get_dos_file_name(gecko_dir);
|
|
+ if(!dos_dir_name) {
|
|
+ ERR("Could not get dos file name of %s\n", debugstr_a(gecko_dir));
|
|
+ return FALSE;
|
|
+ }
|
|
+ } else {
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ TRACE("gecko_dir=%s\n", debugstr_a(gecko_dir));
|
|
+ TRACE("dos_dir_name=%s\n", debugstr_w(dos_dir_name));
|
|
+
|
|
+
|
|
+ if(GetFileAttributesW(dos_dir_name) == INVALID_FILE_ATTRIBUTES) {
|
|
+ TRACE("mingw32-wine-gecko package not installed\n");
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ GetSystemDirectoryA(install_dir, sizeof(install_dir));
|
|
+ strncat(install_dir, "\\gecko\\",MAX_PATH-strlen(install_dir));
|
|
+ res = CreateDirectoryA(install_dir, NULL);
|
|
+ if(!res && GetLastError() != ERROR_ALREADY_EXISTS) {
|
|
+ ERR("Could not create directory: %08u\n", GetLastError());
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ strncat(install_dir, GECKO_VERSION, MAX_PATH-strlen(install_dir));
|
|
+ res = CreateDirectoryA(install_dir, NULL);
|
|
+ if(!res && GetLastError() != ERROR_ALREADY_EXISTS) {
|
|
+ ERR("Could not create directory: %08u\n", GetLastError());
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ TRACE("install_dir=%s\n",debugstr_a(install_dir));
|
|
+
|
|
+ dos_dir_name_a = heap_strdupWtoA(dos_dir_name);
|
|
+
|
|
+ lstrcatA(dos_dir_name_a,"*.*");
|
|
+ TRACE("dos_dir_name_a=%s\n",debugstr_a(dos_dir_name_a));
|
|
+
|
|
+ memset(&sf,0,sizeof(sf));
|
|
+ sf.hwnd = 0;
|
|
+ sf.wFunc = FO_COPY;
|
|
+ sf.pFrom = dos_dir_name_a;
|
|
+ sf.pTo = install_dir;
|
|
+ sf.fFlags = FOF_NOCONFIRMATION, FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT;
|
|
+ res = SHFileOperationA(&sf);
|
|
+
|
|
+ heap_free(dos_dir_name_a);
|
|
+
|
|
+ if(res != 0) {
|
|
+ ERR("Could not copy files: %08u\n", GetLastError());
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ set_registry(install_dir);
|
|
+
|
|
+ clean_up();
|
|
+
|
|
+ return TRUE;
|
|
+}
|
|
+
|
|
static HRESULT WINAPI InstallCallback_QueryInterface(IBindStatusCallback *iface,
|
|
REFIID riid, void **ppv)
|
|
{
|
|
@@ -541,7 +638,8 @@
|
|
* - $datadir/gecko
|
|
* - download from URL stored in GeckoUrl value of HKCU/Software/MSHTML key
|
|
*/
|
|
- if(!install_from_registered_dir()
|
|
+ if ( !install_from_fedora_mingw32_wine_gecko()
|
|
+ && !install_from_registered_dir()
|
|
&& !install_from_default_dir()
|
|
&& !silent && (url = get_url()))
|
|
DialogBoxW(hInst, MAKEINTRESOURCEW(ID_DWL_DIALOG), 0, installer_proc);
|
|
--- dlls/mshtml/Makefile.in.orig 2010-03-29 15:13:47.000000000 +0200
|
|
+++ dlls/mshtml/Makefile.in 2010-03-29 15:49:55.000000000 +0200
|
|
@@ -4,7 +4,7 @@
|
|
VPATH = @srcdir@
|
|
MODULE = mshtml.dll
|
|
IMPORTLIB = mshtml
|
|
-IMPORTS = strmiids uuid urlmon shlwapi ole32 oleaut32 user32 gdi32 advapi32 kernel32
|
|
+IMPORTS = strmiids uuid urlmon shlwapi ole32 oleaut32 user32 gdi32 advapi32 kernel32 shell32
|
|
EXTRADEFS = -DCOM_NO_WINDOWS_H
|
|
DELAYIMPORTS = wininet
|
|
|