[BOOTDATA][SETUPLIB][REACTOS] INF support fixes.

- BOOTDATA: Use standard INF signature string, so that they can be
  opened successfully using ReactOS' or Windows' setupapi.dll with
  the INF_STYLE_WIN4 style.

- SETUPLIB: Use the correct INF_STYLE_* INF styles in SpInfOpenInfFile() calls.

- REACTOS : Switch thread locale to user-specified LocaleId when calling
  SetupOpenInfFileW(), so that the correct localized strings are used.
This commit is contained in:
Hermès Bélusca-Maïto 2018-01-15 18:09:53 +01:00
parent 42758b303b
commit 86f31289ef
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
14 changed files with 42 additions and 20 deletions

View file

@ -783,7 +783,7 @@ PrepareFileCopy(
InfHandle = SpInfOpenInfFile(PathBuffer,
NULL,
INF_STYLE_OLDNT, // INF_STYLE_WIN4,
INF_STYLE_WIN4,
pSetupData->LanguageId,
&ErrorLine);
}

View file

@ -516,7 +516,7 @@ LoadSetupInf(
pSetupData->SetupInf =
SpInfOpenInfFile(FileNameBuffer,
NULL,
/* INF_STYLE_WIN4 | */ INF_STYLE_OLDNT,
INF_STYLE_WIN4,
pSetupData->LanguageId,
&ErrorLine);
if (pSetupData->SetupInf == INVALID_HANDLE_VALUE)
@ -531,7 +531,8 @@ LoadSetupInf(
return ERROR_CORRUPT_TXTSETUPSIF;
/* Check 'Signature' string */
if (_wcsicmp(Value, L"$ReactOS$") != 0)
if (_wcsicmp(Value, L"$ReactOS$") != 0 &&
_wcsicmp(Value, L"$Windows NT$") != 0)
{
INF_FreeData(Value);
return ERROR_SIGNATURE_TXTSETUPSIF;

View file

@ -10,6 +10,7 @@
/* INCLUDES ******************************************************************/
#include "reactos.h"
#include <winnls.h>
#define NDEBUG
#include <debug.h>
@ -38,10 +39,10 @@ SetupOpenInfFileExW(
IN LCID LocaleId,
OUT PUINT ErrorLine)
{
HINF InfHandle;
LCID OldLocaleId;
WCHAR Win32FileName[MAX_PATH];
UNREFERENCED_PARAMETER(LocaleId);
/*
* SetupOpenInfFileExW is called within setuplib with NT paths, however
* the Win32 SetupOpenInfFileW API only takes Win32 paths. We therefore
@ -54,10 +55,28 @@ SetupOpenInfFileExW(
return INVALID_HANDLE_VALUE;
}
return SetupOpenInfFileW(Win32FileName,
InfClass,
InfStyle,
ErrorLine);
/*
* Because SetupAPI's SetupOpenInfFileW() function does not allow the user
* to specify a given LCID to use to load localized string substitutions,
* we temporarily change the current thread locale before calling
* SetupOpenInfFileW(). When we have finished we restore the original
* thread locale.
*/
OldLocaleId = GetThreadLocale();
if (OldLocaleId != LocaleId)
SetThreadLocale(LocaleId);
/* Load the INF file */
InfHandle = SetupOpenInfFileW(Win32FileName,
InfClass,
InfStyle,
ErrorLine);
/* Restore the original thread locale */
if (OldLocaleId != LocaleId)
SetThreadLocale(OldLocaleId);
return InfHandle;
}

View file

@ -5,7 +5,7 @@
; Data licensed under MPL 2.0 <https://mozilla.org/MPL/2.0/>
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[AddReg]
; "SSL.com EV Root Certification Authority ECC" (664 bytes)

View file

@ -1,5 +1,5 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[AddReg]
BCD,"BCD00000000\Description\Control","System",0x00010001,1

View file

@ -1,5 +1,5 @@
[Version]
Signature="$ReactOS$"
Signature = "$Windows NT$"
[AddReg]
HKLM,"SOFTWARE\Classes",,0x00000010

View file

@ -1,5 +1,5 @@
[Version]
Signature="$ReactOS$"
Signature = "$Windows NT$"
[AddReg]

View file

@ -1,5 +1,5 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[AddReg]
; Enable _one_ driver per section by removing the leading semicolon.

View file

@ -1,5 +1,5 @@
[Version]
Signature="$ReactOS$"
Signature = "$Windows NT$"
[AddReg]

View file

@ -1,5 +1,5 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[AddReg]

View file

@ -1,5 +1,5 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[DelReg]

View file

@ -11,7 +11,8 @@
.InfBegin
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
;Signature = "$ReactOS$"
; Directories relative to the installation directory.
; For specifying absolute directories, use the SystemPartitionFiles section,

View file

@ -1,5 +1,5 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
[DelReg]

View file

@ -1,5 +1,6 @@
[Version]
Signature = "$ReactOS$"
Signature = "$Windows NT$"
;Signature = "$ReactOS$"
;
; The [SourceDisksNames] section lists all the available installation media