Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

81 lines
1.9 KiB

// setup.cpp : Defines the entry point for the console application.
//
#include "Windows.h"
#include "Tchar.h"
//int main(int argc, char* argv[])
#ifdef UNICODE
extern "C" int __cdecl
wmain(
#else
int __cdecl
main(
#endif
int argc,
TCHAR *argv[])
{
STARTUPINFO structStartInfo;
PROCESS_INFORMATION structProcInfo;
BOOL bRet = FALSE;
DWORD dwLastRet = 0L;
TCHAR szMsiexecPath[MAX_PATH+1] = _T("");
LPCTSTR lpszSystem32Path = NULL;
do
{
ZeroMemory( (void*)&structStartInfo, sizeof( STARTUPINFO ) );
ZeroMemory( (void*)&structProcInfo, sizeof( PROCESS_INFORMATION ) );
structStartInfo.cb = sizeof( STARTUPINFO );
structStartInfo.cbReserved2 = 0L;
structStartInfo.dwFillAttribute = 0L; //GUI App.
structStartInfo.dwFlags = STARTF_USESHOWWINDOW;
structStartInfo.dwX = 0L;
structStartInfo.dwXCountChars = 0L;
structStartInfo.dwXSize = 0L;
structStartInfo.dwY = 0L;
structStartInfo.dwYCountChars = 0L;
structStartInfo.dwYSize = 0L;
structStartInfo.hStdError = NULL;
structStartInfo.hStdInput = NULL;
structStartInfo.hStdOutput = NULL;
structStartInfo.lpDesktop = NULL;
structStartInfo.lpReserved = NULL;
structStartInfo.lpReserved2 = NULL;
structStartInfo.lpTitle = NULL;
structStartInfo.wShowWindow = SW_NORMAL;
lpszSystem32Path = _tgetenv( _T("WINDIR") );
_tcscpy( szMsiexecPath, lpszSystem32Path );
_tcscat( szMsiexecPath, _T("\\system32\\msiexec.exe") );
bRet = CreateProcess(
szMsiexecPath,
_T(" /i suptools.msi"),
NULL,
NULL,
FALSE,
DETACHED_PROCESS,
NULL,
NULL,
&structStartInfo,
&structProcInfo
);
if( FALSE == bRet ) {
dwLastRet = GetLastError();
break;
}
dwLastRet = 0L;
}
while( FALSE );
if( dwLastRet != 0L ) { MessageBox( NULL, _T("Error starting the MSI file"), _T("Error"), MB_OK | MB_ICONERROR ); }
return 0;
}