1 /* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS GUI/console setup 4 * FILE: base/setup/setup/setup.c 5 * PURPOSE: Second stage setup 6 * PROGRAMMER: Eric Kohl 7 */ 8 9 #include <stdarg.h> 10 #include <windef.h> 11 #include <winbase.h> 12 13 #define NDEBUG 14 #include <debug.h> 15 16 typedef INT (WINAPI *PINSTALL_REACTOS)(INT argc, WCHAR** argv); 17 18 /* FUNCTIONS ****************************************************************/ 19 20 static 21 INT 22 RunInstallReactOS(INT argc, WCHAR* argv[]) 23 { 24 INT RetVal; 25 HMODULE hDll; 26 PINSTALL_REACTOS InstallReactOS; 27 28 hDll = LoadLibraryW(L"syssetup.dll"); 29 if (hDll == NULL) 30 { 31 DPRINT("Failed to load 'syssetup.dll'!\n"); 32 return GetLastError(); 33 } 34 DPRINT("Loaded 'syssetup.dll'!\n"); 35 36 /* Call the standard Windows-compatible export */ 37 InstallReactOS = (PINSTALL_REACTOS)GetProcAddress(hDll, "InstallWindowsNt"); 38 if (InstallReactOS == NULL) 39 { 40 RetVal = GetLastError(); 41 DPRINT("Failed to get address for 'InstallWindowsNt()'!\n"); 42 } 43 else 44 { 45 RetVal = InstallReactOS(argc, argv); 46 } 47 48 return RetVal; 49 } 50 51 52 /* Called from wmainCRTStartup */ 53 INT wmain(INT argc, WCHAR* argv[]) 54 { 55 LPWSTR CmdLine, p; 56 57 // NOTE: Temporary, until we correctly use argc/argv. 58 CmdLine = GetCommandLineW(); 59 DPRINT("CmdLine: <%S>\n", CmdLine); 60 61 p = wcschr(CmdLine, L'-'); 62 if (p == NULL) 63 return ERROR_INVALID_PARAMETER; 64 p++; 65 66 // NOTE: On Windows, "mini" means "minimal UI", and can be used 67 // in addition to "newsetup"; these options are not exclusive. 68 if (_wcsicmp(p, L"newsetup") == 0 || _wcsicmp(p, L"mini") == 0) 69 { 70 RunInstallReactOS(argc, argv); 71 } 72 73 #if 0 74 /* Add new setup types here */ 75 else if (...) 76 { 77 78 } 79 #endif 80 81 return 0; 82 } 83 84 /* EOF */ 85