mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 14:23:18 +00:00
[SYSSETUP]
- Addendum to r66069: also install tcpip on the livecd CORE-9564 CORE-9113 svn path=/trunk/; revision=67324
This commit is contained in:
parent
bbb3753f8b
commit
bbb62e8795
2 changed files with 81 additions and 66 deletions
|
@ -754,6 +754,71 @@ error:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Install a section of a .inf file
|
||||||
|
* Returns TRUE if success, FALSE if failure. Error code can
|
||||||
|
* be retrieved with GetLastError()
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
BOOL
|
||||||
|
InstallInfSection(
|
||||||
|
IN HWND hWnd,
|
||||||
|
IN LPCWSTR InfFile,
|
||||||
|
IN LPCWSTR InfSection OPTIONAL,
|
||||||
|
IN LPCWSTR InfService OPTIONAL)
|
||||||
|
{
|
||||||
|
WCHAR Buffer[MAX_PATH];
|
||||||
|
HINF hInf = INVALID_HANDLE_VALUE;
|
||||||
|
UINT BufferSize;
|
||||||
|
PVOID Context = NULL;
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
|
/* Get Windows directory */
|
||||||
|
BufferSize = MAX_PATH - 5 - wcslen(InfFile);
|
||||||
|
if (GetWindowsDirectoryW(Buffer, BufferSize) > BufferSize)
|
||||||
|
{
|
||||||
|
/* Function failed */
|
||||||
|
SetLastError(ERROR_GEN_FAILURE);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
/* We have enough space to add some information in the buffer */
|
||||||
|
if (Buffer[wcslen(Buffer) - 1] != '\\')
|
||||||
|
wcscat(Buffer, L"\\");
|
||||||
|
wcscat(Buffer, L"Inf\\");
|
||||||
|
wcscat(Buffer, InfFile);
|
||||||
|
|
||||||
|
/* Install specified section */
|
||||||
|
hInf = SetupOpenInfFileW(Buffer, NULL, INF_STYLE_WIN4, NULL);
|
||||||
|
if (hInf == INVALID_HANDLE_VALUE)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
Context = SetupInitDefaultQueueCallback(hWnd);
|
||||||
|
if (Context == NULL)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
ret = TRUE;
|
||||||
|
if (ret && InfSection)
|
||||||
|
{
|
||||||
|
ret = SetupInstallFromInfSectionW(
|
||||||
|
hWnd, hInf,
|
||||||
|
InfSection, SPINST_ALL,
|
||||||
|
NULL, NULL, SP_COPY_NEWER,
|
||||||
|
SetupDefaultQueueCallbackW, Context,
|
||||||
|
NULL, NULL);
|
||||||
|
}
|
||||||
|
if (ret && InfService)
|
||||||
|
{
|
||||||
|
ret = SetupInstallServicesFromInfSectionW(
|
||||||
|
hInf, InfService, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if (Context)
|
||||||
|
SetupTermDefaultQueueCallback(Context);
|
||||||
|
if (hInf != INVALID_HANDLE_VALUE)
|
||||||
|
SetupCloseInfFile(hInf);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
DWORD WINAPI
|
DWORD WINAPI
|
||||||
InstallLiveCD(IN HINSTANCE hInstance)
|
InstallLiveCD(IN HINSTANCE hInstance)
|
||||||
{
|
{
|
||||||
|
@ -761,6 +826,21 @@ InstallLiveCD(IN HINSTANCE hInstance)
|
||||||
PROCESS_INFORMATION ProcessInformation;
|
PROCESS_INFORMATION ProcessInformation;
|
||||||
BOOL bRes;
|
BOOL bRes;
|
||||||
|
|
||||||
|
/* Hack: Install TCP/IP protocol driver */
|
||||||
|
bRes = InstallInfSection(NULL,
|
||||||
|
L"nettcpip.inf",
|
||||||
|
L"MS_TCPIP.PrimaryInstall",
|
||||||
|
L"MS_TCPIP.PrimaryInstall.Services");
|
||||||
|
if (!bRes && GetLastError() != ERROR_FILE_NOT_FOUND)
|
||||||
|
{
|
||||||
|
DPRINT("InstallInfSection() failed with error 0x%lx\n", GetLastError());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Start the TCP/IP protocol driver */
|
||||||
|
SetupStartService(L"Tcpip", FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
if (!CommonInstall())
|
if (!CommonInstall())
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
@ -846,71 +926,6 @@ SetSetupType(DWORD dwSetupType)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Install a section of a .inf file
|
|
||||||
* Returns TRUE if success, FALSE if failure. Error code can
|
|
||||||
* be retrieved with GetLastError()
|
|
||||||
*/
|
|
||||||
static
|
|
||||||
BOOL
|
|
||||||
InstallInfSection(
|
|
||||||
IN HWND hWnd,
|
|
||||||
IN LPCWSTR InfFile,
|
|
||||||
IN LPCWSTR InfSection OPTIONAL,
|
|
||||||
IN LPCWSTR InfService OPTIONAL)
|
|
||||||
{
|
|
||||||
WCHAR Buffer[MAX_PATH];
|
|
||||||
HINF hInf = INVALID_HANDLE_VALUE;
|
|
||||||
UINT BufferSize;
|
|
||||||
PVOID Context = NULL;
|
|
||||||
BOOL ret = FALSE;
|
|
||||||
|
|
||||||
/* Get Windows directory */
|
|
||||||
BufferSize = MAX_PATH - 5 - wcslen(InfFile);
|
|
||||||
if (GetWindowsDirectoryW(Buffer, BufferSize) > BufferSize)
|
|
||||||
{
|
|
||||||
/* Function failed */
|
|
||||||
SetLastError(ERROR_GEN_FAILURE);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
/* We have enough space to add some information in the buffer */
|
|
||||||
if (Buffer[wcslen(Buffer) - 1] != '\\')
|
|
||||||
wcscat(Buffer, L"\\");
|
|
||||||
wcscat(Buffer, L"Inf\\");
|
|
||||||
wcscat(Buffer, InfFile);
|
|
||||||
|
|
||||||
/* Install specified section */
|
|
||||||
hInf = SetupOpenInfFileW(Buffer, NULL, INF_STYLE_WIN4, NULL);
|
|
||||||
if (hInf == INVALID_HANDLE_VALUE)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
Context = SetupInitDefaultQueueCallback(hWnd);
|
|
||||||
if (Context == NULL)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = TRUE;
|
|
||||||
if (ret && InfSection)
|
|
||||||
{
|
|
||||||
ret = SetupInstallFromInfSectionW(
|
|
||||||
hWnd, hInf,
|
|
||||||
InfSection, SPINST_ALL,
|
|
||||||
NULL, NULL, SP_COPY_NEWER,
|
|
||||||
SetupDefaultQueueCallbackW, Context,
|
|
||||||
NULL, NULL);
|
|
||||||
}
|
|
||||||
if (ret && InfService)
|
|
||||||
{
|
|
||||||
ret = SetupInstallServicesFromInfSectionW(
|
|
||||||
hInf, InfService, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
if (Context)
|
|
||||||
SetupTermDefaultQueueCallback(Context);
|
|
||||||
if (hInf != INVALID_HANDLE_VALUE)
|
|
||||||
SetupCloseInfFile(hInf);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static DWORD CALLBACK
|
static DWORD CALLBACK
|
||||||
HotkeyThread(LPVOID Parameter)
|
HotkeyThread(LPVOID Parameter)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1807,7 +1807,7 @@ StartComponentRegistration(HWND hwndDlg, PULONG MaxProgress)
|
||||||
RegistrationData->hwndDlg = hwndDlg;
|
RegistrationData->hwndDlg = hwndDlg;
|
||||||
RegistrationData->DllCount = DllCount;
|
RegistrationData->DllCount = DllCount;
|
||||||
RegistrationThread = CreateThread(NULL, 0, RegistrationProc,
|
RegistrationThread = CreateThread(NULL, 0, RegistrationProc,
|
||||||
(LPVOID) RegistrationData, 0, NULL);
|
RegistrationData, 0, NULL);
|
||||||
if (RegistrationThread != NULL)
|
if (RegistrationThread != NULL)
|
||||||
{
|
{
|
||||||
CloseHandle(RegistrationThread);
|
CloseHandle(RegistrationThread);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue