[INF][BOOTDATA][SETUPAPI] Use Inf instead of Cmd.exe to register IExplore (#7171)

This moves the IExplore registration from cmd.exe (established in 4a4060ce3c (r52196) for CORE-1370) to syssetup.inf to avoid console popups on first boot.
This commit is contained in:
Whindmar Saksit 2024-07-24 22:55:29 +02:00 committed by GitHub
parent 7f021debdc
commit a8b33400a2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 7 deletions

View file

@ -457,9 +457,7 @@ HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions",,0x00000012
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad",,0x00000012
; FIXME - Setup doesn't handle extra paths
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","",0x00000000,"cmd /c md ""%programfiles%\Internet Explorer\"" && move %windir%\iexplore.exe ""%programfiles%\Internet Explorer\"" && ""%programfiles%\Internet Explorer\iexplore.exe"" /RegServer"
; Create .NET Framework InstallRoot key, reg_sz & full path
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","InstallRoot.NET",0x00000000,"cmd /c reg add HKLM\SOFTWARE\Microsoft\.NETFramework /v InstallRoot /t REG_SZ /d %SystemRoot%\Microsoft.NET\Framework\"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\Finalize","1",,"||rundll32.exe setupapi.dll,InstallHinfSection Finalize 128 %systemroot%\inf\syssetup.inf"
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu",,0x00000012

View file

@ -533,9 +533,7 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
HMODULE module;
HRESULT res;
SP_REGISTER_CONTROL_STATUSW status;
#ifdef __WINESRC__
IMAGE_NT_HEADERS *nt;
#endif
status.cbSize = sizeof(status);
status.FileName = path;
@ -565,7 +563,6 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
goto done;
}
#ifdef __WINESRC__
if ((nt = RtlImageNtHeader( module )) && !(nt->FileHeader.Characteristics & IMAGE_FILE_DLL))
{
/* file is an executable, not a dll */
@ -604,7 +601,6 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
CloseHandle( info.hProcess );
goto done;
}
#endif // __WINESRC__
if (flags & FLG_REGSVR_DLLREGISTER)
{
@ -697,7 +693,12 @@ static BOOL register_dlls_callback( HINF hinf, PCWSTR field, void *arg )
if (!SetupGetIntField( &context, 4, &flags )) flags = 0;
/* get timeout */
#ifdef __REACTOS__
/* "11,,cmd.exe,,,/K dir" means default timeout, not a timeout of zero */
if (!SetupGetIntField( &context, 5, &timeout ) || timeout == 0) timeout = 60;
#else
if (!SetupGetIntField( &context, 5, &timeout )) timeout = 60;
#endif
/* get command line */
args = NULL;

View file

@ -144,3 +144,19 @@ Control="System\CurrentControlSet\Control"
[Classes]
HKLM,%CurrentVersion%\Installer,"InstallerLocation",,"%11%"
HKLM,Software\Microsoft\.NETFramework,InstallRoot,,"%10%\Microsoft.NET\Framework\"
[DestinationDirs]
IECopy=16422,Internet Explorer
[Finalize] ; Executed by RunOnceEx on first normal boot
; FIXME: This should be moved to ie.inf,DefaultInstall and executed by [Infs.Always]
CopyFiles=IECopy
RegisterDlls=IEReg
[IECopy]
iexplore.exe,..\iexplore.exe,,0x00002000
[IEReg]
16422,Internet Explorer,iexplore.exe
11,,rundll32.exe,,,"advpack.dll,DelNodeRunDLL32 ""%10%\iexplore.exe"""