[USETUP][SETUPLIB] Code refactoring.

- Move several global setup variables into a structure "USETUP_DATA",
  similar to the syssetup structure "SETUPDATA" (or the WIP 1st-stage
  installer structure of the same name), so that these variables can be
  set easily by different helper setup functions;

- Move CheckUnattendedSetup() and GetSourcePaths() to setuplib and make
  CheckUnattendedSetup() use the USETUP_DATA structure;

- Add a LoadSetupInf() function that loads the txtsetup.sif file
  (factoring out the corresponding code in USETUP);

- Add a InstallSetupInfFile() function (that I'll probably rename later on)
  whose purpose is to create a valid "$winnt$.inf" setup installation file
  in the ReactOS\system32 directory, which should help the 2nd-stage installer
  to correctly retrieve the source installation media we used during 1st-stage,
  and contain the unattended setup lines copied from unattend.inf. This is
  done in a Windows-compatible way.

svn path=/branches/setup_improvements/; revision=75518

[USETUP] Close the txtsetup.sif file at the end of the operations.

svn path=/branches/setup_improvements/; revision=75539
This commit is contained in:
Hermès Bélusca-Maïto 2017-08-09 20:39:45 +00:00
parent 11500a0033
commit 7e248feabf
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
4 changed files with 786 additions and 461 deletions

View file

@ -32,6 +32,7 @@ extern HANDLE ProcessHeap;
#include "filesup.h"
#include "fsutil.h"
#include "genlist.h"
#include "infsupp.h"
#include "inicache.h"
#include "partlist.h"
#include "arcname.h"
@ -49,4 +50,74 @@ extern HANDLE ProcessHeap;
// #define PB (KB*KB*KB*KB*KB)
/* TYPEDEFS *****************************************************************/
typedef struct _USETUP_DATA
{
/* 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 DestinationPath; /** Equivalent of 'NTOS_INSTALLATION::SystemNtPath' **/
UNICODE_STRING DestinationArcPath; /** Equivalent of 'NTOS_INSTALLATION::SystemArcPath' **/
UNICODE_STRING DestinationRootPath;
LONG DestinationDiskNumber;
LONG DestinationPartitionNumber;
LONG MBRInstallType;
LONG FormatPartition;
LONG AutoPartition;
WCHAR LocaleID[9];
LANGID LanguageId;
ULONG RequiredPartitionDiskSpace;
WCHAR InstallationDirectory[MAX_PATH];
} USETUP_DATA, *PUSETUP_DATA;
// 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(
OUT HINF* SetupInf,
IN OUT PUSETUP_DATA pSetupData);
/* EOF */