mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 06:15:26 +00:00
199 lines
5 KiB
C
199 lines
5 KiB
C
/*
|
|
* PROJECT: ReactOS Setup Library
|
|
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
|
* PURPOSE: Public header
|
|
* COPYRIGHT: Copyright 2017-2018 Hermes Belusca-Maito
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/* INCLUDES *****************************************************************/
|
|
|
|
/* Needed PSDK headers when using this library */
|
|
#if 0
|
|
|
|
#define WIN32_NO_STATUS
|
|
#define _INC_WINDOWS
|
|
#define COM_NO_WINDOWS_H
|
|
|
|
#include <winxxx.h>
|
|
|
|
#endif
|
|
|
|
/* NOTE: Please keep the header inclusion order! */
|
|
|
|
extern HANDLE ProcessHeap;
|
|
|
|
#include "errorcode.h"
|
|
#include "spapisup/fileqsup.h"
|
|
#include "spapisup/infsupp.h"
|
|
#include "utils/linklist.h"
|
|
#include "utils/ntverrsrc.h"
|
|
// #include "utils/arcname.h"
|
|
#include "utils/bldrsup.h"
|
|
#include "bootsup.h"
|
|
#include "utils/filesup.h"
|
|
#include "fsutil.h"
|
|
#include "utils/genlist.h"
|
|
#include "utils/inicache.h"
|
|
#include "utils/partlist.h"
|
|
#include "utils/arcname.h"
|
|
#include "utils/osdetect.h"
|
|
#include "utils/regutil.h"
|
|
#include "registry.h"
|
|
#include "mui.h"
|
|
#include "settings.h"
|
|
|
|
// #include "install.h" // See at the end...
|
|
|
|
|
|
/* DEFINES ******************************************************************/
|
|
|
|
#define KB ((ULONGLONG)1024)
|
|
#define MB (KB*KB)
|
|
#define GB (KB*KB*KB)
|
|
// #define TB (KB*KB*KB*KB)
|
|
// #define PB (KB*KB*KB*KB*KB)
|
|
|
|
|
|
/* TYPEDEFS *****************************************************************/
|
|
|
|
struct _USETUP_DATA;
|
|
|
|
typedef VOID
|
|
(__cdecl *PSETUP_ERROR_ROUTINE)(IN struct _USETUP_DATA*, ...);
|
|
|
|
typedef struct _USETUP_DATA
|
|
{
|
|
/* Error handling *****/
|
|
ERROR_NUMBER LastErrorNumber;
|
|
PSETUP_ERROR_ROUTINE ErrorRoutine;
|
|
|
|
/* Setup INFs *****/
|
|
HINF SetupInf;
|
|
|
|
/* Installation *****/
|
|
PVOID SetupFileQueue; // HSPFILEQ
|
|
|
|
/* SOURCE Paths *****/
|
|
UNICODE_STRING SourceRootPath;
|
|
UNICODE_STRING SourceRootDir;
|
|
UNICODE_STRING SourcePath;
|
|
|
|
/* DESTINATION Paths *****/
|
|
/*
|
|
* Path to the system partition, where the boot manager resides.
|
|
* On x86 PCs, this is usually the active partition.
|
|
* On ARC, (u)EFI, ... platforms, this is a dedicated partition.
|
|
*
|
|
* For more information, see:
|
|
* https://en.wikipedia.org/wiki/System_partition_and_boot_partition
|
|
* http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/boot-and-system-volumes.html
|
|
* http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/arc-boot-process.html
|
|
* http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html
|
|
* http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-system-volume.html
|
|
* http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-boot-volume.html
|
|
*/
|
|
UNICODE_STRING SystemRootPath;
|
|
|
|
/* Path to the installation directory inside the ReactOS boot partition */
|
|
UNICODE_STRING DestinationArcPath; /** Equivalent of 'NTOS_INSTALLATION::SystemArcPath' **/
|
|
UNICODE_STRING DestinationPath; /** Equivalent of 'NTOS_INSTALLATION::SystemNtPath' **/
|
|
UNICODE_STRING DestinationRootPath;
|
|
|
|
// FIXME: This is only temporary!! Must be removed later!
|
|
UNICODE_STRING InstallPath;
|
|
|
|
LONG DestinationDiskNumber;
|
|
LONG DestinationPartitionNumber;
|
|
|
|
LONG MBRInstallType;
|
|
LONG FormatPartition;
|
|
LONG AutoPartition;
|
|
|
|
/* Settings lists *****/
|
|
PGENERIC_LIST ComputerList;
|
|
PGENERIC_LIST DisplayList;
|
|
PGENERIC_LIST KeyboardList;
|
|
PGENERIC_LIST LayoutList;
|
|
PGENERIC_LIST LanguageList;
|
|
|
|
/* Other stuff *****/
|
|
WCHAR LocaleID[9];
|
|
LANGID LanguageId;
|
|
|
|
ULONG RequiredPartitionDiskSpace;
|
|
WCHAR InstallationDirectory[MAX_PATH];
|
|
} USETUP_DATA, *PUSETUP_DATA;
|
|
|
|
|
|
#include "install.h"
|
|
|
|
|
|
// HACK!!
|
|
extern BOOLEAN IsUnattendedSetup;
|
|
|
|
|
|
/* FUNCTIONS ****************************************************************/
|
|
|
|
VOID
|
|
CheckUnattendedSetup(
|
|
IN OUT PUSETUP_DATA pSetupData);
|
|
|
|
VOID
|
|
InstallSetupInfFile(
|
|
IN OUT PUSETUP_DATA pSetupData);
|
|
|
|
NTSTATUS
|
|
GetSourcePaths(
|
|
OUT PUNICODE_STRING SourcePath,
|
|
OUT PUNICODE_STRING SourceRootPath,
|
|
OUT PUNICODE_STRING SourceRootDir);
|
|
|
|
ERROR_NUMBER
|
|
LoadSetupInf(
|
|
IN OUT PUSETUP_DATA pSetupData);
|
|
|
|
NTSTATUS
|
|
InitDestinationPaths(
|
|
IN OUT PUSETUP_DATA pSetupData,
|
|
IN PCWSTR InstallationDir,
|
|
IN PDISKENTRY DiskEntry, // FIXME: HACK!
|
|
IN PPARTENTRY PartEntry); // FIXME: HACK!
|
|
|
|
// NTSTATUS
|
|
ERROR_NUMBER
|
|
InitializeSetup(
|
|
IN OUT PUSETUP_DATA pSetupData,
|
|
IN ULONG InitPhase);
|
|
|
|
VOID
|
|
FinishSetup(
|
|
IN OUT PUSETUP_DATA pSetupData);
|
|
|
|
|
|
typedef enum _REGISTRY_STATUS
|
|
{
|
|
Success = 0,
|
|
RegHiveUpdate,
|
|
ImportRegHive,
|
|
DisplaySettingsUpdate,
|
|
LocaleSettingsUpdate,
|
|
KeybLayouts,
|
|
KeybSettingsUpdate,
|
|
CodePageInfoUpdate,
|
|
} REGISTRY_STATUS;
|
|
|
|
typedef VOID
|
|
(__cdecl *PREGISTRY_STATUS_ROUTINE)(IN REGISTRY_STATUS, ...);
|
|
|
|
ERROR_NUMBER
|
|
UpdateRegistry(
|
|
IN OUT PUSETUP_DATA pSetupData,
|
|
/**/IN BOOLEAN RepairUpdateFlag, /* HACK HACK! */
|
|
/**/IN PPARTLIST PartitionList, /* HACK HACK! */
|
|
/**/IN WCHAR DestinationDriveLetter, /* HACK HACK! */
|
|
/**/IN PCWSTR SelectedLanguageId, /* HACK HACK! */
|
|
IN PREGISTRY_STATUS_ROUTINE StatusRoutine OPTIONAL);
|
|
|
|
/* EOF */
|