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
RunInstallReactOS(INT argc,WCHAR * argv[])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 */
wmain(INT argc,WCHAR * argv[])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