diff --git a/reactos/base/applications/applications.rbuild b/reactos/base/applications/applications.rbuild
index 30ae12b2501..18b0a759ad4 100644
--- a/reactos/base/applications/applications.rbuild
+++ b/reactos/base/applications/applications.rbuild
@@ -16,6 +16,9 @@
+
+
+
diff --git a/reactos/base/applications/downloader/download.c b/reactos/base/applications/downloader/download.c
new file mode 100644
index 00000000000..1dc77c65b97
--- /dev/null
+++ b/reactos/base/applications/downloader/download.c
@@ -0,0 +1,402 @@
+/* PROJECT: ReactOS Downloader (was GetFirefox)
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/downloader/download.c
+ * PURPOSE: Displaying a download dialog
+ * COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers)
+ * Copyright 2004 Mike McCormack (for CodeWeavers)
+ * Copyright 2005 Ge van Geldorp (gvg@reactos.org)
+ * Copyright 2007 Dmitry Chapyshev (lentind@yandex.ru)
+ */
+/*
+ * Based on Wine dlls/shdocvw/shdocvw_main.c
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#define COBJMACROS
+#define WIN32_NO_STATUS
+#include
+#include
+#include
+#include
+#include
+
+#include "resources.h"
+#include "structures.h"
+
+#define NDEBUG
+#include
+
+extern struct Application* SelectedApplication;
+extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
+
+typedef struct _IBindStatusCallbackImpl
+{
+ const IBindStatusCallbackVtbl *vtbl;
+ LONG ref;
+ HWND hDialog;
+ BOOL *pbCancelled;
+} IBindStatusCallbackImpl;
+
+static HRESULT WINAPI
+dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject)
+{
+ if (NULL == ppvObject)
+ {
+ return E_POINTER;
+ }
+
+ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IBindStatusCallback))
+ {
+ IBindStatusCallback_AddRef( This );
+ *ppvObject = This;
+ return S_OK;
+ }
+
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI
+dlAddRef(IBindStatusCallback* iface)
+{
+ IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
+
+ return InterlockedIncrement(&This->ref);
+}
+
+static ULONG WINAPI
+dlRelease(IBindStatusCallback* iface)
+{
+ IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
+ DWORD ref = InterlockedDecrement(&This->ref);
+
+ if( !ref )
+ {
+ DestroyWindow( This->hDialog );
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI
+dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib)
+{
+ DPRINT1("OnStartBinding not implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority)
+{
+ DPRINT1("GetPriority not implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlOnLowResource( IBindStatusCallback* iface, DWORD reserved)
+{
+ DPRINT1("OnLowResource not implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress,
+ ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
+{
+ IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
+ HWND Item;
+ LONG r;
+ WCHAR OldText[100];
+
+ Item = GetDlgItem(This->hDialog, IDC_PROGRESS);
+ if (NULL != Item && 0 != ulProgressMax)
+ {
+ SendMessageW(Item, PBM_SETPOS, ((ULONGLONG)ulProgress * 100) / ulProgressMax, 0);
+ }
+
+ Item = GetDlgItem(This->hDialog, IDC_STATUS);
+ if (NULL != Item && NULL != szStatusText)
+ {
+ SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]),
+ (LPARAM) OldText);
+ if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) || 0 != wcscmp(OldText, szStatusText))
+ {
+ SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText);
+ }
+ }
+
+ SetLastError(0);
+ r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA);
+ if (0 != r || 0 != GetLastError())
+ {
+ *This->pbCancelled = TRUE;
+ DPRINT("Cancelled\n");
+ return E_ABORT;
+ }
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError)
+{
+ DPRINT1("OnStopBinding not implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo)
+{
+ DPRINT1("GetBindInfo not implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF,
+ DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
+{
+ DPRINT1("OnDataAvailable implemented\n");
+
+ return S_OK;
+}
+
+static HRESULT WINAPI
+dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk)
+{
+ DPRINT1("OnObjectAvailable implemented\n");
+
+ return S_OK;
+}
+
+static const IBindStatusCallbackVtbl dlVtbl =
+{
+ dlQueryInterface,
+ dlAddRef,
+ dlRelease,
+ dlOnStartBinding,
+ dlGetPriority,
+ dlOnLowResource,
+ dlOnProgress,
+ dlOnStopBinding,
+ dlGetBindInfo,
+ dlOnDataAvailable,
+ dlOnObjectAvailable
+};
+
+static IBindStatusCallback*
+CreateDl(HWND Dlg, BOOL *pbCancelled)
+{
+ IBindStatusCallbackImpl *This;
+
+ This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IBindStatusCallbackImpl));
+ if (!This)
+ return NULL;
+
+ This->vtbl = &dlVtbl;
+ This->ref = 1;
+ This->hDialog = Dlg;
+ This->pbCancelled = pbCancelled;
+
+ return (IBindStatusCallback*) This;
+}
+
+static DWORD WINAPI
+ThreadFunc(LPVOID Context)
+{
+ //static const WCHAR szUrl[] = DownloadUrl;
+ IBindStatusCallback *dl;
+ WCHAR path[MAX_PATH];
+ LPWSTR p;
+ STARTUPINFOW si;
+ PROCESS_INFORMATION pi;
+ HWND Dlg = (HWND) Context;
+ DWORD r;
+ BOOL bCancelled = FALSE;
+ BOOL bTempfile = FALSE;
+ HKEY hKey;
+ DWORD dwSize = MAX_PATH;
+
+ /* built the path for the download */
+ p = wcsrchr(SelectedApplication->Location, L'/');
+ if (NULL == p)
+ {
+ goto end;
+ }
+
+ /* Create default download path */
+ if (GetWindowsDirectory(path, sizeof(path) / sizeof(WCHAR)))
+ {
+ WCHAR DPath[256];
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (i == 3)
+ {
+ DPath[i] = '\0';
+ break;
+ }
+ DPath[i] = path[i];
+ }
+ LoadString(GetModuleHandle(NULL), IDS_DOWNLOAD_FOLDER, path, sizeof(path) / sizeof(WCHAR));
+ wcscat((LPWSTR)DPath, path);
+ wcscpy(path, DPath);
+ }
+
+ if (RegOpenKey(HKEY_LOCAL_MACHINE,
+ TEXT("Software\\ReactOS\\Downloader"),
+ &hKey) == ERROR_SUCCESS)
+ {
+ if ((RegQueryValueEx(hKey,
+ L"DownloadFolder",
+ NULL,
+ NULL,
+ (LPBYTE)&path,
+ &dwSize) != ERROR_SUCCESS) && (path[0] == 0))
+ {
+ goto end;
+ }
+ }
+
+ if (GetFileAttributes(path) == 0xFFFFFFFF)
+ if (!CreateDirectory((LPCTSTR)path,NULL))
+ {
+ goto end;
+ }
+ wcscat(path, L"\\");
+ wcscat(path, p + 1);
+
+ /* download it */
+ bTempfile = TRUE;
+ dl = CreateDl(Context, &bCancelled);
+ r = URLDownloadToFileW(NULL, SelectedApplication->Location, path, 0, dl);
+ if (NULL != dl)
+ {
+ IBindStatusCallback_Release(dl);
+ }
+ if (S_OK != r)
+ {
+ MessageBoxW(0,Strings[IDS_DOWNLOAD_ERROR],0,0);
+ goto end;
+ }
+ else if (bCancelled)
+ {
+ goto end;
+ }
+ ShowWindow(Dlg, SW_HIDE);
+
+ /* run it */
+ memset(&si, 0, sizeof(si));
+ si.cb = sizeof(si);
+ r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
+ if (0 == r)
+ {
+ goto end;
+ }
+ CloseHandle(pi.hThread);
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ CloseHandle(pi.hProcess);
+
+ end:
+ if (bTempfile)
+ {
+ if (bCancelled)
+ DeleteFileW(path);
+ else
+ {
+ DWORD dwSize = sizeof(DWORD);
+ DWORD dwValue, dwType = REG_DWORD;
+ if (RegQueryValueEx(hKey,
+ L"DeleteInstaller",
+ NULL,
+ &dwType,
+ (LPBYTE)&dwValue,
+ &dwSize) == ERROR_SUCCESS)
+ if (dwValue == 0x1)
+ DeleteFileW(path);
+ RegCloseKey(hKey);
+ }
+ }
+ EndDialog(Dlg, 0);
+ return 0;
+}
+
+INT_PTR CALLBACK
+DownloadProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ HANDLE Thread;
+ DWORD ThreadId;
+ HWND Item;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:/*
+ Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE),
+ MAKEINTRESOURCEW(IDI_ICON_MAIN));
+ if (NULL != Icon)
+ {
+ SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) Icon);
+ SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) Icon);
+ }*/
+ SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0);
+ Item = GetDlgItem(Dlg, IDC_PROGRESS);
+ if (NULL != Item)
+ {
+ SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100));
+ SendMessageW(Item, PBM_SETPOS, 0, 0);
+ }/*
+ Item = GetDlgItem(Dlg, IDC_REMOVE);
+ if (NULL != Item)
+ {
+ if (GetShortcutName(ShortcutName) &&
+ INVALID_FILE_ATTRIBUTES != GetFileAttributesW(ShortcutName))
+ {
+ SendMessageW(Item, BM_SETCHECK, BST_CHECKED, 0);
+ }
+ else
+ {
+ SendMessageW(Item, BM_SETCHECK, BST_UNCHECKED, 0);
+ ShowWindow(Item, SW_HIDE);
+ }
+ }*/
+ Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId);
+ if (NULL == Thread)
+ {
+ return FALSE;
+ }
+ CloseHandle(Thread);
+ return TRUE;
+
+ case WM_COMMAND:
+ if (wParam == IDCANCEL)
+ {
+ SetWindowLongPtrW(Dlg, GWLP_USERDATA, 1);
+ PostMessage(Dlg, WM_CLOSE, 0, 0);
+ }
+ return FALSE;
+
+ case WM_CLOSE:
+ EndDialog(Dlg, 0);
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}
diff --git a/reactos/base/applications/downloader/downloader.rbuild b/reactos/base/applications/downloader/downloader.rbuild
new file mode 100644
index 00000000000..6aca8fc5acc
--- /dev/null
+++ b/reactos/base/applications/downloader/downloader.rbuild
@@ -0,0 +1,26 @@
+
+
+ downloader.xml
+
+ .
+ .
+
+ kernel32
+ advapi32
+ ntdll
+ user32
+ gdi32
+ shell32
+ comctl32
+ msimg32
+ shlwapi
+ urlmon
+ uuid
+ expat
+
+ main.c
+ xml.c
+ download.c
+ downloader.rc
+
+
diff --git a/reactos/base/applications/downloader/downloader.rc b/reactos/base/applications/downloader/downloader.rc
new file mode 100644
index 00000000000..e4cdb19724a
--- /dev/null
+++ b/reactos/base/applications/downloader/downloader.rc
@@ -0,0 +1,10 @@
+#include
+#include "resources.h"
+
+#define REACTOS_STR_FILE_DESCRIPTION "Download !\0"
+#define REACTOS_STR_INTERNAL_NAME "downloader\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "downloader.exe\0"
+
+#include
+
+#include "rsrc.rc"
diff --git a/reactos/base/applications/downloader/downloader.xml b/reactos/base/applications/downloader/downloader.xml
new file mode 100644
index 00000000000..fb29bd30d40
--- /dev/null
+++ b/reactos/base/applications/downloader/downloader.xml
@@ -0,0 +1,297 @@
+
+
+
+ Mozilla Firefox (1.5)
+ MPL/GPL/LGPL
+ 1.5.0.12
+ The most popular and one of the best free Web Browsers out there.
+ http://svn.reactos.org/packages/Firefox%20Setup%201.5.0.12.exe
+
+
+ Mozilla Firefox (2.0.0.20)
+ MPL/GPL/LGPL
+ 2.0.0.20
+ The most popular and one of the best free Web Browsers out there.
+ http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.20/win32/en-US/Firefox%20Setup%202.0.0.20.exe
+
+
+ Opera
+ Freeware
+ 9.63
+ The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
+ http://ftp.opera.com/pub/opera/win/963/en/Opera_963_classic_Setup.exe
+
+
+ Mozilla Thunderbird (2.0.0.19)
+ MPL/GPL/LGPL
+ 2.0.0.19
+ The most popular and one of the best free Mail Clients out there.
+ http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.19/win32/en-US/Thunderbird%20Setup%202.0.0.19.exe
+
+
+ SeaMonkey (1.1.14)
+ 1.1.14
+ Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.
+ http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/1.1.14/seamonkey-1.1.14.en-US.win32.installer.exe
+
+
+ Mozilla ActiveX Control v1.7.12 (ReactOS special)
+ 1.7.12
+ Essential Component to get ReactOS Explorer's and other applications' Internet Browsing feature running.
+ http://ovh.dl.sourceforge.net/sourceforge/reactos/MozillaControl1712-ReactOS.exe
+
+
+ The Off By One Web Browser
+ The Off By One Browser is a very small and fast web browser with full HTML 3.2 support.
+ http://offbyone.com/offbyone/images/OffByOneSetup.exe
+
+
+ mIRC
+ Shareware
+ 6.35
+ The most popular client for the Internet Relay Chat (IRC)
+ http://mirc.bigchief.dk/mirc635.exe
+
+
+ This tool allows you to access your Windows shared folders/printers with ReactOS.
+ http://svn.reactos.org/packages/samba-tng.exe
+
+
+ Miranda IM
+ 0.7.4
+ Open source multiprotocol instant messaging application - May not work completely.
+ http://ovh.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.7.4-unicode.exe
+
+
+ PuTTY version 0.60
+ MIT
+ 0.60
+ A free SSH, Telnet, rlogin, and raw TCP client.
+ http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe
+
+
+
+
+ "AbiWord 2.6.4 (remove only)"
+ 2.6.4
+ Word processor.
+ http://www.abiword.org/downloads/abiword/2.6.4/Windows/abiword-setup-2.6.4.exe
+
+
+ OpenOffice.org 2.4.2
+ 2.4.2
+ THE Open Source Office Suite.
+ http://ftp.plusline.de/OpenOffice/stable/2.4.2/OOo_2.4.2_Win32Intel_install_wJRE_en-US.exe
+
+
+ OpenOffice.org 3.0.1
+ 3.0.1
+ THE Open Source Office Suite.
+ http://ftp.tu-chemnitz.de/pub/openoffice/stable/3.0.1/OOo_3.0.1_Win32Intel_install_en-US.exe
+
+
+
+
+ IrfanView (remove only)
+ 4.23
+ Viewer for all kinds of graphics/audio files/video files.
+ http://irfanview.tuwien.ac.at/iview423_setup.exe
+
+
+ 4.22
+ Additional Plugins for supporting more file types.
+ http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_422_setup.exe
+
+
+ Tux Paint 0.9.19
+ 0.9.19
+ An Open Source bitmap graphics editor geared towards young children.
+ http://ovh.dl.sourceforge.net/sourceforge/tuxpaint/tuxpaint-0.9.19-win32-installer.exe
+
+
+ GlidewrapZbag
+ 0.84c
+ glidewrapper needed to run Diablo 2 on ReactOS.
+ http://www.zeckensack.de/glide/archive/GlideWrapper084c.exe
+
+
+
+
+ msxml3
+ 3.0
+ MSXML3 is needed for some MSI Installers.
+ http://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi
+
+
+ mfc40
+ 4.0
+ MFC 4 is needed by some applications
+ http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe
+
+
+
+ vb5run
+ 5.0
+ Visual Basic 5 Runtime
+ http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe
+
+
+
+ vb6run
+ 6.0
+ Visual Basic 6 Runtime
+ http://download.microsoft.com/download/vb60pro/install/6/win98me/en-us/vbrun60.exe
+
+
+
+ vc6run
+ 6.0
+ Visual Studio 6 Runtime
+ http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe
+
+
+
+ vc2005run
+ 7.0
+ Visual Studio 2005 Runtime
+ http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe
+
+
+
+ vc2005sp1run
+ 7.1
+ Visual Studio 2005 Runtime SP1
+ http://download.microsoft.com/download/e/1/c/e1c773de-73ba-494a-a5ba-f24906ecf088/vcredist_x86.exe
+
+
+
+ vc2008run
+ 8.0
+ Visual Studio 2008 Runtime
+ http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe
+
+
+
+
+
+
+ ReactOS Build Environment 1.2
+ 1.2
+ Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.
+ http://ovh.dl.sourceforge.net/sourceforge/reactos/RosBE-1.2.exe
+
+
+ MinGW 5.1.3
+ 5.1.3
+ A Port of the GNU toolchain with GCC, GDB, GNU make, etc.
+ http://ovh.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe
+
+
+ FreeBASIC 0.18.4b
+ 0.18.4b
+ Open Source BASIC Compiler. The BASIC syntax is compatible to QBASIC.
+ http://ovh.dl.sourceforge.net/sourceforge/fbc/FreeBASIC-v0.18.4b-win32.exe
+
+
+
+
+ ScummVM 0.11.1
+ 0.11.1
+ SamNMax, Day of Tentacle, etc on ReactOS
+ http://ovh.dl.sourceforge.net/sourceforge/scummvm/scummvm-0.11.1-win32.exe
+
+
+ Diablo II Shareware
+ 1.4
+ Diablo 2 Shareware. zeckensack's glide wrapper is req. to run it.
+ http://ftp.freenet.de./pub/filepilot/windows/spiele/diabloiidemo.exe
+ GlidewrapZbag
+ http://svn.reactos.org/downloads/d2fix.exe
+
+
+ Nice Clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted Original.
+ http://www.muppetlabs.com/~breadbox/pub/software/tworld/tworld-1.3.0-win32-CCLP2.exe
+
+
+ OpenTTD 0.6.0
+ 0.6.0
+ Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.
+ http://ovh.dl.sourceforge.net/sourceforge/openttd/openttd-0.6.0-win32.exe
+
+
+ LBreakout2 2.4.1
+ 2.4.1
+ Breakout Clone using SDL libs.
+ http://ovh.dl.sourceforge.net/sourceforge/lgames/lbreakout2-2.4.1-win32.exe
+
+
+ LGeneral 1.1
+ 1.1
+ Panzer General Clone using SDL libs.
+ http://ovh.dl.sourceforge.net/sourceforge/lgames/lgeneral-1.1-win32.exe
+
+
+ LMarbles 1.0.6
+ 1.0.6
+ Atomix Clone using SDL libs.
+ http://ovh.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.exe
+
+
+ WinBoard 4.2.7b
+ 4.2.7b
+ GPL 3
+ WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet Chess Servers, and for electronic mail correspondence chess.
+ http://ftp.gnu.org/gnu/winboard/winboard-4_2_7b.exe
+
+
+
+
+
+
+
+
+
+
+ 7-Zip 4.57
+ 4.57
+ Utility to create and open 7zip, zip, tar, rar and other archive files.
+ http://ovh.dl.sourceforge.net/sourceforge/sevenzip/7z457.exe
+
+
+ µTorrent
+ 1.8
+ Small and fast BitTorrent Client
+ http://download.utorrent.com/1.8.2/utorrent-1.8.2.upx.exe
+
+
+ Audiograbber 1.83 SE
+ 1.83 SE
+ A very good CD Ripper/Audio File Converter.
+ http://www.audiograbber.de/files/4898276276/agsetup183se.exe
+
+
+
+
+ 5.10.00.3610
+ Unzip in the "ReactOS" folder then restart ReactOS twice.
+ http://svn.reactos.org/packages/ac97_vbox.exe
+
+
+
+
+ 1.2.13
+ Needed for many Open Source Games to run. You need 7-Zip or a similar Utility to extract it.
+ http://www.libsdl.org/release/SDL-1.2.13-win32.zip
+
+
+ 1.2.8
+ Needed for some Open Source Games to run. You need 7-Zip or a similar Utility to extract it.
+ http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.8-win32.zip
+
+
+ 0.72
+ DOSBox is a DOS emulator.
+ http://ovh.dl.sourceforge.net/sourceforge/dosbox/DOSBox0.72-win32-installer.exe
+
+
+
diff --git a/reactos/base/applications/downloader/lang/bg-BG.rc b/reactos/base/applications/downloader/lang/bg-BG.rc
new file mode 100644
index 00000000000..ee1a13978e5
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/bg-BG.rc
@@ -0,0 +1,60 @@
+LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Сваляне..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Отказ", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Предпочитания"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Папка за сваляне:", -1, 6, 10, 144, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Избор...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Изтриване на инсталационните файлове след слагането", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Сървър с обновявания:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&Добре", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Отказ", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Свали! - Свалячът на РеактОС"
+ IDS_WELCOME_TITLE "Свалячът на РеактОС ви приветства"
+ IDS_WELCOME "Изберете раздел отляво. Това е издание 1.1."
+ IDS_NO_APP_TITLE "Не е избрано приложение"
+ IDS_NO_APP "Изберете приложение, преди да натиснето клавиша „Сваляне”. Ако имате нужда от помощ, натиснете въпросителната в горния десен ъгъл."
+ IDS_UPDATE_TITLE "Обновяване"
+ IDS_UPDATE "Тази възможност все още не е готова."
+ IDS_HELP_TITLE "Помощ"
+ IDS_HELP "Изберете раздел отляво, след това изберете приложение и натиснете „Сваляне”. За да осъвремените сведенията за приложението, натиснете копчето до „Напред”."
+ IDS_NO_APPS "За съжаление в този раздел все още няма приложения. Можете да помогнете и да добавите още приложения."
+ IDS_CHOOSE_APP "Изберете приложение."
+ IDS_CHOOSE_SUB "Изберете подраздел."
+ IDS_CHOOSE_CATEGORY "Изберете раздел."
+ IDS_CHOOSE_BOTH "Изберете подраздел или приложение."
+ IDS_XMLERROR_1 "Xml файлът не е открит !"
+ IDS_XMLERROR_2 "Разборът на XML файла е неуспешен!"
+ IDS_DOWNLOAD_ERROR "Свалянето на файла невъзможно.\nПроверете връзката си с интернет."
+ IDS_VERSION "Издание: "
+ IDS_LICENCE "Разрешително: "
+ IDS_MAINTAINER "Поддържащ: "
+ IDS_APPS_TITLE "Приложения"
+ IDS_CATS_TITLE "Раздели"
+ IDS_CHOOSE_FOLDER "Изберете папката..."
+ IDS_NOTCREATE_REGKEY "Неуспешно създаване на ключ в регистъра."
+ IDS_DOWNLOAD_FOLDER "Сваляч"
+ IDS_UNABLECREATE_FOLDER "Неуспешно създаване на папка с това име!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ TTT_HELPBUTTON, "Помощ за сваляча"
+ TTT_UPDATEBUTTON, "Все още не е готово"
+ TTT_PROFBUTTON, "Позволява настройка на сваляча"
+END
diff --git a/reactos/base/applications/downloader/lang/de-DE.rc b/reactos/base/applications/downloader/lang/de-DE.rc
new file mode 100644
index 00000000000..27184de338c
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/de-DE.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Download..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Einstellungen"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Download Ordner:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "W&дhle...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Installationsdateien nach dem Setup lцschen", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Update Server:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Abbrechen", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
+ IDS_WELCOME_TITLE "Willkommen im ReactOS Downloader"
+ IDS_WELCOME "Bitte wдhlen Sie links eine Kategorie. Dies ist Version 1.1."
+ IDS_NO_APP_TITLE "Keine Anwendung ausgewдhlt"
+ IDS_NO_APP "Bitte wдhlen Sie eine Anwendung, bevor Sie die Download-Schaltflдche betдtigen. Wenn Sie Hilfe benцtigen, drьcken Sie die Hilfe-Schaltflдche in der oberen rechten Ecke."
+ IDS_UPDATE_TITLE "Update"
+ IDS_UPDATE "Diese Funktion wurde noch nicht implementiert."
+ IDS_HELP_TITLE "Hilfe"
+ IDS_HELP "Wдhlen Sie links eine Kategorie, wдhlen Sie eine Anwendung und drьcken Sie die Download-Schaltflдche. Um die Anwendungsinformationen zu aktualisieren, drьcken Sie die Schaltflдche neben der Hilfe-Schaltflдche."
+ IDS_NO_APPS "In dieser Kategorie sind bisher noch keine Anwendungen. Sie kцnnen helfen, indem Sie Anwendungen hinzufьgen."
+ IDS_CHOOSE_APP "Bitte wдhlen Sie eine Anwendung."
+ IDS_CHOOSE_SUB "Bitte wдhlen Sie eine Unterkategorie."
+ IDS_CHOOSE_CATEGORY "Bitte wдhlen Sie eine Kategorie."
+ IDS_CHOOSE_BOTH "Bitte wдhlen Sie eine Unterkategorie oder eine Anwendung."
+ IDS_XMLERROR_1 "XML Datei nicht gefunden!"
+ IDS_XMLERROR_2 "XML Datei kann nicht verarbeitet werden!"
+ IDS_DOWNLOAD_ERROR "Die Datei konnte nicht heruntergeladen werden.\nBitte prьfen sie, ob eine Verbindung zum Internet besteht."
+ IDS_VERSION "Version: "
+ IDS_LICENCE "Lizenz: "
+ IDS_MAINTAINER "Maintainer: "
+ IDS_APPS_TITLE "Anwendungen"
+ IDS_CATS_TITLE "Kategorien"
+ IDS_CHOOSE_FOLDER "Bitte wдhlen Sie den Ordner..."
+ IDS_NOTCREATE_REGKEY "Registryschlьssel kцnnte nicht erstellt werden."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Es konnte kein Ordner mit diesem Namen erstellt werden!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s wird benцtigt um %s ausfьhren zu kцnnen. Soll %s jetzt installiert werden?"
+ TTT_HELPBUTTON "Hilfe ьber den Downloader"
+ TTT_UPDATEBUTTON "Noch nicht vorhanden"
+ TTT_PROFBUTTON "Konfiguriert den Downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/el-GR.rc b/reactos/base/applications/downloader/lang/el-GR.rc
new file mode 100644
index 00000000000..ad044670b60
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/el-GR.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Download..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "ўкхсп", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "РспфймЮуейт"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ЦЬкелпт ЛЮшещн:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "Е&рйлпгЮ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&ДйбгсбцЮ бсчеЯщн егкбфЬуфбузт мефЬ фзн егкбфЬуфбуз", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "ДйбкпмйуфЮт ензмесюуещн:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&ўкхсп", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
+ IDS_WELCOME_TITLE "Кблют Юлибфе уфпн ReactOS Downloader"
+ IDS_WELCOME "Рбсбкблю ерйлЭофе кбфзгпсЯб уфб бсйуфесЬ. БхфЮ еЯнбй з Экдпуз 1.1."
+ IDS_NO_APP_TITLE "Ден ерйлЭчизке ецбсмпгЮ"
+ IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner."
+ IDS_UPDATE_TITLE "ЕнзмЭсщуз"
+ IDS_UPDATE "Sorry this feature is not implemented yet."
+ IDS_HELP_TITLE "ВпЮиейб"
+ IDS_HELP "ЕрйлЭофе кбфзгпсЯб уфб бсйуфесЬ, мефЬ ерйлЭофе мйб ецбсмпгЮ кбй рбфЮуфе фп кпхмрЯ download. To update the application information click the button next to the help button."
+ IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."
+ IDS_CHOOSE_APP "Рбсбкблю ерйлЭофе мйб ецбсмпгЮ."
+ IDS_CHOOSE_SUB "Рбсбкблю ерйлЭофе мйб хрпкбфзгпсЯб."
+ IDS_CHOOSE_CATEGORY "Рбсбкблю ерйлЭофе мйб кбфзгпсЯб."
+ IDS_CHOOSE_BOTH "Рбсбкблю ерйлЭофе мйб хрпкбфзгпсЯб Ю мйб ецбсмпгЮ."
+ IDS_XMLERROR_1 "Де всЭизке фп бсчеЯп xml !"
+ IDS_XMLERROR_2 "Could not parse the xml file !"
+ IDS_DOWNLOAD_ERROR "Ден Юфбн дхнбфь фп кбфЭвбумб фпх бсчеЯпх.\nРбсбкблпэме елЭофе фзн internet уэндеуЮ убт."
+ IDS_VERSION "ёкдпуз: "
+ IDS_LICENCE "ўдейб: "
+ IDS_MAINTAINER "Maintainer: "
+ IDS_APPS_TITLE "ЕцбсмпгЭт"
+ IDS_CATS_TITLE "КбфзгпсЯет"
+ IDS_CHOOSE_FOLDER "Рбсбкблю, ерйлЭофе фпн кбфЬлпгп..."
+ IDS_NOTCREATE_REGKEY "Could not create the registry key."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s еЯнбй брбйфпэменп гйб фзн екфЭлеуз фпх %s. Нб егкбфбуфбиеЯ фп %s фюсб;"
+ TTT_HELPBUTTON "ВсеЯфе впЮиейб гйб фпн downloader"
+ TTT_UPDATEBUTTON "јчй бкьмб дйбиЭуймп"
+ TTT_PROFBUTTON "Let you configure the downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/en-US.rc b/reactos/base/applications/downloader/lang/en-US.rc
new file mode 100644
index 00000000000..9c6031cb427
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/en-US.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Download..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Preferences"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Download folder:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Update server:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
+ IDS_WELCOME_TITLE "Welcome to the ReactOS Downloader"
+ IDS_WELCOME "Please choose a category on the left. This is version 1.1."
+ IDS_NO_APP_TITLE "No application selected"
+ IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner."
+ IDS_UPDATE_TITLE "Update"
+ IDS_UPDATE "Sorry this feature is not implemented yet."
+ IDS_HELP_TITLE "Help"
+ IDS_HELP "Choose a category on the left, then choose a application and click the download button. To update the application information click the button next to the help button."
+ IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."
+ IDS_CHOOSE_APP "Please choose an application."
+ IDS_CHOOSE_SUB "Please choose a subcategory."
+ IDS_CHOOSE_CATEGORY "Please choose a category."
+ IDS_CHOOSE_BOTH "Please choose a subcategory or an application."
+ IDS_XMLERROR_1 "Could not find the xml file !"
+ IDS_XMLERROR_2 "Could not parse the xml file !"
+ IDS_DOWNLOAD_ERROR "Unable to download the file.\nPlease check your internet connection."
+ IDS_VERSION "Version: "
+ IDS_LICENCE "Licence: "
+ IDS_MAINTAINER "Maintainer: "
+ IDS_APPS_TITLE "Applications"
+ IDS_CATS_TITLE "Categories"
+ IDS_CHOOSE_FOLDER "Please, choose the folder..."
+ IDS_NOTCREATE_REGKEY "Could not create the registry key."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"
+ TTT_HELPBUTTON "Get help about the downloader"
+ TTT_UPDATEBUTTON "Not yet available"
+ TTT_PROFBUTTON "Let you configure the downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/es-ES.rc b/reactos/base/applications/downloader/lang/es-ES.rc
new file mode 100644
index 00000000000..ed4d08abbc3
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/es-ES.rc
@@ -0,0 +1,66 @@
+/*
+ *Spanish Language resource file
+ * Actualizado Javier Remacha 2007-12-01,2007-12-31
+ */
+
+LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Descargar..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Cancelar", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Preferencias"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Carpeta de descarga:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Seleccionar...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Borrar archivos de instalaciуn tras la instalaciуn", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Actualizar servidor:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&Aceptar", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Cancelar", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "ЎDescargar! - Descargador de ReactOS"
+ IDS_WELCOME_TITLE "Bienvenido al descargador de ReactOS"
+ IDS_WELCOME "Por favor selecciona una categorнa de la izquierda. Esta es la versiуn 1.1."
+ IDS_NO_APP_TITLE "Ninguna aplicaciуn seleccionada"
+ IDS_NO_APP "Por favor seleccione una Aplicaciуn antes de pulsar el botуn de Descarga, si necesita asistencia por favor pulsa el botуn con la interrogaciуn en la esquina superior derecha."
+ IDS_UPDATE_TITLE "Actualizar"
+ IDS_UPDATE "Perdуn esta caracterнstica no a sido implementada todavнa."
+ IDS_HELP_TITLE "Ayuda"
+ IDS_HELP "Selecciona una categorнa de la izquierda, entonces selecciona una aplicaciуn y pulsa el botуn de descargar. Para actualizar la informaciуn de la aplicaciуn pulsa el botуn junto al botуn de ayuda."
+ IDS_NO_APPS "Perdуn, aun no hay ninguna aplicaciуn en esta categorнa. Puedes ayudar y aсadir mбs aplicaciones."
+ IDS_CHOOSE_APP "Por favor selecciona una aplicaciуn."
+ IDS_CHOOSE_SUB "Por favor selecciona una subcategorнa."
+ IDS_CHOOSE_CATEGORY "Por favor selecciona una categorнa."
+ IDS_CHOOSE_BOTH "Por favor selecciona una subcategoria o una aplicaciуn."
+ IDS_XMLERROR_1 "ЎNo se a encontrado el archivo xml!"
+ IDS_XMLERROR_2 "ЎNo se ha podido analizar el archivo xml!"
+ IDS_DOWNLOAD_ERROR "Imposible descargar el archivo.\nPor favor verifica tu conexiуn a internet."
+ IDS_VERSION "Versiуn: "
+ IDS_LICENCE "Licencia: "
+ IDS_MAINTAINER "Mantenido por: "
+ IDS_APPS_TITLE "Aplicaciones"
+ IDS_CATS_TITLE "Categorias"
+ IDS_CHOOSE_FOLDER "Por favor, seleccione la carpeta..."
+ IDS_NOTCREATE_REGKEY "No se puede crear la llave del registro."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "ЎImposible crear una carpeta con este nombre!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s en necesario para ejecutar %s. їDesea instalar %s ahora?"
+ TTT_HELPBUTTON "Obtenga ayuda acerca de Downloader"
+ TTT_UPDATEBUTTON "No disponible todavнa"
+ TTT_PROFBUTTON "Le permite configurar Downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/fr-FR.rc b/reactos/base/applications/downloader/lang/fr-FR.rc
new file mode 100644
index 00000000000..eb3ae76a6b3
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/fr-FR.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Tйlйchargement..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Prйfйrences"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Rйpertoire de tйlйchargement :", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "C&hoisir...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "Supprimer les fichiers aprиs l'installation", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Serveur de mise-а-jour :", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "Annuler", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Tйlйcharger ! - Tйlйchargeur de ReactOS"
+ IDS_WELCOME_TITLE "Bienvenue dans le Tйlйchargeur de ReactOS"
+ IDS_WELCOME "Veuillez choisir une catйgorie sur la gauche. C'est la version 1.1."
+ IDS_NO_APP_TITLE "Aucune application selectionnйe"
+ IDS_NO_APP "Veuillez sйlectionner une application avant de cliquer sur le bouton Tйlйcharger, si vous avez besoin d'aide, veuillez cliquer sur le point d'interrogation dans le coin supйrieur droit."
+ IDS_UPDATE_TITLE "Mise а jour"
+ IDS_UPDATE "Dйsolй, cette fonctionnalitй n'est pas encore implйmentйe."
+ IDS_HELP_TITLE "Aide"
+ IDS_HELP "Choisissez une catйgorie sur la gauche, puis choisissez une application et cliquez sur le bouton Tйlйcharger. Pour mettre а jour les informations sur l'application, cliquez sur le bouton а cфtй du bouton d'aide."
+ IDS_NO_APPS "Dйsolй, il n'y a pas encore d'application dans cette catйgorie. Vous pouvez contribuer et ajouter plus d'applications."
+ IDS_CHOOSE_APP "Veuillez choisir une application."
+ IDS_CHOOSE_SUB "Veuillez choisir une sous-catйgorie."
+ IDS_CHOOSE_CATEGORY "Veuillez choisir une catйgorie."
+ IDS_CHOOSE_BOTH "Veuillez choisir une sous-catйgorie ou une application."
+ IDS_XMLERROR_1 "Impossible de trouver le fichier xml !"
+ IDS_XMLERROR_2 "Impossible d'analyser le fichier xml !"
+ IDS_DOWNLOAD_ERROR "Impossible de tйlйcharger le fichier.\nVeuillez vйrifier votre connexion Internet."
+ IDS_VERSION "Version: "
+ IDS_LICENCE "Licence: "
+ IDS_MAINTAINER "Maintainer: "
+ IDS_APPS_TITLE "Applications"
+ IDS_CATS_TITLE "Catйgories"
+ IDS_CHOOSE_FOLDER "Veuillez choisir le rйpertoire..."
+ IDS_NOTCREATE_REGKEY "Йchec lors de la crйation de la clй registre."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Йchec lors du rйpertoire avec ce nom !"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s est nйcessaire pour lancer %s. Voulez-vous installer %s maintenant ?"
+ TTT_HELPBUTTON "Obtenez de l'aide а propros du tйlйchargeur"
+ TTT_UPDATEBUTTON "Pas encore disponible"
+ TTT_PROFBUTTON "Vous permet de configurer le tйlйchargeur"
+END
diff --git a/reactos/base/applications/downloader/lang/id-ID.rc b/reactos/base/applications/downloader/lang/id-ID.rc
new file mode 100644
index 00000000000..1b88e2cf3a8
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/id-ID.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Download..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Proferences"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Download folder:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Update server:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
+ IDS_WELCOME_TITLE "Selamat datang di ReactOS Downloader"
+ IDS_WELCOME "Silahkan pilih kategori di sebelah kiri. Ini versi 1.1."
+ IDS_NO_APP_TITLE "Tidak ada aplikasi yang dipilih"
+ IDS_NO_APP "Silahkan pilih Aplikasi sebelum anda mengklik tombol download, jika anda membutuhkan asistensi silahkan klik pada tombol di sudut kanan atas."
+ IDS_UPDATE_TITLE "Mutakhirkan"
+ IDS_UPDATE "Maaf fitur ini belum diimplementasikan."
+ IDS_HELP_TITLE "Bantuan"
+ IDS_HELP "Pilih kategori di sisi kiri, lalu pilih aplikasi dan klik tombol download. Untuk memutakhirkan informasi aplikasi klik tombol disebelah tombol bantuan."
+ IDS_NO_APPS "Maaf, belum ada aplikasi dalam kategori ini. Anda dapat membantu dan menambahkan aplikasi lebih banyak."
+ IDS_CHOOSE_APP "Silahkan pilih aplikasi."
+ IDS_CHOOSE_SUB "Silahkan pilih subkategori."
+ IDS_CHOOSE_CATEGORY "Silahkan pilih kategori."
+ IDS_CHOOSE_BOTH "Silahkan pilih subkategori atau aplikasi."
+ IDS_XMLERROR_1 "Tidak dapat menemukan file xml !"
+ IDS_XMLERROR_2 "Tidak dapat mengurai file xml !"
+ IDS_DOWNLOAD_ERROR "Tidak bisa mendownload file.\nSilahkan periksa koneksi internet anda."
+ IDS_VERSION "Versi: "
+ IDS_LICENCE "Lisensi: "
+ IDS_MAINTAINER "Pemelihara: "
+ IDS_APPS_TITLE "Applications"
+ IDS_CATS_TITLE "Categories"
+ IDS_CHOOSE_FOLDER "Please, choose the folder..."
+ IDS_NOTCREATE_REGKEY "Could not create the registry key."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"
+ TTT_HELPBUTTON "Get help about the downloader"
+ TTT_UPDATEBUTTON "Not yet available"
+ TTT_PROFBUTTON "Let you configure the downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/it-IT.rc b/reactos/base/applications/downloader/lang/it-IT.rc
new file mode 100644
index 00000000000..925dc6b51f1
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/it-IT.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Scarica..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Annulla", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Preferenze"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Cartella dove scaricare:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Scegliere...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Cancellare i file di installazione dopo il setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Server per gli aggiornamenti:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Annulla", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Scarica ! - ReactOS Downloader"
+ IDS_WELCOME_TITLE "Benvenuto al ReactOS Downloader"
+ IDS_WELCOME "Scegli una categoria a sinistra. Questa и la versione 1.1."
+ IDS_NO_APP_TITLE "Nessuna applicazione selezionata"
+ IDS_NO_APP "Scegli una Applicazione prima di premere il bottone Scarica, se serve assistenza clicca sul punto di domanda nell'angolo in alto a destra."
+ IDS_UPDATE_TITLE "Aggiorna"
+ IDS_UPDATE "Funzione non ancora implementata."
+ IDS_HELP_TITLE "Aiuto"
+ IDS_HELP "Scegli una categoria a sinistra, poi scegli una applicazione e clicca il bottone download. Per aggiornare le informazioni sulla applicazione clicca il bottone accanto a quello di aiuto."
+ IDS_NO_APPS "Non ci sono ancora applicazioni in questa categoria. Puoi aiutare aggiungendone altre."
+ IDS_CHOOSE_APP "Scegli una applicazione."
+ IDS_CHOOSE_SUB "Scegli una sottocategoria."
+ IDS_CHOOSE_CATEGORY "Scegli una categoria."
+ IDS_CHOOSE_BOTH "Scegli una sottocategoria o una applicazione."
+ IDS_XMLERROR_1 "File xml non trovato !"
+ IDS_XMLERROR_2 "Impossibile trattare il contenuto del file xml !"
+ IDS_DOWNLOAD_ERROR "Scaricamento del file impossibile.\nVerificare la connessione a Internet."
+ IDS_VERSION "Versione: "
+ IDS_LICENCE "Licenza: "
+ IDS_MAINTAINER "Manutentore: "
+ IDS_APPS_TITLE "Applicazioni"
+ IDS_CATS_TITLE "Categorie"
+ IDS_CHOOSE_FOLDER "Scegliere una cartella..."
+ IDS_NOTCREATE_REGKEY "Impossibile creare la chiave del registry."
+ IDS_DOWNLOAD_FOLDER "Scarica"
+ IDS_UNABLECREATE_FOLDER "Impossibile creare una cartella con questo nome!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s и necessario per la esecuzione di %s. Si vuole procedere alla installazione di %s?"
+ TTT_HELPBUTTON "Informazioni su ReactOS Downloader"
+ TTT_UPDATEBUTTON "Non disponibile"
+ TTT_PROFBUTTON "Permette la configurazione del downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/lt-LT.rc b/reactos/base/applications/downloader/lang/lt-LT.rc
new file mode 100644
index 00000000000..cf5be5ff85e
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/lt-LT.rc
@@ -0,0 +1,63 @@
+/* Translation by Vytis "CMan" Girdюijauskas (cman@cman.us) */
+
+LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Siunиiama..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Atрaukti", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Nuostatos"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Siuntш katalogas:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Pasirinkti...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Naikinti diegimo bylas baigus diegimа", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Atnaujinimш serveris:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Atрaukti", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Download ! - ReactOS atsiuntimш tvarkytuvл"
+ IDS_WELCOME_TITLE "Jus sveikina ReactOS atsiuntimш tvarkytuvл"
+ IDS_WELCOME "Praрome pasirinkti kategorijа kairлje. \nИia yra versija 1.1."
+ IDS_NO_APP_TITLE "Nepasirinkta programa"
+ IDS_NO_APP "Praрome pasirinkti programа prieр paspaudюiant siuntimo mygtukа, jei jums reikalinga pagalba, praрome spausti ant klaustuko virрutiniame deрiniajame kampe."
+ IDS_UPDATE_TITLE "Atnaujinti"
+ IDS_UPDATE "Atsipraрome, bet рi funkcija dar nesukurta."
+ IDS_HELP_TITLE "Pagalba"
+ IDS_HELP "Pasirinkite kategorijа kairлje, tuomet pasirinkite programа ir spauskite siuntimo mygtukа. Norлdami atnaujinti programos informacijа, spaukite mygtukа, kuris yra рalia nuostatш mygtuko."
+ IDS_NO_APPS "Atsipraрome, bet рioje kategorijoje programш dar nлra. Jыs galite padлti pridлdami daugiau programш."
+ IDS_CHOOSE_APP "Praрome pasirinkti programа."
+ IDS_CHOOSE_SUB "Praрome pasirinkti pokategorб."
+ IDS_CHOOSE_CATEGORY "Praрome pasirinkti kategorijа."
+ IDS_CHOOSE_BOTH "Praрome pasirinkti pokategorб arba programа."
+ IDS_XMLERROR_1 "Nepavyko rasti xml bylos!"
+ IDS_XMLERROR_2 "Nepavyko nuskaityti xml bylos!"
+ IDS_DOWNLOAD_ERROR "Nepavyko parsiшsti bylos.\nPraрome patikrinti interneto ryрб."
+ IDS_VERSION "Versija: "
+ IDS_LICENCE "Licencija: "
+ IDS_MAINTAINER "Palaikymas: "
+ IDS_APPS_TITLE "Programos"
+ IDS_CATS_TITLE "Kategorijos"
+ IDS_CHOOSE_FOLDER "Praрome pasirinkti katalogа..."
+ IDS_NOTCREATE_REGKEY "Nepavyko sukurti registro rakto."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Nepavyko sukurti katalogo su рiuo vardu!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s reikalingas paleisti %s. Diegti %s dabar?"
+ TTT_HELPBUTTON "Pateikia informacijа apie naudojimаsi programa"
+ TTT_UPDATEBUTTON "Dar nлra"
+ TTT_PROFBUTTON "Leidюia konfiguruoti programа"
+END
diff --git a/reactos/base/applications/downloader/lang/no-NO.rc b/reactos/base/applications/downloader/lang/no-NO.rc
new file mode 100644
index 00000000000..0a03c9bfa43
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/no-NO.rc
@@ -0,0 +1,61 @@
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Nedlasting..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Prosess1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Innstillinger"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Nedlastingsmappe:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "V&elg...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Slett installasjonsfiler etter innstallering", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Oppdater server:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Avbryt", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Nedlasting ! - ReactOS Nedlasting"
+ IDS_WELCOME_TITLE "Velkommen til ReactOS Nedlasting"
+ IDS_WELCOME "Vennligst velg en kategori til hшyre. Dette er versjon 1.1."
+ IDS_NO_APP_TITLE "Ingen applikasjoner er valgt"
+ IDS_NO_APP "Vennligst velg en applikasjon fшr du klikker pе nedlasting knappen, hvis du trenger hjelp vennligst klikk pе spшrsmеlsmerke knappen pе toppen i hшyre hjшrne."
+ IDS_UPDATE_TITLE "Oppdater"
+ IDS_UPDATE "Beklager denne funksjonen er ikke implementert ennе."
+ IDS_HELP_TITLE "Hjelp"
+ IDS_HELP "Velg en kategori til venstre, ogsе velg en applikasjon og klikk pе nedlastings knappen. For е oppdatere applikasjon informasjonen klikk pе knappen neste etter hjelp knappen."
+ IDS_NO_APPS "Beklager, det er ingen applikasjoner i denne kategorien ennе. Du kan hjelpe og legge til flere applikasjoner."
+ IDS_CHOOSE_APP "Vennligst velg en applikasjon."
+ IDS_CHOOSE_SUB "Vennligst velg en underkategori."
+ IDS_CHOOSE_CATEGORY "Vennligst velg en kategori."
+ IDS_CHOOSE_BOTH "Vennligst velg en underkategori eller en applikasjon."
+ IDS_XMLERROR_1 "Kan ikke finne xml filen !"
+ IDS_XMLERROR_2 "Kan ikke analysere xml filen !"
+ IDS_DOWNLOAD_ERROR "Ikke mulig е laste ned filen.\nVennligst sjekk din internett forbindelse."
+ IDS_VERSION "Versjon: "
+ IDS_LICENCE "Lisens: "
+ IDS_MAINTAINER "Produsent: "
+ IDS_APPS_TITLE "Applikasjoner"
+ IDS_CATS_TITLE "Kategori"
+ IDS_CHOOSE_FOLDER "Vennligst, velg mappen..."
+ IDS_NOTCREATE_REGKEY "Kan ikke opprette registernшkkel."
+ IDS_DOWNLOAD_FOLDER "Nedlasting"
+ IDS_UNABLECREATE_FOLDER "Ikke mulig е opprette mappe med dette navnet!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s trengs е bli kjшrt %s. Skal %s bli innstallert nе?"
+ TTT_HELPBUTTON "Fе hjelp om nedlastingen"
+ TTT_UPDATEBUTTON "Ikke ennе tilgjengelig"
+ TTT_PROFBUTTON "La deg konfigurere nedlastingen"
+END
diff --git a/reactos/base/applications/downloader/lang/pl-PL.rc b/reactos/base/applications/downloader/lang/pl-PL.rc
new file mode 100644
index 00000000000..adcc2d49efd
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/pl-PL.rc
@@ -0,0 +1,68 @@
+/*
+ * translated by Caemyr - Olaf Siejka (Feb, 2008)
+ * Use ReactOS forum PM or IRC to contact me
+ * http://www.reactos.org
+ * IRC: irc.freenode.net #reactos-pl;
+ */
+
+LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Њci№gaj..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Anuluj", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Ustawienia"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Katalog do њci№gania:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Wybierz...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Skasuj њci№gniкte pliki po zainstalowaniu programu", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Uaktualnij:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Anuluj", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Њci№gnij ! - Menedїer pobierania dla ReactOS"
+ IDS_WELCOME_TITLE "Witamy w Њci№gnij dla ReactOS"
+ IDS_WELCOME "Proszк wybraж kategoriк po lewej. Wersja programu: 1.1."
+ IDS_NO_APP_TITLE "Nie wybrano programu"
+ IDS_NO_APP "Proszк wybraж program, przed klikniкciem w przycisk Њci№gnij. W razie problemуw kliknij w znak zapytania, w prawym gуrnym rogu okna."
+ IDS_UPDATE_TITLE "Uaktualnij"
+ IDS_UPDATE "Przepraszamy, ta opcja nie jest jeszcze dostкpna."
+ IDS_HELP_TITLE "Pomoc"
+ IDS_HELP "Wybierz kategoriк po lewej, nastкpnie wybierz program i kliknij w przycisk Њci№gnij. Aby uaktualniж listк programуw, naciњnij przycisk obok przycisku Pomocy."
+ IDS_NO_APPS "Przepraszamy, nie ma programуw w tej kategorii. Moїesz pomуc nam w wyborze nowych programуw."
+ IDS_CHOOSE_APP "Proszк wybraж program."
+ IDS_CHOOSE_SUB "Proszк wybraж podkategoriк."
+ IDS_CHOOSE_CATEGORY "Proszк wybraж kategoriк."
+ IDS_CHOOSE_BOTH "Proszк wybraж podkategoriк albo program."
+ IDS_XMLERROR_1 "Plik XML nie zostaі znaleziony !"
+ IDS_XMLERROR_2 "Nie udaіo siк przetworzyж pliku XML !"
+ IDS_DOWNLOAD_ERROR "Sci№ganie pliku nieudane.\nProszк sprawdziж poі№czenie z internetem."
+ IDS_VERSION "Wersja: "
+ IDS_LICENCE "Licenccja: "
+ IDS_MAINTAINER "Opiekun: "
+ IDS_APPS_TITLE "Programy"
+ IDS_CATS_TITLE "Kategorie"
+ IDS_CHOOSE_FOLDER "Proszк wybraж katalog..."
+ IDS_NOTCREATE_REGKEY "Nie udaіo siк utworzyж kluczy rejestru."
+ IDS_DOWNLOAD_FOLDER "Pobrane"
+ IDS_UNABLECREATE_FOLDER "Nie udaіo siк stworzyж katalogu o tej nazwie!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s jest wymagany do uruchomienia %s. Czy chcesz zainstalowaж %s w tej chwili?"
+ TTT_HELPBUTTON "Pomoc Menedїera pobierania"
+ TTT_UPDATEBUTTON "Niedostкpne"
+ TTT_PROFBUTTON "Ustawienia Menedїera pobierania"
+END
diff --git a/reactos/base/applications/downloader/lang/ru-RU.rc b/reactos/base/applications/downloader/lang/ru-RU.rc
new file mode 100644
index 00000000000..386592561e2
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/ru-RU.rc
@@ -0,0 +1,63 @@
+//Russian language file. (Dmitry Chapyshev, 2007.06.21)
+
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Загрузка..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 17, SS_CENTER
+ PUSHBUTTON "Отмена", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Настройки"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Папка для закачки:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Выбрать...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Удалять установочные файлы после установки", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Сервер обновлений:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "О&тмена", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Скачать! - Менеджер закачек ReactOS"
+ IDS_WELCOME_TITLE "Добро пожаловать в Менеджер закачек ReactOS"
+ IDS_WELCOME "Пожалуйста выберите категорию справа. Версия 1.1"
+ IDS_NO_APP_TITLE "Приложение не выбрано"
+ IDS_NO_APP "Пожалуйста, выберите приложение прежде, чем нажать кнопку загрузки. Если вам нужна справка, то нажмите кнопку со знаком вопроса в верхнем правом углу."
+ IDS_UPDATE_TITLE "Обновить"
+ IDS_UPDATE "Извините, данная возможность на данным момент недоступна."
+ IDS_HELP_TITLE "Справка"
+ IDS_HELP "Выберите категорию слева, затем выберите приложение и нажмите кнопку загрузки. Для получения информации об обновлениях нажмите кнопку рядом с кнопкой справки."
+ IDS_NO_APPS "Извените, на данный момент в этой категории приложений нет, но вы можете помочь добавить их."
+ IDS_CHOOSE_APP "Пожалуйста выберите приложение."
+ IDS_CHOOSE_SUB "Пожалуйста выберите подкатегорию."
+ IDS_CHOOSE_CATEGORY "Пожалуйста выберите категорию."
+ IDS_CHOOSE_BOTH "Пожалуйста выберите подкатегорию или приложение."
+ IDS_XMLERROR_1 "Не удалось найти xml-файл!"
+ IDS_XMLERROR_2 "Не удалось обработать xml-файл!"
+ IDS_DOWNLOAD_ERROR "Не удается загрузить файл.\nПожалуйста проверьте ваше подключение к интернет."
+ IDS_VERSION "Версия: "
+ IDS_LICENCE "Лицензия: "
+ IDS_MAINTAINER "Производитель: "
+ IDS_APPS_TITLE "Приложения"
+ IDS_CATS_TITLE "Категории"
+ IDS_CHOOSE_FOLDER "Пожалуйства выберите папку..."
+ IDS_NOTCREATE_REGKEY "Не удалось создать ключ в реестре."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Не удалось создать папку с таким именем!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s требуется для запуска %s. Установить %s?"
+ TTT_HELPBUTTON "Показать справку программы"
+ TTT_UPDATEBUTTON "Сейчас недоступно"
+ TTT_PROFBUTTON "Выполнить настройку программы"
+END
diff --git a/reactos/base/applications/downloader/lang/sk-SK.rc b/reactos/base/applications/downloader/lang/sk-SK.rc
new file mode 100644
index 00000000000..9258d705f1e
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/sk-SK.rc
@@ -0,0 +1,67 @@
+/* TRANSLATOR: Mбrio Kaиmбr /Mario Kacmar/ aka Kario (kario@szm.sk)
+ * DATE OF TR: 21-01-2008
+ * LastChange: 31-10-2008
+ */
+
+
+LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Sќahujem ..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Zruљiќ", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Nastavenia" //Preferencies
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Prieиinok sќahovania:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Vybraќ ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Odstrбniќ inљtalaиnй sъbory po nainљtalovanн", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Aktualizovaќ server:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Zruљiќ", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Ќahaj! - Downloader systйmu ReactOS"
+ IDS_WELCOME_TITLE "Vitajte v programe Downloader systйmu ReactOS"
+ IDS_WELCOME "Vyberte, prosнm, kategуriu na ѕavej strane. Toto je verzia 1.1."
+ IDS_NO_APP_TITLE "Nie je vybranэ ћiadny program"
+ IDS_NO_APP "Vyberte, prosнm, program predtэm neћ kliknete na tlaиidlo stiahnuќ. Ak potrebujete pomoc, kliknite, prosнm, na tlaиidlo otбznika v pravom hornom rohu."
+ IDS_UPDATE_TITLE "Aktualizovaќ"
+ IDS_UPDATE "Prepбиte, ale tбto funkcia zatiaѕ nie je implementovanб."
+ IDS_HELP_TITLE "Pomocnнk"
+ IDS_HELP "Vyberte kategуriu na ѕavej strane, potom vyberte program a kliknite na tlaиidlo stiahnuќ. Pre aktualizбciu informбcii o programe kliknite na tlaиidlo vedѕa tlaиidla pomoc."
+ IDS_NO_APPS "Prepбиte, ale zatiaѕ sa v tejto kategуrii nenachбdzajъ ћiadne programy. Mфћete pomфcќ a pridaќ viac programov."
+ IDS_CHOOSE_APP "Vyberte program, prosнm."
+ IDS_CHOOSE_SUB "Vyberte podkategуriu, prosнm."
+ IDS_CHOOSE_CATEGORY "Vyberte kategуriu, prosнm."
+ IDS_CHOOSE_BOTH "Vyberte podkategуriu alebo program, prosнm."
+ IDS_XMLERROR_1 "Nepodarilo sa nбjsќ sъbor xml!"
+ IDS_XMLERROR_2 "Nepodarilo sa sprбvne analyzovaќ sъbor xml!"
+ IDS_DOWNLOAD_ERROR "Nepodarilo sa stiahnuќ sъbor.\nSkontrolujte, prosнm, pripojenie do siete internet."
+ IDS_VERSION "Verzia: "
+ IDS_LICENCE "Licencia: "
+ IDS_MAINTAINER "Ъdrћbбr: " //Maintainer
+ IDS_APPS_TITLE "Programy"
+ IDS_CATS_TITLE "Kategуrie"
+ IDS_CHOOSE_FOLDER "Vyberte, prosнm, prieиinok ..."
+ IDS_NOTCREATE_REGKEY "Nepodarilo sa vytvoriќ kѕъи registra."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Nie je moћnй vytvoriќ prieиinok s tэmto nбzvom!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s je potrebnэ pre spustenie %s. Mб sa %s nainљtalovaќ teraz?"
+ TTT_HELPBUTTON "Zнskaќ nбpoveп k programu downloader"
+ TTT_UPDATEBUTTON "Zatiaѕ nie je k dispozнciн"
+ TTT_PROFBUTTON "Dovolн Vбm konfigurovaќ program downloader"
+END
diff --git a/reactos/base/applications/downloader/lang/uk-UA.rc b/reactos/base/applications/downloader/lang/uk-UA.rc
new file mode 100644
index 00000000000..b43a863cde4
--- /dev/null
+++ b/reactos/base/applications/downloader/lang/uk-UA.rc
@@ -0,0 +1,69 @@
+/*
+ * PROJECT: ReactOS Downloader
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: rosapps/downloader/lang/uk-UA.rc
+ * PURPOSE: Ukraianian Language File for Downloader
+ * TRANSLATOR: Artem Reznikov
+ */
+
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Завантаження..."
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ PUSHBUTTON "Скасувати", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+END
+
+IDD_PROF DIALOGEX 6, 6, 267, 110
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
+CAPTION "Настройки"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Папка для завантаження:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Вибрати...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Видаляти настановні файли після установки", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Сервер оновлень:", -1, 6, 55, 140, 8
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
+ PUSHBUTTON "&Скасувати", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "Завантажити ! - Завантажувач ReactOS"
+ IDS_WELCOME_TITLE "Ласкаво просимо у Завантажувач ReactOS"
+ IDS_WELCOME "Будь ласка виберіть категорію зліва. Це версія 1.1."
+ IDS_NO_APP_TITLE "Додаток не вибраний"
+ IDS_NO_APP "Будь ласка, виберіть додаток перш ніж натиснути кнопку завантаження. Якщо Вам потрібна допомога, натисніть кнопку зі знаком питання у верхньому правому кутку."
+ IDS_UPDATE_TITLE "Оновити"
+ IDS_UPDATE "Вибачте, дана можливість ще недоступна."
+ IDS_HELP_TITLE "Довідка"
+ IDS_HELP "Виберіть категорію зліва, потім виберіть додаток і натисніть кнопку завантаження. Для отримання інформації про оновлення натисніть кнопку поряд з кнопкою довідки."
+ IDS_NO_APPS "Вибачте, в цій категорії ще немає додатків. Ви можете допомогти і додати більше додатків."
+ IDS_CHOOSE_APP "Будь ласка виберіть додаток."
+ IDS_CHOOSE_SUB "Будь ласка виберіть підкатегорію."
+ IDS_CHOOSE_CATEGORY "Будь ласка виберіть категорію."
+ IDS_CHOOSE_BOTH "Будь ласка виберіть підкатегорію або додаток."
+ IDS_XMLERROR_1 "Не вдалося знайти файл XML !"
+ IDS_XMLERROR_2 "Не вдалося обробити файл XML !"
+ IDS_DOWNLOAD_ERROR "Неможливо завантажити файл.\nБудь ласка перевірте ваше інтернет-з'єднання."
+ IDS_VERSION "Версія: "
+ IDS_LICENCE "Ліцензія: "
+ IDS_MAINTAINER "Виробник: "
+ IDS_APPS_TITLE "Додатки"
+ IDS_CATS_TITLE "Категорії"
+ IDS_CHOOSE_FOLDER "Будь ласка виберіть папку..."
+ IDS_NOTCREATE_REGKEY "Не вдалося створити ключ у реєстрі."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Не вдалося створити папку з таким ім'ям!"
+ IDS_UPDATE_URL "http://svn.reactos.org"
+ IDS_INSTALL_DEP "%s потрібний щоб запустити %s. Встановити %s зараз?"
+ TTT_HELPBUTTON "Отримайти допомогу про завантажувач"
+ TTT_UPDATEBUTTON "Поки що не доступно"
+ TTT_PROFBUTTON "Налаштувати завантажувач"
+END
diff --git a/reactos/base/applications/downloader/main.c b/reactos/base/applications/downloader/main.c
new file mode 100644
index 00000000000..5e14ecb2de6
--- /dev/null
+++ b/reactos/base/applications/downloader/main.c
@@ -0,0 +1,922 @@
+/* PROJECT: ReactOS Downloader
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/downloader/xml.c
+ * PURPOSE: Main program
+ * PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven, Dmitry Chapyshev
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "resources.h"
+#include "structures.h"
+
+HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton, hProfButton;
+HBITMAP hLogo, hUnderline;
+WCHAR* DescriptionHeadline = L"";
+WCHAR* DescriptionText = L"";
+WCHAR ApplicationText[700];
+
+struct Category Root;
+struct Application* SelectedApplication;
+
+INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM);
+BOOL ProcessXML (const char* filename, struct Category* Root);
+VOID FreeTree (struct Category* Node);
+WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
+
+
+BOOL
+getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) {
+ HKEY hKey1;
+ HKEY hKey2;
+ DWORD Type = 0;
+ DWORD Size = MAX_PATH;
+ WCHAR Value[MAX_PATH];
+ WCHAR KeyName[MAX_PATH];
+ LONG i = 0;
+
+ if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_READ,&hKey1) == ERROR_SUCCESS) {
+ while (RegEnumKeyExW(hKey1,i,KeyName,&Size,NULL,NULL,NULL,NULL) == ERROR_SUCCESS) {
+ ++i;
+ RegOpenKeyExW(hKey1,KeyName,0,KEY_READ,&hKey2);
+ Size = MAX_PATH;
+ if (RegQueryValueExW(hKey2,L"DisplayName",0,&Type,(LPBYTE)Value,&Size) == ERROR_SUCCESS) {
+ Size = MAX_PATH;
+ if (StrCmpW(Value,RegName) == 0) {
+ if (RegQueryValueExW(hKey2,L"UninstallString",0,&Type,(LPBYTE)Uninstaller,&Size) == ERROR_SUCCESS) {
+ RegCloseKey(hKey2);
+ RegCloseKey(hKey1);
+ return TRUE;
+ } else {
+ RegCloseKey(hKey2);
+ RegCloseKey(hKey1);
+ return FALSE;
+ }
+ }
+ }
+ RegCloseKey(hKey2);
+ Size = MAX_PATH;
+ }
+ RegCloseKey(hKey1);
+ }
+ return FALSE;
+}
+
+void
+ShowMessage (WCHAR* title, WCHAR* message)
+{
+ DescriptionHeadline = title;
+ DescriptionText = message;
+ InvalidateRect(hwnd,NULL,TRUE);
+ UpdateWindow(hwnd);
+}
+
+void
+AddItems(HWND hwnd, struct Category* Category, struct Category* Parent)
+{
+ TV_INSERTSTRUCTW Insert;
+
+ Insert.item.lParam = (LPARAM)Category;
+ Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
+ Insert.item.pszText = Category->Name;
+ Insert.item.cchTextMax = lstrlenW(Category->Name);
+ Insert.item.iImage = Category->Icon;
+ Insert.item.iSelectedImage = Category->Icon;
+ Insert.hInsertAfter = TVI_LAST;
+ Insert.hParent = Category->Parent ? Category->Parent->TreeviewItem : TVI_ROOT;
+
+ Category->TreeviewItem = (HTREEITEM)SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert);
+
+ if(Category->Next)
+ AddItems (hwnd,Category->Next,Parent);
+
+ if(Category->Children)
+ AddItems (hwnd,Category->Children,Category);
+}
+
+void
+CategoryChoosen(HWND hwnd, struct Category* Category)
+{
+ struct Application* CurrentApplication;
+ TV_INSERTSTRUCTW Insert;
+ WCHAR Uninstaller[200];
+ SelectedApplication = NULL;
+
+ if(Category->Children && !Category->Apps)
+ ShowMessage(Category->Name, Strings[IDS_CHOOSE_SUB]);
+ else if(!Category->Children && Category->Apps)
+ ShowMessage(Category->Name, Strings[IDS_CHOOSE_APP]);
+ else if(Category->Children && Category->Apps)
+ ShowMessage(Category->Name, Strings[IDS_CHOOSE_BOTH]);
+ else
+ ShowMessage(Category->Name, Strings[IDS_NO_APPS]);
+
+ (void)TreeView_DeleteItem(hwnd, TVI_ROOT);
+ (void)TreeView_DeleteItem(hwnd, TVI_ROOT); // Delete twice to bypass bug in windows
+
+ Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE;
+ Insert.hInsertAfter = TVI_LAST;
+ Insert.hParent = TVI_ROOT;
+
+ CurrentApplication = Category->Apps;
+ while(CurrentApplication)
+ {
+ Insert.item.lParam = (LPARAM)CurrentApplication;
+ Insert.item.pszText = CurrentApplication->Name;
+ Insert.item.cchTextMax = lstrlenW(CurrentApplication->Name);
+ Insert.item.iImage = 10;
+ if(StrCmpW(CurrentApplication->RegName,L"")) {
+ if(getUninstaller(CurrentApplication->RegName, Uninstaller))
+ Insert.item.iImage = 9;
+ }
+ SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert);
+ CurrentApplication = CurrentApplication->Next;
+ }
+}
+
+BOOL CreateToolTip(HWND hwndTool, HWND hDlg, WCHAR* pText)
+{
+ HWND hwndTip;
+ TOOLINFO toolInfo;
+
+ if (!hwndTool || !hDlg || !pText)
+ return FALSE;
+
+ hwndTip = CreateWindowExW(0, TOOLTIPS_CLASS, NULL,
+ WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ hDlg, NULL,
+ GetModuleHandle(NULL), NULL);
+ if (!hwndTip)
+ return FALSE;
+
+ ZeroMemory(&toolInfo, sizeof(TOOLINFO));
+ toolInfo.cbSize = sizeof(toolInfo);
+ toolInfo.hwnd = hDlg;
+ toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
+ toolInfo.uId = (UINT_PTR)hwndTool;
+ toolInfo.lpszText = pText;
+ SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
+
+ return TRUE;
+}
+
+BOOL
+SetupControls (HWND hwnd)
+{
+ TV_INSERTSTRUCTW Insert = {0};
+ HIMAGELIST hImageList;
+ HINSTANCE hInstance = GetModuleHandle(NULL);
+ WCHAR Cats[MAX_STRING_LENGHT], Apps[MAX_STRING_LENGHT];
+ WCHAR Tooltip1[MAX_STRING_LENGHT], Tooltip2[MAX_STRING_LENGHT], Tooltip3[MAX_STRING_LENGHT];
+ char Buf[MAX_PATH];
+
+ // Getting downloader.xml path
+ if(!GetSystemDirectoryA(Buf,sizeof(Buf))) return FALSE;
+ strcat(Buf, "\\downloader.xml");
+
+ // Parse the XML file
+ if (!ProcessXML(Buf, &Root))
+ return FALSE;
+
+ LoadStringW(hInstance, IDS_CATS_TITLE, Cats, MAX_STRING_LENGHT);
+ LoadStringW(hInstance, IDS_APPS_TITLE, Apps, MAX_STRING_LENGHT);
+
+ // Set up the controls
+ hCategories = CreateWindowExW(0, WC_TREEVIEWW, Cats,
+ WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
+ 0, 0, 0, 0, hwnd, NULL, hInstance, NULL);
+
+ hApps = CreateWindowExW(0, WC_TREEVIEWW, Apps,
+ WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
+ 0, 0, 0, 0, hwnd, NULL, hInstance, NULL);
+
+ hLogo = LoadBitmap(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDB_LOGO));
+ hUnderline = LoadBitmap(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDB_UNDERLINE));
+
+ hHelpButton = CreateWindowW(L"Button", L"",
+ WS_CHILD | WS_VISIBLE | BS_ICON,
+ 550, 10, 40, 40,
+ hwnd, 0, hInstance, NULL);
+ LoadString(hInstance, TTT_HELPBUTTON, Tooltip1, MAX_STRING_LENGHT);
+ CreateToolTip(hHelpButton, hwnd, Tooltip1);
+
+ hUpdateButton = CreateWindowW(L"Button", L"",
+ WS_CHILD | WS_VISIBLE | BS_ICON,
+ 450, 10, 40, 40,
+ hwnd, 0, hInstance, NULL);
+ LoadString(hInstance, TTT_UPDATEBUTTON, Tooltip2, MAX_STRING_LENGHT);
+ CreateToolTip(hUpdateButton, hwnd, Tooltip2);
+
+ hProfButton = CreateWindowW(L"Button", L"",
+ WS_CHILD | WS_VISIBLE | BS_ICON,
+ 500, 10, 40, 40,
+ hwnd, 0, hInstance, NULL);
+ LoadString(hInstance, TTT_PROFBUTTON, Tooltip3, MAX_STRING_LENGHT);
+ CreateToolTip(hProfButton, hwnd, Tooltip3);
+
+ hDownloadButton = CreateWindowW(L"Button", L"",
+ WS_CHILD | WS_VISIBLE | BS_BITMAP,
+ 330, 505, 140, 33,
+ hwnd, 0, hInstance, NULL);
+
+ hUninstallButton = CreateWindowW(L"Button", L"",
+ WS_CHILD | WS_VISIBLE | BS_BITMAP,
+ 260, 505, 140, 33,
+ hwnd, 0, hInstance, NULL);
+
+ SendMessageW(hProfButton,
+ BM_SETIMAGE,
+ (WPARAM)IMAGE_ICON,
+ (LPARAM)(HANDLE)LoadIcon(hInstance,MAKEINTRESOURCE(IDI_PROF)));
+ SendMessageW(hHelpButton,
+ BM_SETIMAGE,
+ (WPARAM)IMAGE_ICON,
+ (LPARAM)(HANDLE)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HELP)));
+ SendMessageW(hUpdateButton,
+ BM_SETIMAGE,
+ (WPARAM)IMAGE_ICON,
+ (LPARAM)(HANDLE)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UPDATE)));
+ SendMessageW(hDownloadButton,
+ BM_SETIMAGE,
+ (WPARAM)IMAGE_BITMAP,
+ (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_DOWNLOAD)));
+ SendMessageW(hUninstallButton,
+ BM_SETIMAGE,
+ (WPARAM)IMAGE_BITMAP,
+ (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_UNINSTALL)));
+ ShowWindow(hUninstallButton, SW_HIDE);
+
+ // Set deflaut entry for hApps
+ Insert.item.mask = TVIF_TEXT|TVIF_IMAGE;
+ Insert.item.pszText = Strings[IDS_CHOOSE_CATEGORY];
+ Insert.item.cchTextMax = lstrlenW(Strings[IDS_CHOOSE_CATEGORY]);
+ Insert.item.iImage = 0;
+ SendMessage(hApps, TVM_INSERTITEM, 0, (LPARAM)&Insert);
+
+ // Create Tree Icons
+ hImageList = ImageList_Create(16, 16, ILC_COLORDDB, 1, 1);
+ SendMessageW(hCategories, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList);
+ SendMessageW(hApps, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList);
+
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_0)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_1)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_2)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_3)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_4)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_5)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_6)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_7)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_8)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_9)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_10)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_11)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_12)), NULL);
+ ImageList_Add(hImageList,
+ LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_13)), NULL);
+
+ // Fill the TreeViews
+ AddItems (hCategories, Root.Children, NULL);
+
+ return TRUE;
+}
+
+static void
+ResizeControl (HWND hwnd, int x1, int y1, int x2, int y2)
+{
+ // Make resizing a little easier
+ MoveWindow(hwnd, x1, y1, x2-x1, y2-y1, TRUE);
+}
+
+static void
+DrawBitmap (HDC hdc, int x, int y, HBITMAP hBmp)
+{
+ BITMAP bm;
+ HDC hdcMem = CreateCompatibleDC(hdc);
+
+ SelectObject(hdcMem, hBmp);
+ GetObject(hBmp, sizeof(bm), &bm);
+ TransparentBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, 0xFFFFFF);
+
+ DeleteDC(hdcMem);
+}
+
+static void
+DrawDescription (HDC hdc, RECT DescriptionRect)
+{
+ int i;
+ HFONT Font;
+ RECT Rect = {DescriptionRect.left+5, DescriptionRect.top+3, DescriptionRect.right-2, DescriptionRect.top+22};
+
+ // Backgroud
+ Rectangle(hdc, DescriptionRect.left, DescriptionRect.top, DescriptionRect.right, DescriptionRect.bottom);
+
+ // Underline
+ for (i=DescriptionRect.left+1;iRegName, L"")) {
+ if(getUninstaller(App->RegName, Uninstaller)) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+struct Application* GetDependency(const WCHAR* Dependency)
+{
+ struct Category* Category = Root.Children;
+
+ while (Category->Next)
+ {
+ while (Category->Apps)
+ {
+ if(StrCmpW(Category->Apps->RegName, Dependency) == 0)
+ return Category->Apps;
+ Category->Apps = Category->Apps->Next;
+ }
+ Category = Category->Next;
+ }
+ return NULL;
+}
+
+LRESULT CALLBACK
+WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
+{
+ static RECT DescriptionRect;
+ struct Application* AppToInstall;
+ WCHAR InstallDep[260];
+ WCHAR InstallDepBuffer[260];
+ WCHAR Title[260];
+
+ switch (Message)
+ {
+ case WM_CREATE:
+ {
+ if(!SetupControls(hwnd))
+ return -1;
+ ShowMessage(Strings[IDS_WELCOME_TITLE], Strings[IDS_WELCOME]);
+ }
+ break;
+
+ case WM_PAINT:
+ {
+ PAINTSTRUCT ps;
+ HDC hdc = BeginPaint(hwnd, &ps);
+ HDC BackbufferHdc = CreateCompatibleDC(hdc);
+ HBITMAP BackbufferBmp = CreateCompatibleBitmap(hdc, ps.rcPaint.right, ps.rcPaint.bottom);
+ SelectObject(BackbufferHdc, BackbufferBmp);
+
+ FillRect(BackbufferHdc, &ps.rcPaint, CreateSolidBrush(RGB(235,235,235)));
+ DrawBitmap(BackbufferHdc, 10, 12, hLogo);
+ DrawDescription(BackbufferHdc, DescriptionRect);
+
+ BitBlt(hdc, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, BackbufferHdc, 0, 0, SRCCOPY);
+ DeleteObject(BackbufferBmp);
+ DeleteDC(BackbufferHdc);
+ EndPaint(hwnd, &ps);
+ }
+ break;
+
+ case WM_COMMAND:
+ {
+ if(HIWORD(wParam) == BN_CLICKED)
+ {
+ if (lParam == (LPARAM)hProfButton)
+ {
+ DialogBox(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_PROF),
+ hwnd,
+ ProfDlgProc);
+ }
+ if (lParam == (LPARAM)hDownloadButton)
+ {
+ if(SelectedApplication)
+ {
+ /* install dependencies */
+ if(StrCmpW(SelectedApplication->Depends, L""))
+ {
+ AppToInstall = SelectedApplication;
+ SelectedApplication = GetDependency(SelectedApplication->Depends);
+ if (SelectedApplication)
+ if (!IsApplicationInstalled(SelectedApplication))
+ {
+ LoadString(GetModuleHandle(NULL), IDS_INSTALL_DEP, InstallDep, sizeof(InstallDep) / sizeof(WCHAR));
+ LoadString(GetModuleHandle(NULL), IDS_WINDOW_TITLE, Title, sizeof(Title) / sizeof(WCHAR));
+ _snwprintf(InstallDepBuffer, sizeof(InstallDepBuffer) / sizeof(WCHAR), InstallDep, SelectedApplication->Name, AppToInstall->Name, SelectedApplication->Name);
+ if (MessageBox(hwnd, InstallDepBuffer, Title, MB_YESNO | MB_ICONINFORMATION) == IDYES)
+ {
+ DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc);
+ }
+ }
+ SelectedApplication = AppToInstall;
+ }
+
+ /* download and install the app */
+ DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc);
+
+ /* install req. hacks to get it working */
+ if(StrCmpW(SelectedApplication->PostInstallAction, L""))
+ {
+ AppToInstall = SelectedApplication;
+ CopyMemory(SelectedApplication->Location, SelectedApplication->PostInstallAction, sizeof(SelectedApplication->Location));
+ DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc);
+ SelectedApplication = AppToInstall;
+ }
+ }
+ else
+ ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]);
+ }
+ else if (lParam == (LPARAM)hUninstallButton)
+ {
+ if(SelectedApplication)
+ {
+ WCHAR Uninstaller[200];
+ if(StrCmpW(SelectedApplication->RegName, L"")) {
+ if(getUninstaller(SelectedApplication->RegName, Uninstaller))
+ startUninstaller(Uninstaller);
+ }
+ }
+ }
+ else if (lParam == (LPARAM)hUpdateButton)
+ {
+ ShowMessage(Strings[IDS_UPDATE_TITLE], Strings[IDS_UPDATE]);
+ }
+ else if (lParam == (LPARAM)hHelpButton)
+ {
+ ShowMessage(Strings[IDS_HELP_TITLE], Strings[IDS_HELP]);
+ }
+ }
+ }
+ break;
+
+ case WM_NOTIFY:
+ {
+ LPNMHDR data = (LPNMHDR)lParam;
+ WCHAR Uninstaller[200];
+
+ if(data->code == TVN_SELCHANGED)
+ {
+ BOOL bShowUninstaller = FALSE;
+ if(data->hwndFrom == hCategories)
+ {
+ struct Category* Category = (struct Category*) ((LPNMTREEVIEW)lParam)->itemNew.lParam;
+ CategoryChoosen (hApps, Category);
+ }
+ else if(data->hwndFrom == hApps)
+ {
+ SelectedApplication = (struct Application*) ((LPNMTREEVIEW)lParam)->itemNew.lParam;
+ if(SelectedApplication)
+ {
+ ApplicationText[0]=L'\0';
+ if(StrCmpW(SelectedApplication->Version, L"")) {
+ StrCatW(ApplicationText, Strings[IDS_VERSION]);
+ StrCatW(ApplicationText, SelectedApplication->Version);
+ StrCatW(ApplicationText, L"\n");
+ }
+ if(StrCmpW(SelectedApplication->Licence, L"")) {
+ StrCatW(ApplicationText, Strings[IDS_LICENCE]);
+ StrCatW(ApplicationText, SelectedApplication->Licence);
+ StrCatW(ApplicationText, L"\n");
+ }
+ if(StrCmpW(SelectedApplication->Maintainer, L"")) {
+ StrCatW(ApplicationText, Strings[IDS_MAINTAINER]);
+ StrCatW(ApplicationText, SelectedApplication->Maintainer);
+ StrCatW(ApplicationText, L"\n");
+ }
+ if(StrCmpW(SelectedApplication->Licence, L"") || StrCmpW(SelectedApplication->Version, L"") || StrCmpW(SelectedApplication->Maintainer, L""))
+ StrCatW(ApplicationText, L"\n");
+ StrCatW(ApplicationText, SelectedApplication->Description);
+ ShowMessage(SelectedApplication->Name, ApplicationText);
+ if(StrCmpW(SelectedApplication->RegName, L"")) {
+ if(getUninstaller(SelectedApplication->RegName, Uninstaller)) {
+ bShowUninstaller = TRUE;
+ }
+ }
+ }
+ }
+ if (bShowUninstaller)
+ showUninstaller();
+ else
+ hideUninstaller();
+ }
+ }
+ break;
+
+ case WM_SIZING:
+ {
+ LPRECT pRect = (LPRECT)lParam;
+ if (pRect->right-pRect->left < 520)
+ pRect->right = pRect->left + 520;
+
+ if (pRect->bottom-pRect->top < 300)
+ pRect->bottom = pRect->top + 300;
+ }
+ break;
+
+ case WM_SIZE:
+ {
+ int Split_Hozizontal = (HIWORD(lParam)-(45+60))/2 + 60;
+ int Split_Vertical = 200;
+ RECT Rect;
+
+ ResizeControl(hCategories, 10, 60, Split_Vertical, HIWORD(lParam)-10);
+ ResizeControl(hApps, Split_Vertical+5, 60, LOWORD(lParam)-10, Split_Hozizontal);
+ SetRect(&Rect, Split_Vertical+5, Split_Hozizontal+5, LOWORD(lParam)-10, HIWORD(lParam)-50);
+ DescriptionRect = Rect;
+
+ MoveWindow(hHelpButton, LOWORD(lParam)-50, 10, 40, 40, TRUE);
+ MoveWindow(hUpdateButton, LOWORD(lParam)-150, 10, 40, 40, TRUE);
+ MoveWindow(hProfButton, LOWORD(lParam)-100, 10, 40, 40, TRUE);
+ if(IsWindowVisible(hUninstallButton))
+ MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2, HIWORD(lParam)-45, 140, 35, TRUE);
+ else
+ MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2-70, HIWORD(lParam)-45, 140, 35, TRUE);
+ MoveWindow(hUninstallButton, (Split_Vertical+LOWORD(lParam))/2-140, HIWORD(lParam)-45, 140, 35, TRUE);
+ }
+ break;
+
+ case WM_DESTROY:
+ {
+ DeleteObject(hLogo);
+ if(Root.Children)
+ FreeTree(Root.Children);
+ PostQuitMessage(0);
+ return 0;
+ }
+ break;
+ }
+
+ return DefWindowProc (hwnd, Message, wParam, lParam);
+}
+
+INT WINAPI
+wWinMain (HINSTANCE hInstance,
+ HINSTANCE hPrevInst,
+ LPTSTR lpCmdLine,
+ INT nCmdShow)
+{
+ int i;
+ WNDCLASSEXW WndClass = {0};
+ MSG msg;
+
+ InitCommonControls();
+
+ // Load strings
+ for(i=0; i
+#include
+
+int main()
+{
+
+ HKEY hKey;
+ DWORD dwVal = 1;
+ DWORD dwSize = MAX_PATH;
+ DWORD lpdwDisposition = 0;
+ CHAR szBuf[MAX_PATH];
+
+ printf("%s", "Setting Diablo 2 commandline parameters to -w -glide...");
+
+ if (RegCreateKeyExA (HKEY_CURRENT_USER,
+ "SOFTWARE\\Blizzard Entertainment\\Diablo II Shareware",
+ 0,
+ NULL,
+ 0,
+ KEY_ALL_ACCESS,
+ NULL,
+ &hKey,
+ &lpdwDisposition));
+ {
+ strcpy(szBuf, "-w -glide");
+
+ RegSetValueExA(hKey, "UseCmdLine", 0, REG_DWORD, (LPCSTR)&dwVal, sizeof(dwVal));
+ RegSetValueExA(hKey, "CmdLine", 0, REG_SZ, (LPCSTR)szBuf, strlen(szBuf)+1);
+
+ RegCloseKey(hKey);
+ printf("%s", "done.");
+
+ }
+
+ return 0;
+}
diff --git a/reactos/base/applications/downloader/resources.h b/reactos/base/applications/downloader/resources.h
new file mode 100644
index 00000000000..172ed9a4c1f
--- /dev/null
+++ b/reactos/base/applications/downloader/resources.h
@@ -0,0 +1,71 @@
+/* Icons */
+#define IDI_MAIN 0x0
+#define IDI_UPDATE 5000
+#define IDI_HELP 5001
+#define IDI_PROF 5002
+/* Bitmaps */
+#define IDB_UNDERLINE 0x100
+#define IDB_LOGO 0x101
+#define IDB_DOWNLOAD 0x102
+#define IDB_UNINSTALL 0x103
+#define IDB_TREEVIEW_ICON_0 0x900
+#define IDB_TREEVIEW_ICON_1 0x901
+#define IDB_TREEVIEW_ICON_2 0x902
+#define IDB_TREEVIEW_ICON_3 0x903
+#define IDB_TREEVIEW_ICON_4 0x904
+#define IDB_TREEVIEW_ICON_5 0x905
+#define IDB_TREEVIEW_ICON_6 0x906
+#define IDB_TREEVIEW_ICON_7 0x907
+#define IDB_TREEVIEW_ICON_8 0x908
+#define IDB_TREEVIEW_ICON_9 0x909
+#define IDB_TREEVIEW_ICON_10 0x910
+#define IDB_TREEVIEW_ICON_11 0x911
+#define IDB_TREEVIEW_ICON_12 0x912
+#define IDB_TREEVIEW_ICON_13 0x913
+/* Dialogs */
+#define IDD_DOWNLOAD 0x100
+#define IDD_PROF 6000
+/* Controls */
+#define IDC_PROGRESS 0x1000
+#define IDC_STATUS 0x1001
+#define IDC_REMOVE 0x1002
+#define IDC_DOWNLOAD_FOLDER_EDIT 0x1003
+#define IDC_CHOOSE_BUTTON 0x1004
+#define IDC_UPDATE_SERVER_EDIT 0x1005
+#define IDC_DELINST_FILES_CHECKBOX 0x1006
+/* Strings */
+#define IDS_WINDOW_TITLE 0
+#define IDS_WELCOME_TITLE 1
+#define IDS_WELCOME 2
+#define IDS_NO_APP_TITLE 3
+#define IDS_NO_APP 4
+#define IDS_UPDATE_TITLE 5
+#define IDS_UPDATE 6
+#define IDS_HELP_TITLE 7
+#define IDS_HELP 8
+#define IDS_NO_APPS 9
+#define IDS_CHOOSE_APP 10
+#define IDS_CHOOSE_SUB 11
+#define IDS_CHOOSE_CATEGORY 12
+#define IDS_CHOOSE_BOTH 13
+#define IDS_XMLERROR_1 14
+#define IDS_XMLERROR_2 15
+#define IDS_DOWNLOAD_ERROR 16
+#define IDS_VERSION 17
+#define IDS_LICENCE 18
+#define IDS_MAINTAINER 19
+#define IDS_APPS_TITLE 20
+#define IDS_CATS_TITLE 21
+#define IDS_CHOOSE_FOLDER 22
+#define IDS_NOTCREATE_REGKEY 23
+#define IDS_DOWNLOAD_FOLDER 24
+#define IDS_UNABLECREATE_FOLDER 25
+#define IDS_UPDATE_URL 26
+#define IDS_INSTALL_DEP 27
+/* Tool tips */
+#define TTT_HELPBUTTON 50
+#define TTT_UPDATEBUTTON 51
+#define TTT_PROFBUTTON 52
+/* Other */
+#define STRING_COUNT 20
+#define MAX_STRING_LENGHT 0x100
diff --git a/reactos/base/applications/downloader/resources/0.bmp b/reactos/base/applications/downloader/resources/0.bmp
new file mode 100644
index 00000000000..e31ccefe737
Binary files /dev/null and b/reactos/base/applications/downloader/resources/0.bmp differ
diff --git a/reactos/base/applications/downloader/resources/1.bmp b/reactos/base/applications/downloader/resources/1.bmp
new file mode 100644
index 00000000000..b5d584bf206
Binary files /dev/null and b/reactos/base/applications/downloader/resources/1.bmp differ
diff --git a/reactos/base/applications/downloader/resources/10.bmp b/reactos/base/applications/downloader/resources/10.bmp
new file mode 100644
index 00000000000..d0825e8fb79
Binary files /dev/null and b/reactos/base/applications/downloader/resources/10.bmp differ
diff --git a/reactos/base/applications/downloader/resources/11.bmp b/reactos/base/applications/downloader/resources/11.bmp
new file mode 100644
index 00000000000..94bd89c3854
Binary files /dev/null and b/reactos/base/applications/downloader/resources/11.bmp differ
diff --git a/reactos/base/applications/downloader/resources/12.bmp b/reactos/base/applications/downloader/resources/12.bmp
new file mode 100644
index 00000000000..36f74af7e27
Binary files /dev/null and b/reactos/base/applications/downloader/resources/12.bmp differ
diff --git a/reactos/base/applications/downloader/resources/13.bmp b/reactos/base/applications/downloader/resources/13.bmp
new file mode 100644
index 00000000000..bfaa9c0e568
Binary files /dev/null and b/reactos/base/applications/downloader/resources/13.bmp differ
diff --git a/reactos/base/applications/downloader/resources/2.bmp b/reactos/base/applications/downloader/resources/2.bmp
new file mode 100644
index 00000000000..e59ab5e984a
Binary files /dev/null and b/reactos/base/applications/downloader/resources/2.bmp differ
diff --git a/reactos/base/applications/downloader/resources/3.bmp b/reactos/base/applications/downloader/resources/3.bmp
new file mode 100644
index 00000000000..860744a0fed
Binary files /dev/null and b/reactos/base/applications/downloader/resources/3.bmp differ
diff --git a/reactos/base/applications/downloader/resources/4.bmp b/reactos/base/applications/downloader/resources/4.bmp
new file mode 100644
index 00000000000..5df366dd321
Binary files /dev/null and b/reactos/base/applications/downloader/resources/4.bmp differ
diff --git a/reactos/base/applications/downloader/resources/5.bmp b/reactos/base/applications/downloader/resources/5.bmp
new file mode 100644
index 00000000000..fd5099eded6
Binary files /dev/null and b/reactos/base/applications/downloader/resources/5.bmp differ
diff --git a/reactos/base/applications/downloader/resources/6.bmp b/reactos/base/applications/downloader/resources/6.bmp
new file mode 100644
index 00000000000..280fc7e0bc8
Binary files /dev/null and b/reactos/base/applications/downloader/resources/6.bmp differ
diff --git a/reactos/base/applications/downloader/resources/7.bmp b/reactos/base/applications/downloader/resources/7.bmp
new file mode 100644
index 00000000000..1c8007b117d
Binary files /dev/null and b/reactos/base/applications/downloader/resources/7.bmp differ
diff --git a/reactos/base/applications/downloader/resources/8.bmp b/reactos/base/applications/downloader/resources/8.bmp
new file mode 100644
index 00000000000..e30064272fd
Binary files /dev/null and b/reactos/base/applications/downloader/resources/8.bmp differ
diff --git a/reactos/base/applications/downloader/resources/9.bmp b/reactos/base/applications/downloader/resources/9.bmp
new file mode 100644
index 00000000000..1e28d936e2b
Binary files /dev/null and b/reactos/base/applications/downloader/resources/9.bmp differ
diff --git a/reactos/base/applications/downloader/resources/download.bmp b/reactos/base/applications/downloader/resources/download.bmp
new file mode 100644
index 00000000000..09ff0a35183
Binary files /dev/null and b/reactos/base/applications/downloader/resources/download.bmp differ
diff --git a/reactos/base/applications/downloader/resources/help.ico b/reactos/base/applications/downloader/resources/help.ico
new file mode 100644
index 00000000000..e0373ec8db8
Binary files /dev/null and b/reactos/base/applications/downloader/resources/help.ico differ
diff --git a/reactos/base/applications/downloader/resources/logo.bmp b/reactos/base/applications/downloader/resources/logo.bmp
new file mode 100644
index 00000000000..4f10e49d3ef
Binary files /dev/null and b/reactos/base/applications/downloader/resources/logo.bmp differ
diff --git a/reactos/base/applications/downloader/resources/main.ico b/reactos/base/applications/downloader/resources/main.ico
new file mode 100644
index 00000000000..4b6a2e455ce
Binary files /dev/null and b/reactos/base/applications/downloader/resources/main.ico differ
diff --git a/reactos/base/applications/downloader/resources/preferences.ico b/reactos/base/applications/downloader/resources/preferences.ico
new file mode 100644
index 00000000000..c2b77570407
Binary files /dev/null and b/reactos/base/applications/downloader/resources/preferences.ico differ
diff --git a/reactos/base/applications/downloader/resources/underline.bmp b/reactos/base/applications/downloader/resources/underline.bmp
new file mode 100644
index 00000000000..7facc72707b
Binary files /dev/null and b/reactos/base/applications/downloader/resources/underline.bmp differ
diff --git a/reactos/base/applications/downloader/resources/uninstall.bmp b/reactos/base/applications/downloader/resources/uninstall.bmp
new file mode 100644
index 00000000000..077cac9d4ae
Binary files /dev/null and b/reactos/base/applications/downloader/resources/uninstall.bmp differ
diff --git a/reactos/base/applications/downloader/resources/update.ico b/reactos/base/applications/downloader/resources/update.ico
new file mode 100644
index 00000000000..82b4a1f986a
Binary files /dev/null and b/reactos/base/applications/downloader/resources/update.ico differ
diff --git a/reactos/base/applications/downloader/rsrc.rc b/reactos/base/applications/downloader/rsrc.rc
new file mode 100644
index 00000000000..f504bad5dc7
--- /dev/null
+++ b/reactos/base/applications/downloader/rsrc.rc
@@ -0,0 +1,40 @@
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+IDI_MAIN ICON DISCARDABLE "resources/main.ico"
+IDI_UPDATE ICON DISCARDABLE "resources/update.ico"
+IDI_HELP ICON DISCARDABLE "resources/help.ico"
+IDI_PROF ICON DISCARDABLE "resources/preferences.ico"
+IDB_LOGO BITMAP DISCARDABLE "resources/logo.bmp"
+IDB_DOWNLOAD BITMAP DISCARDABLE "resources/download.bmp"
+IDB_UNINSTALL BITMAP DISCARDABLE "resources/uninstall.bmp"
+IDB_UNDERLINE BITMAP DISCARDABLE "resources/underline.bmp"
+IDB_TREEVIEW_ICON_0 BITMAP DISCARDABLE "resources/0.bmp"
+IDB_TREEVIEW_ICON_1 BITMAP DISCARDABLE "resources/1.bmp"
+IDB_TREEVIEW_ICON_2 BITMAP DISCARDABLE "resources/2.bmp"
+IDB_TREEVIEW_ICON_3 BITMAP DISCARDABLE "resources/3.bmp"
+IDB_TREEVIEW_ICON_4 BITMAP DISCARDABLE "resources/4.bmp"
+IDB_TREEVIEW_ICON_5 BITMAP DISCARDABLE "resources/5.bmp"
+IDB_TREEVIEW_ICON_6 BITMAP DISCARDABLE "resources/6.bmp"
+IDB_TREEVIEW_ICON_7 BITMAP DISCARDABLE "resources/7.bmp"
+IDB_TREEVIEW_ICON_8 BITMAP DISCARDABLE "resources/8.bmp"
+IDB_TREEVIEW_ICON_9 BITMAP DISCARDABLE "resources/9.bmp"
+IDB_TREEVIEW_ICON_10 BITMAP DISCARDABLE "resources/10.bmp"
+IDB_TREEVIEW_ICON_11 BITMAP DISCARDABLE "resources/11.bmp"
+IDB_TREEVIEW_ICON_12 BITMAP DISCARDABLE "resources/12.bmp"
+IDB_TREEVIEW_ICON_13 BITMAP DISCARDABLE "resources/13.bmp"
+
+
+#include "lang/bg-BG.rc"
+#include "lang/de-DE.rc"
+#include "lang/el-GR.rc"
+#include "lang/en-US.rc"
+#include "lang/es-ES.rc"
+#include "lang/fr-FR.rc"
+#include "lang/id-ID.rc"
+#include "lang/it-IT.rc"
+#include "lang/no-NO.rc"
+#include "lang/pl-PL.rc"
+#include "lang/lt-LT.rc"
+#include "lang/ru-RU.rc"
+#include "lang/sk-SK.rc"
+#include "lang/uk-UA.rc"
diff --git a/reactos/base/applications/downloader/structures.h b/reactos/base/applications/downloader/structures.h
new file mode 100644
index 00000000000..7aeee667866
--- /dev/null
+++ b/reactos/base/applications/downloader/structures.h
@@ -0,0 +1,26 @@
+
+struct Application
+{
+ WCHAR Name[0x100];
+ WCHAR RegName[0x100];
+ WCHAR Version[0x100];
+ WCHAR Maintainer[0x100];
+ WCHAR Licence[0x100];
+ WCHAR Description[0x400];
+ WCHAR Location[0x100];
+ WCHAR Depends[0x100];
+ WCHAR PostInstallAction[0x100];
+ struct Application* Next;
+};
+
+struct Category
+{
+ WCHAR Name[0x100];
+ //WCHAR Description[0x100];
+ int Icon;
+ HANDLE TreeviewItem;
+ struct Application* Apps;
+ struct Category* Next;
+ struct Category* Children;
+ struct Category* Parent;
+};
diff --git a/reactos/base/applications/downloader/xml.c b/reactos/base/applications/downloader/xml.c
new file mode 100644
index 00000000000..588f020ba52
--- /dev/null
+++ b/reactos/base/applications/downloader/xml.c
@@ -0,0 +1,236 @@
+/* PROJECT: ReactOS Downloader
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base\applications\downloader\xml.c
+ * PURPOSE: Parsing of application information xml files
+ * PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "structures.h"
+#include "resources.h"
+
+BOOL TagOpen;
+struct Category* Current;
+struct Application* CurrentApplication;
+char CurrentTag [0x100];
+extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
+
+void tag_opened (void* usrdata, const char* tag, const char** arg)
+{
+ int i;
+
+ if(!strcmp(tag, "tree") && !CurrentApplication)
+ {
+ // check version
+ }
+
+ else if(!strcmp(tag, "category") && !CurrentApplication)
+ {
+ if (!Current)
+ {
+ Current = malloc(sizeof(struct Category));
+ memset(Current, 0, sizeof(struct Category));
+ }
+ else if (TagOpen)
+ {
+ Current->Children = malloc(sizeof(struct Category));
+ memset(Current->Children, 0, sizeof(struct Category));
+ Current->Children->Parent = Current;
+ Current = Current->Children;
+ }
+ else
+ {
+ Current->Next = malloc(sizeof(struct Category));
+ memset(Current->Next, 0, sizeof(struct Category));
+ Current->Next->Parent = Current->Parent;
+ Current = Current->Next;
+ }
+ TagOpen = TRUE;
+
+ for (i=0; arg[i]; i+=2)
+ {
+ if(!strcmp(arg[i], "name"))
+ {
+ MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, Current->Name, 0x100);
+ }
+ if(!strcmp(arg[i], "icon"))
+ {
+ Current->Icon = atoi(arg[i+1]);
+ }
+ }
+ }
+
+ else if(!strcmp(tag, "application") && !CurrentApplication)
+ {
+ if(Current->Apps)
+ {
+ CurrentApplication = Current->Apps;
+ while(CurrentApplication->Next)
+ CurrentApplication = CurrentApplication->Next;
+ CurrentApplication->Next = malloc(sizeof(struct Application));
+ memset(CurrentApplication->Next, 0, sizeof(struct Application));
+ CurrentApplication = CurrentApplication->Next;
+ }
+ else
+ {
+ Current->Apps = malloc(sizeof(struct Application));
+ memset(Current->Apps, 0, sizeof(struct Application));
+ CurrentApplication = Current->Apps;
+ }
+
+ for (i=0; arg[i]; i+=2)
+ {
+ if(!strcmp(arg[i], "name"))
+ {
+ MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentApplication->Name, 0x100);
+ }
+ }
+ }
+ else if (CurrentApplication)
+ {
+ strncpy(CurrentTag, tag, 0x100);
+ }
+ else
+ MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
+}
+
+
+void text (void* usrdata, const char* data, int len)
+{
+ if (!CurrentApplication)
+ return;
+
+ if(!strcmp(CurrentTag, "maintainer"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Maintainer);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Maintainer[currentlengt], 0x100-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "regname"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->RegName);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->RegName[currentlengt], 0x100-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "description"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Description);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Description[currentlengt], 0x400-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "location"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Location);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Location[currentlengt], 0x100-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "version"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Version);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Version[currentlengt], 0x400-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "licence"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Licence);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Licence[currentlengt], 0x100-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "depends"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->Depends);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Depends[currentlengt], 0x100-currentlengt);
+ }
+ else if(!strcmp(CurrentTag, "postinstallaction"))
+ {
+ int currentlengt = lstrlenW(CurrentApplication->PostInstallAction);
+ MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->PostInstallAction[currentlengt], 0x100-currentlengt);
+ }
+}
+
+void tag_closed (void* tree, const char* tag)
+{
+ CurrentTag[0] = 0;
+
+ if(!strcmp(tag, "category"))
+ {
+ if (TagOpen)
+ {
+ TagOpen = FALSE;
+ }
+ else
+ {
+ Current = Current->Parent;
+ }
+ }
+ else if(!strcmp(tag, "application"))
+ {
+ CurrentApplication = NULL;
+ }
+}
+
+BOOL ProcessXML (const char* filename, struct Category* Root)
+{
+ int done = 0;
+ char buffer[255];
+ FILE* file;
+ XML_Parser parser;
+
+ if(Current)
+ return FALSE;
+
+ Current = Root;
+ TagOpen = TRUE;
+
+ file = fopen("downloader.xml", "r");
+ if(!file)
+ {
+ file = fopen(filename, "r");
+ if(!file)
+ {
+ MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
+ return FALSE;
+ }
+ }
+
+ parser = XML_ParserCreate(NULL);
+ XML_SetElementHandler(parser, tag_opened, tag_closed);
+ XML_SetCharacterDataHandler(parser, text);
+
+ while (!done)
+ {
+ size_t len = fread (buffer, 1, sizeof(buffer), file);
+ done = len < sizeof(buffer);
+
+ if(!XML_Parse(parser, buffer, len, done))
+ {
+ MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
+ return FALSE;
+ }
+ }
+
+ XML_ParserFree(parser);
+ fclose(file);
+
+ return TRUE;
+}
+
+void FreeApps (struct Application* Apps)
+{
+ if (Apps->Next)
+ FreeApps(Apps->Next);
+
+ free(Apps);
+}
+
+void FreeTree (struct Category* Node)
+{
+ if (Node->Children)
+ FreeTree(Node->Children);
+
+ if (Node->Next)
+ FreeTree(Node->Next);
+
+ if (Node->Apps)
+ FreeApps(Node->Apps);
+
+ free(Node);
+}
diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff
index 03bc4af0424..1cc42cb4156 100644
--- a/reactos/boot/bootdata/packages/reactos.dff
+++ b/reactos/boot/bootdata/packages/reactos.dff
@@ -41,6 +41,8 @@ base\applications\cmdutils\lodctr\lodctr.exe 1
base\applications\cmdutils\more\more.exe 1
base\applications\cmdutils\xcopy\xcopy.exe 1
base\applications\control\control.exe 1
+base\applications\downloader\downloader.exe 1
+base\applications\downloader\downloader.xml 1
base\applications\dxdiag\dxdiag.exe 1
base\applications\fontview\fontview.exe 1
base\applications\mscutils\devmgmt\devmgmt.exe 1