Author: mpiulachs Date: Wed Jun 25 09:21:27 2008 New Revision: 34083
URL: http://svn.reactos.org/svn/reactos?rev=34083&view=rev Log: - Fix InstallSysSetupComponents: SetupInstallFromInfSection was being called with the wrong HINF handler - Always check for application existence before creating the shortcut
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 [iso-8859-1] (original) +++ trunk/reactos/dll/win32/syssetup/install.c [iso-8859-1] Wed Jun 25 09:21:27 2008 @@ -399,6 +399,7 @@ INFCONTEXT InfContext; TCHAR NameBuffer[256]; TCHAR SectionBuffer[256]; + HINF hComponentInf = INVALID_HANDLE_VALUE;
if (!SetupFindFirstLine(hSysSetupInf, _T("Infs.Always"), @@ -433,21 +434,35 @@
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)) + hComponentInf = SetupOpenInfFileW(NameBuffer, + NULL, + INF_STYLE_WIN4, + NULL); + + if (hComponentInf == INVALID_HANDLE_VALUE) { - DebugPrint("Error while trying to install : %S (Error: %lu) \n", NameBuffer, GetLastError()); + DebugPrint("SetupOpenInfFileW() failed to open '%S' (Error: %lu)\n", NameBuffer ,GetLastError()); return FALSE; } + + if (!SetupInstallFromInfSection(NULL, + hComponentInf, + SectionBuffer, + SPINST_ALL, + NULL, + NULL, + SP_COPY_NEWER, + SetupDefaultQueueCallbackW, + NULL, + NULL, + NULL)) + { + DebugPrint("Error while trying to install : %S (Error: %lu)\n", NameBuffer, GetLastError()); + SetupCloseInfFile(hComponentInf); + return FALSE; + } + + SetupCloseInfFile(hComponentInf); } while (SetupFindNextLine(&InfContext, &InfContext)); } @@ -740,33 +755,33 @@ CoInitialize(NULL);
/* Create desktop shortcuts */ - CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_CMD, _T("%SystemRoot%\system32\cmd.exe"), IDS_CMT_CMD, FALSE); + CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_CMD, _T("%SystemRoot%\system32\cmd.exe"), IDS_CMT_CMD, TRUE);
/* Create program startmenu shortcuts */ - CreateShortcut(CSIDL_PROGRAMS, NULL, IDS_SHORT_EXPLORER, _T("%SystemRoot%\explorer.exe"), IDS_CMT_EXPLORER, FALSE); + CreateShortcut(CSIDL_PROGRAMS, NULL, IDS_SHORT_EXPLORER, _T("%SystemRoot%\explorer.exe"), IDS_CMT_EXPLORER, TRUE); CreateShortcut(CSIDL_PROGRAMS, NULL, IDS_SHORT_DOWNLOADER, _T("%SystemRoot%\system32\downloader.exe"), IDS_CMT_DOWNLOADER, TRUE);
/* Create administrative tools startmenu shortcuts */ - CreateShortcut(CSIDL_COMMON_ADMINTOOLS, NULL, IDS_SHORT_SERVICE, _T("%SystemRoot%\system32\servman.exe"), IDS_CMT_SERVMAN, FALSE); - CreateShortcut(CSIDL_COMMON_ADMINTOOLS, NULL, IDS_SHORT_DEVICE, _T("%SystemRoot%\system32\devmgmt.exe"), IDS_CMT_DEVMGMT, FALSE); + CreateShortcut(CSIDL_COMMON_ADMINTOOLS, NULL, IDS_SHORT_SERVICE, _T("%SystemRoot%\system32\servman.exe"), IDS_CMT_SERVMAN, TRUE); + CreateShortcut(CSIDL_COMMON_ADMINTOOLS, NULL, IDS_SHORT_DEVICE, _T("%SystemRoot%\system32\devmgmt.exe"), IDS_CMT_DEVMGMT, TRUE);
/* Create and fill Accessories subfolder */ if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_ACCESSORIES, szFolder, sizeof(szFolder)/sizeof(szFolder[0]))) { - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CALC, _T("%SystemRoot%\system32\calc.exe"), IDS_CMT_CALC, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CMD, _T("%SystemRoot%\system32\cmd.exe"), IDS_CMT_CMD, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_NOTEPAD, _T("%SystemRoot%\system32\notepad.exe"), IDS_CMT_NOTEPAD, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_WORDPAD, _T("%SystemRoot%\system32\wordpad.exe"), IDS_CMT_WORDPAD, FALSE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CALC, _T("%SystemRoot%\system32\calc.exe"), IDS_CMT_CALC, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CMD, _T("%SystemRoot%\system32\cmd.exe"), IDS_CMT_CMD, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_NOTEPAD, _T("%SystemRoot%\system32\notepad.exe"), IDS_CMT_NOTEPAD, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_WORDPAD, _T("%SystemRoot%\system32\wordpad.exe"), IDS_CMT_WORDPAD, TRUE); CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_SNAP, _T("%SystemRoot%\system32\screenshot.exe"), IDS_CMT_SCREENSHOT, TRUE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_RDESKTOP, _T("%SystemRoot%\system32\mstsc.exe"), IDS_CMT_RDESKTOP, FALSE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_RDESKTOP, _T("%SystemRoot%\system32\mstsc.exe"), IDS_CMT_RDESKTOP, TRUE); }
/* Creacte System Tools subfolder and fill if the exe is available */ if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_SYS_TOOLS, szFolder, sizeof(szFolder)/sizeof(szFolder[0]))) { - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CHARMAP, _T("%SystemRoot%\system32\charmap.exe"), IDS_CMT_CHARMAP, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_KBSWITCH, _T("%SystemRoot%\system32\kbswitch.exe"), IDS_CMT_KBSWITCH, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_REGEDIT, _T("%SystemRoot%\regedit.exe"), IDS_CMT_REGEDIT, FALSE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_CHARMAP, _T("%SystemRoot%\system32\charmap.exe"), IDS_CMT_CHARMAP, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_KBSWITCH, _T("%SystemRoot%\system32\kbswitch.exe"), IDS_CMT_KBSWITCH, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_REGEDIT, _T("%SystemRoot%\regedit.exe"), IDS_CMT_REGEDIT, TRUE); }
/* Creacte Accessibility subfolder and fill if the exe is available */ @@ -778,8 +793,8 @@ /* Create Games subfolder and fill if the exe is available */ if (CreateShortcutFolder(CSIDL_PROGRAMS, IDS_GAMES, szFolder, sizeof(szFolder)/sizeof(szFolder[0]))) { - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_SOLITAIRE, _T("%SystemRoot%\system32\sol.exe"), IDS_CMT_SOLITAIRE, FALSE); - CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_WINEMINE, _T("%SystemRoot%\system32\winemine.exe"), IDS_CMT_WINEMINE, FALSE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_SOLITAIRE, _T("%SystemRoot%\system32\sol.exe"), IDS_CMT_SOLITAIRE, TRUE); + CreateShortcut(CSIDL_PROGRAMS, szFolder, IDS_SHORT_WINEMINE, _T("%SystemRoot%\system32\winemine.exe"), IDS_CMT_WINEMINE, TRUE); }
CoUninitialize();