Index: boot/bootdata/hivedef.inf =================================================================== --- boot/bootdata/hivedef.inf (revision 74920) +++ boot/bootdata/hivedef.inf (working copy) @@ -1897,9 +1897,10 @@ ;HKCU,"SOFTWARE\ReactOS\Debug","SpyExclude",0x00020000,"" ;HKCU,"SOFTWARE\ReactOS\Debug","SpyExcludeDWP",0x00020000,"" -; Internet Explorer +; Wine addons HKCU,"SOFTWARE\Wine\MSHTML","GeckoUrl",,"http://source.winehq.org/winegecko.php" HKCU,"SOFTWARE\Wine\MSHTML","GeckoCabDir",0x00020000,"%SystemRoot%\" +HKCU,"SOFTWARE\Wine\Samba","SambaCabDir",0x00020000,"%SystemRoot%\" ; Sound Schemes HKCU,"AppEvents",,0x00000012 Index: boot/bootdata/packages/reactos.dff.in =================================================================== --- boot/bootdata/packages/reactos.dff.in (revision 74920) +++ boot/bootdata/packages/reactos.dff.in (working copy) @@ -108,5 +108,6 @@ "modules/optional/vmx_svga.inf" 6 optional "modules/optional/vmx_svga.sys" 2 optional "modules/optional/wine_gecko-2.40-x86.msi" 4 optional +"modules/optional/samba-for-ReactOSv1.3.exe" 4 optional "boot/bootdata/bootcdregtest/AHKAppTests.cmd" 7 optional ; DON'T REMOVE THE FOLLOWING NEW LINE ! THIS MEANS YOU ! Index: dll/cpl/appwiz/addons.c =================================================================== --- dll/cpl/appwiz/addons.c (revision 74920) +++ dll/cpl/appwiz/addons.c (working copy) @@ -24,6 +24,7 @@ # include #endif +#include #include #define GECKO_VERSION "2.40" @@ -36,11 +37,16 @@ #define GECKO_SHA "???" #endif +#define SAMBA_VERSION "1.3" +#define SAMBA_SHA "85e670da4700dbfe93e8460a43f6aeafee6fd1fd" + typedef struct { const char *version; const char *file_name; const char *sha; + const char *url_default; const char *config_key; + const char *url_config_key; const char *dir_config_key; LPCWSTR dialog_template; } addon_info_t; @@ -50,18 +56,27 @@ GECKO_VERSION, "wine_gecko-" GECKO_VERSION "-" ARCH_STRING ".msi", GECKO_SHA, - "MSHTML", - "GeckoCabDir", + "https://svn.reactos.org/amine/wine_gecko-2.40-x86.msi", + "MSHTML", "GeckoUrl", "GeckoCabDir", MAKEINTRESOURCEW(ID_DWL_GECKO_DIALOG) - } + }, +#ifdef __i386__ + { + SAMBA_VERSION, + "samba-for-ReactOSv" SAMBA_VERSION ".exe", + SAMBA_SHA, + "https://svn.reactos.org/packages/samba-for-ReactOSv1.3.exe", + "Samba", "SambaUrl", "SambaCabDir", + MAKEINTRESOURCEW(ID_DWL_SAMBA_DIALOG) + }, +#endif }; static const addon_info_t *addon; static HWND install_dialog = NULL; +static LPWSTR url = NULL; -static WCHAR GeckoUrl[] = L"https://svn.reactos.org/amine/wine_gecko-2.40-x86.msi"; - /* SHA definitions are copied from advapi32. They aren't available in headers. */ typedef struct { @@ -139,6 +154,11 @@ res = MsiInstallProductW(file_name, NULL); if(res != ERROR_SUCCESS) { ERR("MsiInstallProduct failed: %u\n", res); + /* ReactOS HACK */ + if ((ULONG_PTR)ShellExecuteW(NULL, NULL, file_name, NULL, NULL, SW_SHOW) > 32) + { + return INSTALL_OK; + } return INSTALL_FAILED; } @@ -190,23 +210,39 @@ return ret; } -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 HKEY open_config_key(void) +{ + HKEY hkey, ret; + DWORD res; + static const WCHAR wine_keyW[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e',0}; + + /* @@ Wine registry key: HKCU\Software\Wine\$config_key */ + res = RegOpenKeyW(HKEY_CURRENT_USER, wine_keyW, &hkey); + if(res != ERROR_SUCCESS) + return NULL; + + res = RegOpenKeyA(hkey, addon->config_key, &ret); + RegCloseKey(hkey); + return res == ERROR_SUCCESS ? ret : NULL; +} + static enum install_res install_from_registered_dir(void) { char *package_dir; + HKEY hkey; DWORD res, type, size = MAX_PATH; enum install_res ret; + hkey = open_config_key(); + if(!hkey) + return INSTALL_NEXT; + package_dir = heap_alloc(size + sizeof(addon->file_name)); - - res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)package_dir, &size); + res = RegGetValueA(hkey, NULL, addon->dir_config_key, RRF_RT_ANY, &type, (PBYTE)package_dir, &size); if(res == ERROR_MORE_DATA) { package_dir = heap_realloc(package_dir, size + sizeof(addon->file_name)); - res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)package_dir, &size); + res = RegGetValueA(hkey, NULL, addon->dir_config_key, RRF_RT_ANY, &type, (PBYTE)package_dir, &size); } if(res != ERROR_SUCCESS || (type != REG_SZ && type != REG_EXPAND_SZ)) { @@ -234,6 +270,21 @@ return ret; } +static LPWSTR get_url(void) +{ + DWORD size = (strlen(addon->url_default) + 1) * sizeof(WCHAR); //INTERNET_MAX_URL_LENGTH*sizeof(WCHAR); + WCHAR *url; + DWORD returned_size; + + url = heap_alloc(size); + returned_size = size; + + MultiByteToWideChar( CP_ACP, 0, addon->url_default, -1, url, size / sizeof(WCHAR) ); + + TRACE("Got URL %s\n", debugstr_w(url)); + return url; +} + static HRESULT WINAPI InstallCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv) { @@ -347,7 +398,7 @@ TRACE("using temp file %s\n", debugstr_w(tmp_file)); - hres = URLDownloadToFileW(NULL, GeckoUrl, tmp_file, 0, &InstallCallback); + hres = URLDownloadToFileW(NULL, url, tmp_file, 0, &InstallCallback); if(FAILED(hres)) { ERR("URLDownloadToFile failed: %08x\n", hres); return 0; @@ -410,7 +461,8 @@ * - directory stored in $dir_config_key value of HKCU/Wine/Software/$config_key key * - download the package */ - if (install_from_registered_dir() == INSTALL_NEXT) + if (install_from_registered_dir() == INSTALL_NEXT + && (url = get_url())) DialogBoxW(hApplet, addon->dialog_template, hwnd_parent, installer_proc); return TRUE; Index: dll/cpl/appwiz/appwiz.c =================================================================== --- dll/cpl/appwiz/appwiz.c (revision 74920) +++ dll/cpl/appwiz/appwiz.c (working copy) @@ -18,6 +18,7 @@ { static const WCHAR install_geckoW[] = {'i','n','s','t','a','l','l','_','g','e','c','k','o',0}; static const WCHAR install_monoW[] = {'i','n','s','t','a','l','l','_','m','o','n','o',0}; + static const WCHAR install_sambaW[] = {'i','n','s','t','a','l','l','_','s','a','m','b','a',0}; if(!params) return FALSE; @@ -32,6 +33,11 @@ return TRUE; } + if(!strcmpW(params, install_sambaW)) { + install_addon(ADDON_SAMBA, hwnd_parent); + return TRUE; + } + WARN("unknown param %s\n", debugstr_w(params)); return FALSE; } Index: dll/cpl/appwiz/appwiz.h =================================================================== --- dll/cpl/appwiz/appwiz.h (revision 74920) +++ dll/cpl/appwiz/appwiz.h (working copy) @@ -51,6 +51,7 @@ typedef enum { ADDON_GECKO, + ADDON_SAMBA, ADDON_MONO } addon_t; Index: dll/cpl/appwiz/lang/en-US.rc =================================================================== --- dll/cpl/appwiz/lang/en-US.rc (revision 74920) +++ dll/cpl/appwiz/lang/en-US.rc (working copy) @@ -65,6 +65,18 @@ PUSHBUTTON "Cancel", IDCANCEL, 144, 76, 50, 14, WS_GROUP | WS_TABSTOP END +ID_DWL_SAMBA_DIALOG DIALOGEX 0, 0, 260, 95 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Samba Installer" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS could not find a Samba package which is needed for applications requiring NTLM authentication to work correctly. ReactOS can automatically download and install it for you.", + ID_DWL_STATUS, "SysLink", 0, 10, 10, 240, 65 + CONTROL "", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER | PBS_SMOOTH, 10, 40, 240, 12 + DEFPUSHBUTTON "&Install", ID_DWL_INSTALL, 200, 76, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancel", IDCANCEL, 144, 76, 50, 14, WS_GROUP | WS_TABSTOP +END + STRINGTABLE BEGIN IDS_CPLSYSTEMNAME "Add/Remove Programs" Index: dll/cpl/appwiz/resource.h =================================================================== --- dll/cpl/appwiz/resource.h (revision 74920) +++ dll/cpl/appwiz/resource.h (working copy) @@ -38,5 +38,6 @@ #define ID_DWL_PROGRESS 1201 #define ID_DWL_INSTALL 1202 #define ID_DWL_STATUS 1203 +#define ID_DWL_SAMBA_DIALOG 1204 /* EOF */ Index: dll/win32/syssetup/wizard.c =================================================================== --- dll/win32/syssetup/wizard.c (revision 74920) +++ dll/win32/syssetup/wizard.c (working copy) @@ -2019,6 +2019,7 @@ { /* Run the Wine Gecko prompt */ Control_RunDLLW(hwndDlg, 0, L"appwiz.cpl install_gecko", SW_SHOW); + Control_RunDLLW(hwndDlg, 0, L"appwiz.cpl install_samba", SW_SHOW); } /* Set title font */