added preparations for installing .INF files (for class installers) during setup...
authorGero Kuehn <reactos.filter@gkware.com>
Mon, 19 Jul 2004 01:33:48 +0000 (01:33 +0000)
committerGero Kuehn <reactos.filter@gkware.com>
Mon, 19 Jul 2004 01:33:48 +0000 (01:33 +0000)
svn path=/trunk/; revision=10219

reactos/Makefile
reactos/lib/syssetup/Makefile
reactos/lib/syssetup/install.c
reactos/media/inf/NET_NIC.inf [new file with mode: 0644]
reactos/media/inf/syssetup.inf [new file with mode: 0644]

index 3747754..8ccfb90 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.235 2004/07/10 21:44:14 sedwards Exp $
+# $Id: Makefile,v 1.236 2004/07/19 01:33:48 kuehng Exp $
 #
 # Global makefile
 #
@@ -809,6 +809,7 @@ install_clean:
        $(RM) $(INSTALL_DIR)/symbols/*.*
        $(RM) $(INSTALL_DIR)/media/fonts/*.*
        $(RM) $(INSTALL_DIR)/media/*.*
+       $(RM) $(INSTALL_DIR)/inf/*.*
        $(RM) $(INSTALL_DIR)/bin/*.*
        $(RM) $(INSTALL_DIR)/*.com
        $(RM) $(INSTALL_DIR)/*.bat
@@ -818,12 +819,14 @@ install_clean:
        $(RMDIR) $(INSTALL_DIR)/symbols
        $(RMDIR) $(INSTALL_DIR)/media/fonts
        $(RMDIR) $(INSTALL_DIR)/media
+       $(RMDIR) $(INSTALL_DIR)/inf
        $(RMDIR) $(INSTALL_DIR)/bin
        $(RMDIR) $(INSTALL_DIR)
 
 install_dirs:
        $(RMKDIR) $(INSTALL_DIR)
        $(RMKDIR) $(INSTALL_DIR)/bin
+       $(RMKDIR) $(INSTALL_DIR)/inf
        $(RMKDIR) $(INSTALL_DIR)/media
        $(RMKDIR) $(INSTALL_DIR)/media/fonts
        $(RMKDIR) $(INSTALL_DIR)/symbols
@@ -836,6 +839,7 @@ install_before:
        $(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
        $(CP) boot.bat $(INSTALL_DIR)/boot.bat
        $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
+       $(CP) media/inf $(INSTALL_DIR)/inf
        $(CP) media/fonts $(INSTALL_DIR)/media/fonts
        $(CP) media/nls $(INSTALL_DIR)/system32
        $(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
index 8d774e9..bc9dce1 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.9 2004/05/29 21:24:47 hbirr Exp $
+# $Id: Makefile,v 1.10 2004/07/19 01:33:14 kuehng Exp $
 
 PATH_TO_TOP = ../..
 
@@ -15,7 +15,7 @@ TARGET_CFLAGS = -Wall -Werror -fno-builtin
 TARGET_CFLAGS += -D__USE_W32API -D_WIN32_IE=0x0500
 TARGET_RCFLAGS += -D__USE_W32API -D_WIN32_IE=0x0500
  
-TARGET_LFLAGS = -nostartfiles -nostdlib
+TARGET_LFLAGS = -nostartfiles
 
 TARGET_OBJECTS = dllmain.o install.o logfile.o wizard.o
 
index 048373e..b0ef381 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: install.c,v 1.13 2004/06/24 09:17:33 gvg Exp $
+/* $Id: install.c,v 1.14 2004/07/19 01:33:14 kuehng Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS system libraries
@@ -31,6 +31,8 @@
 #include <windows.h>
 #include <commctrl.h>
 #include <stdio.h>
+#include <tchar.h>
+#include <stdlib.h>
 
 #include <samlib.h>
 #include <syssetup.h>
@@ -248,6 +250,41 @@ CreateTempDir(LPCWSTR VarName)
   RegCloseKey (hKey);
 }
 
+BOOL ProcessSysSetupInf(void)
+{
+#define SECTIONBUF_SIZE 4096
+       TCHAR *pBuf2;
+       TCHAR pBuf[SECTIONBUF_SIZE];
+       
+       SetLastError(0);
+
+       DWORD dwBufSize = GetPrivateProfileSection(_T("DeviceInfsToInstall"),pBuf,SECTIONBUF_SIZE,_T("Inf\\SYSSETUP.INF"));
+       
+       // fix this first...
+       if(GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+               return TRUE;
+
+       if(dwBufSize == SECTIONBUF_SIZE-2)
+               return FALSE;
+       if(!dwBufSize)
+               return FALSE;
+       pBuf2=pBuf;
+       while(*pBuf2)
+       {
+               OutputDebugString(_T("Calling Class Installer for "));
+               OutputDebugString(pBuf2);
+               OutputDebugString(_T("\r\n"));
+
+//             Currently unsupported
+//             if(!SetupDiInstallClass(NULL,pBuf2,DI_QUIETINSTALL,NULL))
+//                     return FALSE;
+               pBuf2+=_tcslen(pBuf2)+1;
+       }
+
+       return TRUE;
+}
+
+
 DWORD STDCALL
 InstallReactOS (HINSTANCE hInstance)
 {
@@ -343,6 +380,11 @@ InstallReactOS (HINSTANCE hInstance)
   CreateTempDir(L"TEMP");
   CreateTempDir(L"TMP");
 
+  if(!ProcessSysSetupInf())
+  {
+      DebugPrint("ProcessSysSetupInf() failed!\n");
+         return 0;
+  }
 #if 1
   InstallWizard ();
 #endif
diff --git a/reactos/media/inf/NET_NIC.inf b/reactos/media/inf/NET_NIC.inf
new file mode 100644 (file)
index 0000000..615dea6
--- /dev/null
@@ -0,0 +1,24 @@
+; Network.INF
+;
+; Installation file for the Net class
+;
+[version]
+LayoutFile = layout.inf
+signature  = "$Reactos$"
+Class      = Net
+ClassGUID  = {4d36e972-e325-11ce-bfc1-08002be10318}
+provider   = %Reactos%
+DriverVer=10/19/1999,5.00.2157.1
+
+[ClassInstall32.NT]
+AddReg = NetClass.NT.AddReg
+
+[NetClass.NT.AddReg]
+HKR, , ,                0, %DisplayClassName%
+HKR, , EnumPropPages32, 0, "NetCfgx.dll,NetPropPageProvider"
+HKR, , Icon,            0, "-5"
+HKR, , Installer32,     0, "NetCfgx.dll,NetClassInstaller"
+
+[Strings]
+Reactos="Reactos Team"
+ClassName="Network adapters"
diff --git a/reactos/media/inf/syssetup.inf b/reactos/media/inf/syssetup.inf
new file mode 100644 (file)
index 0000000..fafc718
--- /dev/null
@@ -0,0 +1,16 @@
+;
+; For Windows, this file controls various aspects of the Installation and
+; Upgrade process. If you know a good documentation about this file,
+; please add a link here.
+; 
+;
+[Version]
+signature="$Reactos$"
+ClassGUID={00000000-0000-0000-0000-000000000000}
+
+
+; These .INFs install the device classes
+[DeviceInfsToInstall]
+; MS uses netnovel.inf as class-installer INF for NICs
+; we use a separate one to keep things clean
+NET_NIC.inf