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();