2 * PROJECT: ReactOS Setup Library
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Public header
5 * COPYRIGHT: Copyright 2017-2018 Hermes Belusca-Maito
10 /* INCLUDES *****************************************************************/
12 /* Needed PSDK headers when using this library */
15 #define WIN32_NO_STATUS
17 #define COM_NO_WINDOWS_H
23 /* NOTE: Please keep the header inclusion order! */
25 extern HANDLE ProcessHeap
;
27 #include "errorcode.h"
28 #include "spapisup/fileqsup.h"
29 #include "spapisup/infsupp.h"
30 #include "utils/linklist.h"
31 #include "utils/ntverrsrc.h"
32 // #include "utils/arcname.h"
33 #include "utils/bldrsup.h"
35 #include "utils/filesup.h"
37 #include "utils/genlist.h"
38 #include "utils/inicache.h"
39 #include "utils/partlist.h"
40 #include "utils/arcname.h"
41 #include "utils/osdetect.h"
42 #include "utils/regutil.h"
47 // #include "install.h" // See at the end...
50 /* DEFINES ******************************************************************/
52 #define KB ((ULONGLONG)1024)
55 // #define TB (KB*KB*KB*KB)
56 // #define PB (KB*KB*KB*KB*KB)
59 /* TYPEDEFS *****************************************************************/
64 (__cdecl
*PSETUP_ERROR_ROUTINE
)(IN
struct _USETUP_DATA
*, ...);
66 typedef struct _USETUP_DATA
68 /* Error handling *****/
69 ERROR_NUMBER LastErrorNumber
;
70 PSETUP_ERROR_ROUTINE ErrorRoutine
;
75 /* Installation *****/
76 PVOID SetupFileQueue
; // HSPFILEQ
78 /* SOURCE Paths *****/
79 UNICODE_STRING SourceRootPath
;
80 UNICODE_STRING SourceRootDir
;
81 UNICODE_STRING SourcePath
;
83 /* DESTINATION Paths *****/
85 * Path to the system partition, where the boot manager resides.
86 * On x86 PCs, this is usually the active partition.
87 * On ARC, (u)EFI, ... platforms, this is a dedicated partition.
89 * For more information, see:
90 * https://en.wikipedia.org/wiki/System_partition_and_boot_partition
91 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/boot-and-system-volumes.html
92 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/arc-boot-process.html
93 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html
94 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-system-volume.html
95 * http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-boot-volume.html
97 UNICODE_STRING SystemRootPath
;
99 /* Path to the installation directory inside the ReactOS boot partition */
100 UNICODE_STRING DestinationArcPath
; /** Equivalent of 'NTOS_INSTALLATION::SystemArcPath' **/
101 UNICODE_STRING DestinationPath
; /** Equivalent of 'NTOS_INSTALLATION::SystemNtPath' **/
102 UNICODE_STRING DestinationRootPath
;
104 // FIXME: This is only temporary!! Must be removed later!
105 UNICODE_STRING InstallPath
;
107 LONG DestinationDiskNumber
;
108 LONG DestinationPartitionNumber
;
111 LONG FormatPartition
;
115 /* Settings lists *****/
116 PGENERIC_LIST ComputerList
;
117 PGENERIC_LIST DisplayList
;
118 PGENERIC_LIST KeyboardList
;
119 PGENERIC_LIST LayoutList
;
120 PGENERIC_LIST LanguageList
;
122 /* Other stuff *****/
126 ULONG RequiredPartitionDiskSpace
;
127 WCHAR InstallationDirectory
[MAX_PATH
];
128 } USETUP_DATA
, *PUSETUP_DATA
;
135 extern BOOLEAN IsUnattendedSetup
;
138 /* FUNCTIONS ****************************************************************/
140 #include "substset.h"
143 CheckUnattendedSetup(
144 IN OUT PUSETUP_DATA pSetupData
);
148 IN OUT PUSETUP_DATA pSetupData
);
152 OUT PUNICODE_STRING SourcePath
,
153 OUT PUNICODE_STRING SourceRootPath
,
154 OUT PUNICODE_STRING SourceRootDir
);
158 IN OUT PUSETUP_DATA pSetupData
);
161 InitDestinationPaths(
162 IN OUT PUSETUP_DATA pSetupData
,
163 IN PCWSTR InstallationDir
,
164 IN PPARTENTRY PartEntry
); // FIXME: HACK!
169 IN OUT PUSETUP_DATA pSetupData
,
174 IN OUT PUSETUP_DATA pSetupData
);
177 typedef enum _REGISTRY_STATUS
182 DisplaySettingsUpdate
,
183 LocaleSettingsUpdate
,
190 (__cdecl
*PREGISTRY_STATUS_ROUTINE
)(IN REGISTRY_STATUS
, ...);
194 IN OUT PUSETUP_DATA pSetupData
,
195 /**/IN BOOLEAN RepairUpdateFlag
, /* HACK HACK! */
196 /**/IN PPARTLIST PartitionList
, /* HACK HACK! */
197 /**/IN WCHAR DestinationDriveLetter
, /* HACK HACK! */
198 /**/IN PCWSTR SelectedLanguageId
, /* HACK HACK! */
199 IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL
,
200 IN PFONTSUBSTSETTINGS SubstSettings OPTIONAL
);