[BOOTDATA][SETUPLIB][REACTOS] INF support fixes.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Mon, 15 Jan 2018 17:09:53 +0000 (18:09 +0100)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Mon, 5 Nov 2018 23:04:19 +0000 (00:04 +0100)
- 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.

14 files changed:
base/setup/lib/install.c
base/setup/lib/setuplib.c
base/setup/reactos/spapisup/infsupp.c
boot/bootdata/caroots.inf
boot/bootdata/hivebcd.inf
boot/bootdata/hivecls.inf
boot/bootdata/hivedef.inf
boot/bootdata/hiveinst.inf
boot/bootdata/hivesft.inf
boot/bootdata/hivesys.inf
boot/bootdata/livecd.inf
boot/bootdata/packages/reactos.dff.in
boot/bootdata/setupreg.inf
boot/bootdata/txtsetup.sif

index f2875d0..a9a489b 100644 (file)
@@ -783,7 +783,7 @@ PrepareFileCopy(
 
         InfHandle = SpInfOpenInfFile(PathBuffer,
                                      NULL,
-                                     INF_STYLE_OLDNT, // INF_STYLE_WIN4,
+                                     INF_STYLE_WIN4,
                                      pSetupData->LanguageId,
                                      &ErrorLine);
         }
index 9a7ea88..c63c5df 100644 (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;
index c95aad8..7c40e84 100644 (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;
 }
 
 
index a7d09f9..4c30bc9 100644 (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)
index a7d904a..0782558 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 BCD,"BCD00000000\Description\Control","System",0x00010001,1
index 4a953a1..446da70 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature="$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 HKLM,"SOFTWARE\Classes",,0x00000010
index 618635a..91ce76e 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature="$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 
index d815185..e4066a7 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 ; Enable _one_ driver per section by removing the leading semicolon.
index e96e5de..6ccd294 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature="$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 
index 76491a5..41da576 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
 
 [AddReg]
 
index f826a7f..fda2356 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
 
 [DelReg]
 
index f122a8f..9424840 100644 (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,
index 7dbf932..197918f 100644 (file)
@@ -1,5 +1,5 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
 
 [DelReg]
 
index 808c2e2..03609d2 100644 (file)
@@ -1,5 +1,6 @@
 [Version]
-Signature = "$ReactOS$"
+Signature = "$Windows NT$"
+;Signature = "$ReactOS$"
 
 ;
 ; The [SourceDisksNames] section lists all the available installation media