[ros-diffs] [mbosma] 26807: Revert r25952 for now.

mbosma at svn.reactos.org mbosma at svn.reactos.org
Wed May 16 20:05:04 CEST 2007


Author: mbosma
Date: Wed May 16 22:05:03 2007
New Revision: 26807

URL: http://svn.reactos.org/svn/reactos?rev=26807&view=rev
Log:
Revert r25952 for now.

Added:
    trunk/rosapps/downloader/downloader.xml
      - copied unchanged from r25951, trunk/reactos/base/applications/downloader/downloader.xml
Removed:
    trunk/rosapps/downloader/packagetree/
    trunk/rosapps/downloader/script.c
Modified:
    trunk/rosapps/downloader/download.c
    trunk/rosapps/downloader/downloader.rbuild
    trunk/rosapps/downloader/main.c
    trunk/rosapps/downloader/resources.h
    trunk/rosapps/downloader/structures.h
    trunk/rosapps/downloader/translations/de.rc
    trunk/rosapps/downloader/translations/en.rc
    trunk/rosapps/downloader/translations/fr.rc
    trunk/rosapps/downloader/translations/id.rc
    trunk/rosapps/downloader/translations/it.rc
    trunk/rosapps/downloader/xml.c

Modified: trunk/rosapps/downloader/download.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/download.c?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/download.c (original)
+++ trunk/rosapps/downloader/download.c Wed May 16 22:05:03 2007
@@ -221,11 +221,31 @@
 {
   //static const WCHAR szUrl[] = DownloadUrl;
   IBindStatusCallback *dl;
-  HWND Dlg = ((struct lParamDownload*)Context)->Dlg;
+  WCHAR path[MAX_PATH];
+  LPWSTR p;
+  STARTUPINFOW si;
+  PROCESS_INFORMATION pi;
+  HWND Dlg = (HWND) Context;
   DWORD r;
   BOOL bCancelled = FALSE;
-  dl = CreateDl(Dlg, &bCancelled);
-  r = URLDownloadToFileW(NULL, ((struct lParamDownload*)Context)->URL, ((struct lParamDownload*)Context)->File, 0, dl);
+  BOOL bTempfile = FALSE;
+
+  /* built the path for the download */
+  p = wcsrchr(SelectedApplication->Location, L'/');
+  if (NULL == p)
+    {
+      goto end;
+    }
+  if (! GetTempPathW(MAX_PATH, path))
+    {
+      goto end;
+    }
+  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);
@@ -233,6 +253,30 @@
   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)
+    {
+      DeleteFileW(path);
     }
   EndDialog(Dlg, 0);
   return 0;
@@ -243,7 +287,7 @@
 {
   HANDLE Thread;
   DWORD ThreadId;
-  HWND Item;;
+  HWND Item;
 
   switch (Msg)
     {
@@ -276,8 +320,7 @@
               ShowWindow(Item, SW_HIDE);
             }
         }*/
-      ((struct lParamDownload*)lParam)->Dlg = Dlg;
-      Thread = CreateThread(NULL, 0, ThreadFunc, (LPVOID)lParam, 0, &ThreadId);
+      Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId);
       if (NULL == Thread)
         {
           return FALSE;

Modified: trunk/rosapps/downloader/downloader.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/downloader.rbuild?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/downloader.rbuild (original)
+++ trunk/rosapps/downloader/downloader.rbuild Wed May 16 22:05:03 2007
@@ -1,8 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
-<directory name="packagetree">
-	<xi:include href="packagetree/packagetree.rbuild" />
-</directory>
+<installfile base="system32">downloader.xml</installfile>    
 <module name="downloader" type="win32gui" installbase="system32" installname="downloader.exe">
 	<include base="downloader">.</include>
 	<include base="expat">.</include>
@@ -29,6 +27,5 @@
 	<file>main.c</file>
 	<file>xml.c</file>
 	<file>download.c</file>
-	<file>script.c</file>
 	<file>downloader.rc</file>
 </module>

Modified: trunk/rosapps/downloader/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/main.c?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/main.c (original)
+++ trunk/rosapps/downloader/main.c Wed May 16 22:05:03 2007
@@ -10,65 +10,46 @@
 #include <richedit.h>
 #include <stdio.h>
 #include <shlwapi.h>
-#include <wchar.h>
 #include "resources.h"
 #include "structures.h"
 
-#define XML_PATH "tree.xml"
+#define XML_PATH "C:\\ReactOS\\system32\\downloader.xml"
 
 HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton;
 HBITMAP hLogo, hUnderline;
-CHAR* CmdLine;
 WCHAR* DescriptionHeadline = L"";
 WCHAR* DescriptionText = L"";
-WCHAR ApplicationText[0xA04];	// MAX_STRING_LENGHT + Version + \n + MAX_STRING_LENGHT + Licence + \n + MAX_STRING_LENGHT + Maintainer + \n\n + Description
-				//             0x100 +   0x100 +  1 +             0x100 +   0x100 +  1 +             0x100 +      0x100 +    2 +       0x400 = 0xA04
+WCHAR ApplicationText[700];
+
 struct Category Root;
 struct Application* SelectedApplication;
 
 INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM);
-DWORD WINAPI InstallThreadFunc(LPVOID);
-DWORD WINAPI UninstallThreadFunc(LPVOID);
 BOOL ProcessXML (const char* filename, struct Category* Root);
-char* addDML (const char*);
 VOID FreeTree (struct Category* Node);
 WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
 
-BOOL getUninstaller(struct Application* CurrentApplication, WCHAR* Uninstaller) {
-
-	DWORD ArraySize = 0x100;
+
+BOOL getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) {
+
+	const DWORD ArraySize = 200;
 
 	HKEY hKey1;
 	HKEY hKey2;
 	DWORD Type = 0;
+	DWORD Size = ArraySize;
 	WCHAR Value[ArraySize];
 	WCHAR KeyName[ArraySize];
-	DWORD Size = ArraySize;
 	LONG i = 0;
 
-	if (CurrentApplication->RegName[0] == L'\0') {
-		return FALSE;
-	}
-
 	if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_READ,&hKey1) == ERROR_SUCCESS) {
-		if (RegOpenKeyExW(hKey1,CurrentApplication->RegName,0,KEY_READ,&hKey2) == ERROR_SUCCESS) {
-			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;
-			}
-		} 
 		while (RegEnumKeyExW(hKey1,i,KeyName,&Size,NULL,NULL,NULL,NULL) == ERROR_SUCCESS) {
 			++i;
 			RegOpenKeyExW(hKey1,KeyName,0,KEY_READ,&hKey2);
-			Size = sizeof(Value);
+			Size = ArraySize;
 			if (RegQueryValueExW(hKey2,L"DisplayName",0,&Type,(LPBYTE)Value,&Size) == ERROR_SUCCESS) {
 				Size = ArraySize;
-				if (!wcscmp(Value,CurrentApplication->RegName)) {
+				if (StrCmpW(Value,RegName) == 0) {
 					if (RegQueryValueExW(hKey2,L"UninstallString",0,&Type,(LPBYTE)Uninstaller,&Size) == ERROR_SUCCESS) {
 						RegCloseKey(hKey2);
 						RegCloseKey(hKey1);
@@ -142,16 +123,17 @@
 
 	CurrentApplication = Category->Apps;
 
+	WCHAR Uninstaller[200];
 	while(CurrentApplication)
 	{
 		Insert.item.lParam = (UINT)CurrentApplication;
 		Insert.item.pszText = CurrentApplication->Name;
 		Insert.item.cchTextMax = lstrlenW(CurrentApplication->Name);
-		if(getUninstaller(CurrentApplication, NULL)) {
-			Insert.item.iImage = 9;
-		} else {
-			Insert.item.iImage = 10;
-		}
+		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;
 	}
@@ -179,8 +161,8 @@
 
 	hHelpButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 550, 10, 40, 40, hwnd, 0, hInstance, NULL);
 	hUpdateButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 500, 10, 40, 40, hwnd, 0, hInstance, NULL);
-	hDownloadButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 330, 505, 140, 35, hwnd, 0, hInstance, NULL);
-	hUninstallButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 260, 505, 140, 35, hwnd, 0, hInstance, NULL);
+	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(hHelpButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_HELP)));
 	SendMessageW(hUpdateButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_UPDATE)));
@@ -285,41 +267,17 @@
 	MoveWindow(hDownloadButton,(Split_Vertical+Rect.right-Rect.left)/2-70,Rect.bottom-Rect.top-45,140,35,TRUE);
 }
 
-void searchApp(const WCHAR* AppName, struct Category* Node) {
-	struct Application* CurrentApplication;
-	if (Node->Children)
-		searchApp(AppName, Node->Children);
-	if (Node->Next)
-		searchApp(AppName, Node->Next);
-	CurrentApplication = Node->Apps;
-	while((SelectedApplication == NULL) && (CurrentApplication != NULL)) {
-		if(wcscmp(CurrentApplication->Name,AppName)==0)
-			SelectedApplication = CurrentApplication;
-		CurrentApplication = CurrentApplication->Next;
-	}
-}
-
-void ShowSelectedApplication() {
-	ApplicationText[0]=L'\0';
-	if(SelectedApplication->Version[0] != L'\0') {
-		StrCatW(ApplicationText, Strings[IDS_VERSION]);
-		StrCatW(ApplicationText, SelectedApplication->Version);
-		StrCatW(ApplicationText, L"\n");
-	}
-	if(SelectedApplication->Licence[0] != L'\0') {
-		StrCatW(ApplicationText, Strings[IDS_LICENCE]);
-		StrCatW(ApplicationText, SelectedApplication->Licence);
-		StrCatW(ApplicationText, L"\n");
-	}
-	if(SelectedApplication->Maintainer[0] != L'\0') {
-		StrCatW(ApplicationText, Strings[IDS_MAINTAINER]);
-		StrCatW(ApplicationText, SelectedApplication->Maintainer);
-		StrCatW(ApplicationText, L"\n");
-	}
-	if((SelectedApplication->Licence[0] != L'\0') || (SelectedApplication->Version[0] != L'\0') || (SelectedApplication->Maintainer[0] != L'\0'))
-		StrCatW(ApplicationText, L"\n");
-	StrCatW(ApplicationText, SelectedApplication->Description);
-	ShowMessage(SelectedApplication->Name, ApplicationText);
+void startUninstaller(WCHAR* Uninstaller) {
+	STARTUPINFOW si;
+	PROCESS_INFORMATION pi;
+
+	memset(&si, 0, sizeof(si));
+	si.cb = sizeof(si);
+	CreateProcessW(NULL,Uninstaller,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); 
+	CloseHandle(pi.hThread);
+	// WaitForSingleObject(pi.hProcess, INFINITE); // If you want to wait for the Unistaller
+	CloseHandle(pi.hProcess);
+        hideUninstaller();
 }
 
 LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
@@ -330,34 +288,9 @@
 	{
 		case WM_CREATE:
 		{
-			WCHAR wAppName[0x100] = L"";
-			if (strncmp(CmdLine,"add ",4)==0) {
-				CmdLine = CmdLine+4;
-				if(CmdLine[0]==L'\"') {
-					CmdLine++;
-					CmdLine[strlen(CmdLine)-1]=L'\0';
-				}
-				char* aAppName = addDML(CmdLine);
-				MultiByteToWideChar(CP_UTF8, 0, aAppName, -1, wAppName, 0x100);
-			} else if (strncmp(CmdLine,"show ",5)==0) {
-				MultiByteToWideChar(CP_UTF8, 0, CmdLine+5, -1, wAppName, 0x100);
-			}
-
 			if(!SetupControls(hwnd))
 				return -1;
-
-			if(wAppName[0]!=L'\0')
-				searchApp(wAppName, &Root);
-
-			if(SelectedApplication == NULL) {
-				ShowMessage(Strings[IDS_WELCOME_TITLE], Strings[IDS_WELCOME]);
-			} else {
-				ShowSelectedApplication();
-				if(getUninstaller(SelectedApplication, NULL))
-					showUninstaller();
-				else
-					hideUninstaller();
-			}
+			ShowMessage(Strings[IDS_WELCOME_TITLE], Strings[IDS_WELCOME]);
 		} 
 		break;
 
@@ -386,20 +319,21 @@
 			{
 				if (lParam == (LPARAM)hDownloadButton)
 				{
-					if(SelectedApplication) {
-						DWORD ThreadId;
-						CreateThread(NULL, 0, InstallThreadFunc, SelectedApplication, 0, &ThreadId);
-					} else
+					if(SelectedApplication)
+						DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc);
+					else
 						ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]);
 				}
 				else if (lParam == (LPARAM)hUninstallButton)
 				{
-					if(SelectedApplication) {
-						DWORD ThreadId;
-						CreateThread(NULL, 0, UninstallThreadFunc, SelectedApplication, 0, &ThreadId);
-						hideUninstaller();
-					} else
-						ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]);
+					if(SelectedApplication)
+					{
+						WCHAR Uninstaller[200];
+						if(StrCmpW(SelectedApplication->RegName, L"")) {
+							if(getUninstaller(SelectedApplication->RegName, Uninstaller))
+								startUninstaller(Uninstaller);
+						}
+					}
 				}
 				else if (lParam == (LPARAM)hUpdateButton)
 				{
@@ -429,9 +363,31 @@
 					SelectedApplication = (struct Application*) ((LPNMTREEVIEW)lParam)->itemNew.lParam;
 					if(SelectedApplication)
 					{
-						ShowSelectedApplication();
-						if(getUninstaller(SelectedApplication, NULL)) {
-							bShowUninstaller = TRUE;
+						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);
+						WCHAR Uninstaller[200];
+						if(StrCmpW(SelectedApplication->RegName, L"")) {
+							if(getUninstaller(SelectedApplication->RegName, Uninstaller)) {
+								bShowUninstaller = TRUE;
+							}
 						}
 					}
 				}
@@ -496,8 +452,7 @@
 	MSG msg;
 
 	InitCommonControls();
-	CmdLine = lpCmdLine;
-	
+
 	// Load strings
 	for(i=0; i<STRING_COUNT; i++)
 		LoadStringW(hInstance, i, Strings[i], MAX_STRING_LENGHT); // if you know a better method please tell me. 

Modified: trunk/rosapps/downloader/resources.h
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/resources.h?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/resources.h (original)
+++ trunk/rosapps/downloader/resources.h Wed May 16 22:05:03 2007
@@ -39,10 +39,9 @@
 #define IDS_XMLERROR_1		14
 #define IDS_XMLERROR_2		15
 #define IDS_DOWNLOAD_ERROR	16
-#define IDS_UNZIP_ERROR		17
-#define IDS_VERSION		18
-#define IDS_LICENCE		19
-#define IDS_MAINTAINER		20
+#define IDS_VERSION		17
+#define IDS_LICENCE		18
+#define IDS_MAINTAINER		19
 
-#define STRING_COUNT		21
+#define STRING_COUNT		20
 #define	MAX_STRING_LENGHT	0x100

Removed: trunk/rosapps/downloader/script.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/script.c?rev=26806&view=auto
==============================================================================
--- trunk/rosapps/downloader/script.c (original)
+++ trunk/rosapps/downloader/script.c (removed)
@@ -1,246 +1,0 @@
-/* PROJECT:         ReactOS Downloader
- * LICENSE:         GPL - See COPYING in the top level directory
- * FILE:            base/applications/downloader/script.c
- * PURPOSE:         Run (un/)installscript
- * PROGRAMMERS:     Lester Kortenhoeven
- */
-
-#include <windows.h>
-
-#include "resources.h"
-#include "structures.h"
-
-extern BOOL getUninstaller(struct Application*, WCHAR*);
-extern INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM);
-extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
-
-static void DownloadScriptFunc (WCHAR* URL, WCHAR* File) {
-	struct lParamDownload* lParam;
-	lParam = malloc(sizeof(struct lParamDownload));
-	lParam->URL = URL;
-	lParam->File = File;
-	DialogBoxParamW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc, (LPARAM)lParam);
-	free(lParam);
-}
-
-static void ExecScriptFunc(WCHAR* Arg) {
-	STARTUPINFOW si;
-	PROCESS_INFORMATION pi;
-
-	memset(&si, 0, sizeof(si));
-	si.cb=sizeof(si);
-	CreateProcessW(NULL,Arg,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
-	CloseHandle(pi.hThread);
-	WaitForSingleObject(pi.hProcess, INFINITE);
-	CloseHandle(pi.hProcess);
-}
-
-
-static void DelScriptFunc(WCHAR* Arg) {
-	DeleteFileW(Arg);
-}
-
-static BOOL UnzipScriptFunc(WCHAR* File, WCHAR* Outdir) {
-	HKEY hKey;
-	DWORD Type = 0;
-	WCHAR ExecStr[0x100];
-	DWORD currentlengt = 0x100;
-	if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\7-Zip",0,KEY_READ,&hKey) == ERROR_SUCCESS) {
-		if (RegQueryValueExW(hKey,L"Path",0,&Type,(LPBYTE)ExecStr,&currentlengt) == ERROR_SUCCESS) {
-			if (File[0] != L'\0') {
-				wcsncat(ExecStr,L"\\7z.exe x ",0x100-currentlengt);
-				currentlengt = lstrlenW(ExecStr);
-				wcsncat(ExecStr,File,0x100-currentlengt);
-				currentlengt = lstrlenW(ExecStr);
-				wcsncat(ExecStr,L" -o",0x100-currentlengt);
-				currentlengt = lstrlenW(ExecStr);
-				wcsncat(ExecStr,Outdir,0x100-currentlengt);
-				ExecScriptFunc(ExecStr);
-				RegCloseKey(hKey);
-			}
-			return TRUE;
-		}
-		RegCloseKey(hKey);
-	}
-	MessageBoxW(0,Strings[IDS_UNZIP_ERROR],0,0);
-	return FALSE;
-}
-
-static void AddUninstallerScriptFunc(WCHAR* RegName, WCHAR* File) {
-	HKEY hKey1;
-	HKEY hKey2;
-	LPDWORD dispos = NULL;
-	if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_WRITE,&hKey1) == ERROR_SUCCESS)
-		if (RegCreateKeyEx(hKey1,RegName,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey2,dispos) == ERROR_SUCCESS) {
-			RegSetValueExW(hKey2,L"DisplayName",0,REG_SZ,(BYTE*)RegName,(lstrlen(RegName)+1)*sizeof(WCHAR));
-			RegSetValueExW(hKey2,L"UninstallString",0,REG_SZ,(BYTE*)File,(lstrlen(File)+1)*sizeof(WCHAR));
-		}
-	RegCloseKey(hKey2);
-	RegCloseKey(hKey1);
-}
-
-static void RemoveUninstallerScriptFunc(WCHAR* RegName) {
-	HKEY hKey1;
-	HKEY hKey2;
-	if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_WRITE,&hKey1) == ERROR_SUCCESS) {
-		if (RegOpenKeyExW(hKey1,RegName,0,KEY_WRITE,&hKey2) == ERROR_SUCCESS) {
-			RegDeleteValueW(hKey2,L"DisplayName");
-			RegDeleteValueW(hKey2,L"UninstallString");
-			RegCloseKey(hKey2);
-		}
-		// RegDeleteKeyW(hKey1,RegName);
-	}
-	RegCloseKey(hKey1);
-}
-
-static void MessageScriptFunc(WCHAR* Text) {
-	MessageBoxW(0,Text,Strings[IDS_WINDOW_TITLE],0);
-}
-
-extern void LoadScriptFunc(WCHAR*, struct ScriptElement*);
-
-static void RunScript(struct Application* App, struct ScriptElement* Script) {
-	BOOL bRun = TRUE;
-	struct ScriptElement* p = Script;
-	INT SizeB = 0x100;
-	INT SizeA = sizeof(p->Arg)/sizeof(*(p->Arg));
-	INT i;
-	int currentlengt = 0;
-	WCHAR ArgBuffer[SizeA][SizeB];
-	WCHAR BufferA[SizeB];
-	WCHAR BufferB[SizeB];
-	WCHAR BufferC[SizeB];
-	WCHAR* Pos1;
-	WCHAR* Pos2;
-	WCHAR* Pos3 = NULL;
-	BOOL bNext;
-	while(bRun && (p != NULL)) {
-
-		for(i=0; i<SizeA; i++) {
-			bNext = TRUE;
-			wcscpy(BufferA, p->Arg[i]);
-			Pos1 = BufferA;
-			Pos2 = wcschr(Pos1, L'%');
-			if(!Pos2) {
-				wcscpy(ArgBuffer[i], Pos1);
-				break;
-			}
-			Pos2[0] = L'\0';
-			wcscpy(BufferB, Pos1);
-			Pos1 = Pos2 + 1;
-			Pos2 = wcschr(Pos1, L'%');
-			while (Pos2) {
-				Pos2[0] = L'\0';
-				if(bNext) {
-					if (wcscmp(Pos1, L"name") == 0) {
-						Pos3 = App->Name;
-					} else if (wcscmp(Pos1, L"regname") == 0) {
-						Pos3 = App->RegName;
-					} else if (wcscmp(Pos1, L"version") == 0) {
-						Pos3 = App->Version;
-					} else if (wcscmp(Pos1, L"maintainer") == 0) {
-						Pos3 = App->Maintainer;
-					} else if (wcscmp(Pos1, L"licence") == 0) {
-						Pos3 = App->Licence;
-					} else if (wcscmp(Pos1, L"description") == 0) {
-						Pos3 = App->Description;
-					} else if (wcscmp(Pos1, L"location") == 0) {
-						Pos3 = App->Location;
-					} else if (wcscmp(Pos1, L"regname_uninstaller") == 0) {
-						if (!getUninstaller(App, BufferC)) {
-							BufferC[0] = '\0';
-						}
-						Pos3 = BufferC;
-					} else if (wcscmp(Pos1, L"location_file") == 0) {
-						Pos3 = wcsrchr(App->Location, L'/');
-						if(Pos3 == NULL) {
-							BufferC[0] = '\0';
-							Pos3 = BufferC;
-						} else {
-							Pos3++;
-						}
-					} else {
-						Pos3 = _wgetenv(Pos1);
-					}
-					bNext = !(Pos3);
-					if (bNext) {
-						Pos3 = Pos1;
-						currentlengt = lstrlenW(BufferB);
-						wcsncat(BufferB, L"%", SizeB-currentlengt);
-					}
-				} else {
-					Pos3 = Pos1;
-					bNext = TRUE;
-				}
-				currentlengt = lstrlenW(BufferB);
-				wcsncat(BufferB, Pos3, SizeB-currentlengt);
-				Pos1 = Pos2 + 1;
-				Pos2 = wcschr(Pos1, L'%');
-			}
-			if (bNext) {
-				wcsncat(BufferB, L"%", SizeB-currentlengt);
-			}
-			currentlengt = lstrlenW(BufferB);
-			wcsncat(BufferB, Pos1, SizeB-currentlengt);
-			wcscpy(ArgBuffer[i], BufferB);
-		}
-
-		if (wcscmp(p->Func, L"download") == 0) {
-			DownloadScriptFunc(ArgBuffer[0], ArgBuffer[1]);
-		} else if (wcscmp(p->Func, L"exec") == 0) {
-			ExecScriptFunc(ArgBuffer[0]);
-		} else if (wcscmp(p->Func, L"del") == 0) {
-			DelScriptFunc(ArgBuffer[0]);
-		} else if (wcscmp(p->Func, L"unzip") == 0) {
-			bRun = UnzipScriptFunc(ArgBuffer[0], ArgBuffer[1]);
-		} else if (wcscmp(p->Func, L"adduninstaller") == 0) {
-			AddUninstallerScriptFunc(ArgBuffer[0], ArgBuffer[1]);
-		} else if (wcscmp(p->Func, L"removeuninstaller") == 0) {
-			RemoveUninstallerScriptFunc(ArgBuffer[0]);
-		} else if (wcscmp(p->Func, L"message") == 0) {
-			MessageScriptFunc(ArgBuffer[0]);
-		} else if (wcscmp(p->Func, L"load") == 0) {
-			LoadScriptFunc(ArgBuffer[0],p);
-		}
-		p = p->Next;
-	}
-}
-
-DWORD WINAPI InstallThreadFunc(LPVOID Context) {
-	struct Application* App = (struct Application*)Context;
-
-	if(App->InstallScript == NULL){
-		/* Default UninstallScript */
-		struct ScriptElement* Current;
-		Current = malloc(sizeof(struct ScriptElement));
-		App->InstallScript = Current;
-		memset(Current, 0, sizeof(struct ScriptElement));
-		wcscpy(Current->Func, L"load");
-		wcscpy(Current->Arg[0], L"script/default.install.xml");
-	}
-
-	RunScript(App, App->InstallScript);
-
-	return 0;
-}
-
-
-
-DWORD WINAPI UninstallThreadFunc(LPVOID Context){
-	struct Application* App = (struct Application*)Context;
-
-	if(App->UninstallScript == NULL){
-		/* Default UninstallScript */
-		struct ScriptElement* Current;
-		Current = malloc(sizeof(struct ScriptElement));
-		App->UninstallScript = Current;
-		memset(Current, 0, sizeof(struct ScriptElement));
-		wcscpy(Current->Func, L"load");
-		wcscpy(Current->Arg[0], L"script/default.uninstall.xml");
-	}
-
-	RunScript(App, App->UninstallScript);
-
-	return 0;
-}
-

Modified: trunk/rosapps/downloader/structures.h
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/structures.h?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/structures.h (original)
+++ trunk/rosapps/downloader/structures.h Wed May 16 22:05:03 2007
@@ -9,8 +9,6 @@
 	WCHAR Description[0x400];
 	WCHAR Location[0x100];
 	struct Application* Next;
-	struct ScriptElement* InstallScript;
-	struct ScriptElement* UninstallScript;
 };
 
 struct Category
@@ -24,17 +22,3 @@
 	struct Category* Children;
 	struct Category* Parent;
 };
-
-struct ScriptElement
-{
-	WCHAR Func[0x100];
-	WCHAR Arg[2][0x100];
-	struct ScriptElement* Next;
-};
-
-struct lParamDownload
-{
-	HWND Dlg;
-	WCHAR* URL;
-	WCHAR* File;
-};

Modified: trunk/rosapps/downloader/translations/de.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/translations/de.rc?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/translations/de.rc (original)
+++ trunk/rosapps/downloader/translations/de.rc Wed May 16 22:05:03 2007
@@ -14,7 +14,7 @@
 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.0."
+  IDS_WELCOME 			"Bitte wählen Sie rechts eine Kategorie. Dies ist Version 1.0."
   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"
@@ -29,7 +29,6 @@
   IDS_XMLERROR_1		"XML Datei nicht gefunden!"
   IDS_XMLERROR_2		"XML Datei kann nicht verarbeitet werden!"
   IDS_DOWNLOAD_ERROR		"Die Datei konnte nicht runtergeladen werden.\nBitte prüfen sie, ob eine Verbindung zum Internet besteht."
-  IDS_UNZIP_ERROR		"7-Zip nicht gefunden.\nBitte installieren Sie 7-Zip."
   IDS_VERSION			"Version: "
   IDS_LICENCE			"Lizenz: "
   IDS_MAINTAINER		"Maintainer: "

Modified: trunk/rosapps/downloader/translations/en.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/translations/en.rc?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/translations/en.rc (original)
+++ trunk/rosapps/downloader/translations/en.rc Wed May 16 22:05:03 2007
@@ -14,7 +14,7 @@
 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.0."
+  IDS_WELCOME 			"Please choose a category on the right. This is version 1.0."
   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"
@@ -29,7 +29,6 @@
   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 you internet connection."
-  IDS_UNZIP_ERROR		"7-Zip not found.\nPlease install 7-Zip"
   IDS_VERSION			"Version: "
   IDS_LICENCE			"Licence: "
   IDS_MAINTAINER		"Maintainer: "

Modified: trunk/rosapps/downloader/translations/fr.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/translations/fr.rc?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/translations/fr.rc (original)
+++ trunk/rosapps/downloader/translations/fr.rc Wed May 16 22:05:03 2007
@@ -29,7 +29,6 @@
   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_UNZIP_ERROR		"7-Zip not found.\nPlease install 7-Zip"
   IDS_VERSION			"Version: "
   IDS_LICENCE			"Licence: "
   IDS_MAINTAINER		"Maintainer: "

Modified: trunk/rosapps/downloader/translations/id.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/translations/id.rc?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/translations/id.rc (original)
+++ trunk/rosapps/downloader/translations/id.rc Wed May 16 22:05:03 2007
@@ -29,7 +29,6 @@
   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_UNZIP_ERROR		"7-Zip not found.\nPlease install 7-Zip"
   IDS_VERSION			"Versi: "
   IDS_LICENCE			"Lisensi: "
   IDS_MAINTAINER		"Pemelihara: "

Modified: trunk/rosapps/downloader/translations/it.rc
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/translations/it.rc?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/translations/it.rc (original)
+++ trunk/rosapps/downloader/translations/it.rc Wed May 16 22:05:03 2007
@@ -29,7 +29,6 @@
   IDS_XMLERROR_1		"File xml non trovato !"
   IDS_XMLERROR_2		"Impossibile trattare il contenuto del file xml !"
   IDS_DOWNLOAD_ERROR		"Download del file impossibile.\nVerifica la connessione a Internet."
-  IDS_UNZIP_ERROR		"7-Zip not found.\nPlease install 7-Zip"
   IDS_VERSION			"Version: "
   IDS_LICENCE			"Licence: "
   IDS_MAINTAINER		"Maintainer: "

Modified: trunk/rosapps/downloader/xml.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/downloader/xml.c?rev=26807&r1=26806&r2=26807&view=diff
==============================================================================
--- trunk/rosapps/downloader/xml.c (original)
+++ trunk/rosapps/downloader/xml.c Wed May 16 22:05:03 2007
@@ -10,153 +10,20 @@
 #include <stdio.h>
 #include <windows.h>
 #include <shlwapi.h>
-#include <io.h>
 #include "structures.h"
 #include "resources.h"
 
 BOOL TagOpen;
-BOOL InstallScriptOpen;
-BOOL UninstallScriptOpen;
 struct Category* Current;
 struct Application* CurrentApplication;
-struct ScriptElement* CurrentScript;
-char DML_Name[0x100];
-char DML_Target[0x100];
-char Path [0x100];
 char CurrentTag [0x100];
-
 extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
-BOOL ImportXML (const char*);
-
-void ImportFolder (const char* folder)
-{
-	WCHAR buffer[0x100];
-	char buffer2[0x100];
-	struct _wfinddata_t Finddata;
-	DWORD Findhandle;
-	buffer[0]='\0';
-	strcpy(buffer2, Path);
-	strncat(buffer2, folder, 0x100-strlen(buffer2));
-	strncat(buffer2, "\\*.dml", 0x100-strlen(buffer2));
-	MultiByteToWideChar(CP_UTF8, 0, buffer2, -1, buffer, 0x100);
-	if((Findhandle=_wfindfirst(buffer, &Finddata)) == -1)
-		return;
-	do {
-		buffer[0]='\0';
-		MultiByteToWideChar(CP_UTF8, 0, folder, -1, buffer, 0x100);
-		wcsncat(buffer, L"\\", 0x100-wcslen(buffer));
-		wcsncat(buffer, Finddata.name, 0x100-wcslen(buffer));
-		WideCharToMultiByte(CP_UTF8, 0, buffer, -1, buffer2, 0x100, NULL, FALSE);
-		ImportXML(buffer2);
-	} while(_wfindnext(Findhandle, &Finddata)==0);
-	_findclose(Findhandle);
-}
-
-
-void Script_tag_opened (void* usrdata, const char* tag, const char** arg)
+
+void tag_opened (void* usrdata, const char* tag, const char** arg)
 {
 	int i;
-	if (!strcmp(tag, "script")) {
-		return;
-	} else if (InstallScriptOpen && (CurrentScript == NULL)) {
-		CurrentApplication->InstallScript = malloc(sizeof(struct ScriptElement));
-		CurrentScript = CurrentApplication->InstallScript;
-	} else if (UninstallScriptOpen && (CurrentScript == NULL)) {
-		CurrentApplication->UninstallScript = malloc(sizeof(struct ScriptElement));
-		CurrentScript = CurrentApplication->UninstallScript;
-	} else if (CurrentScript != NULL) {
-		CurrentScript->Next = malloc(sizeof(struct ScriptElement));
-		CurrentScript = CurrentScript->Next;
-	} else {
-		return;
-	}
-	memset(CurrentScript, 0, sizeof(struct ScriptElement));
-	if (!strcmp(tag, "download")) {
-		wcscpy(CurrentScript->Func, L"download");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
-			} else if(!strcmp(arg[i], "url")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "exec")) {
-		wcscpy(CurrentScript->Func, L"exec");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "del")) {
-		wcscpy(CurrentScript->Func, L"del");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "unzip")) {
-		wcscpy(CurrentScript->Func, L"unzip");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			} else if(!strcmp(arg[i], "outdir")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "adduninstaller")) {
-		wcscpy(CurrentScript->Func, L"adduninstaller");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "regname")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			} else if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "removeuninstaller")) {
-		wcscpy(CurrentScript->Func, L"removeuninstaller");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "regname")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "message")) {
-		wcscpy(CurrentScript->Func, L"message");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "text")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else if (!strcmp(tag, "load")) {
-		wcscpy(CurrentScript->Func, L"load");
-		for (i=0; arg[i]; i+=2) {
-			if(!strcmp(arg[i], "file")) {
-				MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
-			}
-		}
-	} else 
-		MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
-}
-
-
-void tag_opened (void* usrdata, const char* tag, const char** arg)
-{
-	int i;
-
-	if(!strcmp(tag, "import"))
-	{
-		for (i=0; arg[i]; i+=2) 
-		{
-			if(!strcmp(arg[i], "file"))
-			{
-				ImportXML(arg[i+1]);
-			}
-			else if(!strcmp(arg[i], "folder"))
-			{
-				ImportFolder(arg[i+1]);
-			}
-		}
-	}
-	else if(!strcmp(tag, "tree") && !CurrentApplication)
+
+	if(!strcmp(tag, "tree") && !CurrentApplication)
 	{
 		// check version
 	}
@@ -225,16 +92,7 @@
 	}
 	else if (CurrentApplication)
 	{
-		if (!strcmp(tag, "installscript")) {
-			InstallScriptOpen = TRUE;
-		} else 	if (!strcmp(tag, "uninstallscript")) {
-			UninstallScriptOpen = TRUE;
-		} else {
-			Script_tag_opened(usrdata, tag, arg);
-			if (CurrentScript == NULL) { 
-				strncpy(CurrentTag, tag, 0x100);
-			}
-		}
+		strncpy(CurrentTag, tag, 0x100);
 	}
 	else
 		MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
@@ -297,27 +155,30 @@
 	{
 		CurrentApplication = NULL;
 	}
-	else if(!strcmp(tag, "installscript") || !strcmp(tag, "uninstallscript"))
-	{
-		CurrentScript = NULL;
-		InstallScriptOpen = FALSE;
-		UninstallScriptOpen = FALSE;
-	}
-}
-
-BOOL ImportXML (const char* filename)
+}
+
+BOOL ProcessXML (const char* filename, struct Category* Root) 
 {
 	int done = 0;
-	char buffer[0x100];
+	char buffer[255];
 	FILE* file;
 	XML_Parser parser;
-	strcpy(buffer, Path);
-	strncat(buffer, filename, 0x100-strlen(buffer));
-	file = fopen(buffer, "r");
+
+	if(Current)
+		return FALSE;
+
+	Current = Root;
+	TagOpen = TRUE;
+
+	file = fopen(filename, "r");
 	if(!file) 
 	{
-		MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
-		return FALSE;
+		file = fopen("downloader.xml", "r"); 
+		if(!file) 
+		{
+			MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
+			return FALSE;
+		}
 	}
 
 	parser = XML_ParserCreate(NULL);
@@ -343,169 +204,10 @@
 	return TRUE;
 }
 
-BOOL ProcessXML (const char* filename, struct Category* Root)
-{
-	FILE* file;
-	file = fopen(filename, "r");
-	if(file) 
-	{
-		Path[0]='\0';
-		fclose(file);
-	}
-	else
-	{
-		strncpy(Path, getenv("SystemRoot"), 0x100-13);
-		strcat(Path, "\\packagetree\\");
-	}
-
-	if(Current)
-		return FALSE;
-
-	Current = Root;
-	CurrentApplication = NULL;
-	CurrentScript = NULL;
-	TagOpen = TRUE;
-	InstallScriptOpen = FALSE;
-	UninstallScriptOpen = FALSE;
-
-	return ImportXML(filename);
-}
-
-void DML_tag_opened (void* usrdata, const char* tag, const char** arg)
-{
-	int i;
-
-	if(!strcmp(tag, "application"))
-	{
-		for (i=0; arg[i]; i+=2) 
-		{
-			if(!strcmp(arg[i], "name"))
-			{
-				strncpy(DML_Name, arg[i+1], 0x100);
-			}
-			else if(!strcmp(arg[i], "target"))
-			{
-				strncpy(DML_Target, arg[i+1], 0x100);
-			}
-		}
-	}
-}
-
-void NOP_text (void* usrdata, const char* data, int len)
-{
-}
-
-void NOP_tag_closed (void* tree, const char* tag)
-{
-}
-
-char* addDML (const char* filename)
-{
-	int done = 0;
-	char buffer[0x100];
-	FILE* file;
-	XML_Parser parser;
-	DML_Target[0] = '\0';
-	file = fopen(filename, "r");
-	if(!file) 
-	{
-		MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
-		return NULL;
-	}
-
-	parser = XML_ParserCreate(NULL);
-	XML_SetElementHandler(parser, DML_tag_opened, NOP_tag_closed);
-	XML_SetCharacterDataHandler(parser, NOP_text);
-
-	while (!done)
-	{
-		size_t len = fread (buffer, 1, sizeof(buffer), file);
-		done = len < sizeof(buffer);
-
-		buffer[len] = 0;
-		if(!XML_Parse(parser, buffer, len, done)) 
-		{
-			MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
-			return NULL;
-		}
-	}
-
-	XML_ParserFree(parser);
-	fclose(file);
-
-	if(DML_Target[0]=='\0')
-	{
-		MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
-		return NULL;
-	}
-	
-	strcpy(buffer, getenv("SystemRoot"));
-	strncat(buffer, "\\packagetree\\", 0x100-strlen(buffer));
-	strncat(buffer, DML_Target, 0x100-strlen(buffer));
-
-	CopyFileA(filename, buffer, FALSE);
-	return DML_Name;
-}
-
-void LoadScriptFunc(WCHAR* filenameW, struct ScriptElement* Script)
-{
-	int done = 0;
-	char buffer[0x100];
-	char filenameA[0x100];
-	FILE* file;
-	XML_Parser parser;
-	struct ScriptElement* NextElement = Script->Next;
-	wcscpy(Script->Func,L"NOP");
-	CurrentScript = Script;
-	WideCharToMultiByte(CP_UTF8, 0, filenameW, -1, filenameA, 0x100, NULL, FALSE);
-	strcpy(buffer, Path);
-	strncat(buffer, filenameA, 0x100-strlen(buffer));
-	file = fopen(buffer, "r");
-	if(!file) 
-	{
-		MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
-		return;
-	}
-
-	parser = XML_ParserCreate(NULL);
-	XML_SetElementHandler(parser, Script_tag_opened, NOP_tag_closed);
-	XML_SetCharacterDataHandler(parser, NOP_text);
-
-	while (!done)
-	{
-		size_t len = fread (buffer, 1, sizeof(buffer), file);
-		done = len < sizeof(buffer);
-
-		buffer[len] = 0;
-		if(!XML_Parse(parser, buffer, len, done)) 
-		{
-			MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
-			CurrentScript->Next = NextElement;
-			return;
-		}
-	}
-
-	XML_ParserFree(parser);
-	fclose(file);
-	CurrentScript->Next = NextElement;
-	return;
-}
-
-void FreeScript (struct ScriptElement* Script)
-{
-	if (Script->Next != NULL)
-		FreeScript(Script->Next);
-	free(Script);
-}
-
 void FreeApps (struct Application* Apps)
 {
 	if (Apps->Next)
 		FreeApps(Apps->Next);
-	if (Apps->InstallScript)
-		FreeScript(Apps->InstallScript);
-	if (Apps->UninstallScript)
-		FreeScript(Apps->UninstallScript);
 
 	free(Apps);
 }




More information about the Ros-diffs mailing list