Author: mpiulachs Date: Fri Oct 26 20:19:52 2007 New Revision: 29901
URL: http://svn.reactos.org/svn/reactos?rev=29901&view=rev Log: Implement Infs.Always section parsing to syssetup. Thanks to hpoussin for his suggestions
Modified: trunk/reactos/dll/win32/syssetup/install.c
Modified: trunk/reactos/dll/win32/syssetup/install.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/syssetup/install.... ============================================================================== --- trunk/reactos/dll/win32/syssetup/install.c (original) +++ trunk/reactos/dll/win32/syssetup/install.c Fri Oct 26 20:19:52 2007 @@ -358,7 +358,7 @@
BOOL -ProcessSysSetupInf(VOID) +InstallSysSetupInfDevices(VOID) { INFCONTEXT InfContext; TCHAR LineBuffer[256]; @@ -392,7 +392,67 @@
return TRUE; } - +BOOL +InstallSysSetupInfComponents(VOID) +{ + INFCONTEXT InfContext; + TCHAR NameBuffer[256]; + TCHAR SectionBuffer[256]; + + if (!SetupFindFirstLine(hSysSetupInf, + _T("Infs.Always"), + NULL, + &InfContext)) + { + DPRINT("No Inf.Always section found\n"); + } + else + { + do + { + if (!SetupGetStringField(&InfContext, + 1, // Get the component name + NameBuffer, + sizeof(NameBuffer)/sizeof(NameBuffer[0]), + NULL)) + { + DebugPrint("Error while trying to get component name \n"); + return FALSE; + } + + if (!SetupGetStringField(&InfContext, + 2, // Get the component install section + SectionBuffer, + sizeof(SectionBuffer)/sizeof(SectionBuffer[0]), + NULL)) + { + DebugPrint("Error while trying to get component install section \n"); + return FALSE; + } + + DPRINT("Trying to execute install section '%S' from '%S' \n", SectionBuffer , NameBuffer); + + if (!SetupInstallFromInfSection(NULL, + hSysSetupInf, + SectionBuffer, + SPINST_ALL, + NULL, + NULL, + SP_COPY_NEWER, + NULL, + NULL, + NULL, + NULL)) + { + DebugPrint("Error while trying to install : %S (Error: %lu) \n", NameBuffer, GetLastError()); + return FALSE; + } + } + while (SetupFindNextLine(&InfContext, &InfContext)); + } + + return TRUE; +}
static BOOL EnableUserModePnpManager(VOID) @@ -502,9 +562,16 @@ return FALSE; }
- if (!ProcessSysSetupInf()) - { - DebugPrint("ProcessSysSetupInf() failed!\n"); + if (!InstallSysSetupInfDevices()) + { + DebugPrint("InstallSysSetupInfDevices() failed!\n"); + SetupCloseInfFile(hSysSetupInf); + return FALSE; + } + + if(!InstallSysSetupInfComponents()) + { + DebugPrint("InstallSysSetupInfComponents() failed!\n"); SetupCloseInfFile(hSysSetupInf); return FALSE; }