Leaked source code of windows server 2003
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.

254 lines
8.6 KiB

  1. /****************************************************************************
  2. Copyright (c) Microsoft Corporation 1998
  3. All rights reserved
  4. File: SETUP.CPP
  5. ***************************************************************************/
  6. #include "pch.h"
  7. #include "utils.h"
  8. #include "logging.h"
  9. #include "errorlog.h"
  10. #include "tasks.h"
  11. DEFINE_MODULE("RIPREP")
  12. //
  13. // EndProcess( )
  14. //
  15. HRESULT
  16. EndProcess(
  17. HWND hDlg )
  18. {
  19. TraceFunc( "EndProcess( )\n" );
  20. HRESULT hr = S_OK;
  21. WCHAR szSrcPath[ MAX_PATH ];
  22. WCHAR szDestPath[ MAX_PATH ];
  23. WCHAR szMajor[ 10 ];
  24. WCHAR szMinor[ 10 ];
  25. WCHAR szBuild[ 10 ];
  26. BOOL b;
  27. DWORD dw;
  28. _snwprintf( szDestPath,
  29. ARRAYSIZE(szDestPath),
  30. L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates",
  31. g_ServerName,
  32. g_Language,
  33. REMOTE_INSTALL_IMAGE_DIR_W,
  34. g_MirrorDir,
  35. g_Architecture );
  36. TERMINATE_BUFFER(szDestPath);
  37. CreateDirectory( szDestPath, NULL );
  38. _snwprintf( szSrcPath, ARRAYSIZE(szSrcPath), L"%s\\templates\\startrom.com", g_ImageName );
  39. TERMINATE_BUFFER(szSrcPath);
  40. _snwprintf( szDestPath,
  41. ARRAYSIZE(szDestPath),
  42. L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\startrom.com",
  43. g_ServerName,
  44. g_Language,
  45. REMOTE_INSTALL_IMAGE_DIR_W,
  46. g_MirrorDir,
  47. g_Architecture );
  48. TERMINATE_BUFFER(szDestPath);
  49. b = CopyFile( szSrcPath, szDestPath, FALSE );
  50. if ( !b )
  51. {
  52. LBITEMDATA item;
  53. // Error will be logged in TASKS.CPP
  54. item.fSeen = FALSE;
  55. item.pszText = L"STARTROM.COM";
  56. item.uState = GetLastError( );
  57. item.todo = RebootSystem;
  58. SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item );
  59. }
  60. _snwprintf( szSrcPath, ARRAYSIZE(szSrcPath), L"%s\\templates\\ntdetect.com", g_ImageName );
  61. TERMINATE_BUFFER(szSrcPath);
  62. _snwprintf( szDestPath,
  63. ARRAYSIZE(szDestPath),
  64. L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\ntdetect.com",
  65. g_ServerName,
  66. g_Language,
  67. REMOTE_INSTALL_IMAGE_DIR_W,
  68. g_MirrorDir,
  69. g_Architecture );
  70. TERMINATE_BUFFER(szDestPath);
  71. b = CopyFile( szSrcPath, szDestPath, FALSE );
  72. if ( !b )
  73. {
  74. LBITEMDATA item;
  75. // Error will be logged in TASKS.CPP
  76. item.fSeen = FALSE;
  77. item.pszText = L"NTDETECT.COM";
  78. item.uState = GetLastError( );
  79. item.todo = RebootSystem;
  80. SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item );
  81. }
  82. _snwprintf( szSrcPath, ARRAYSIZE(szSrcPath), L"%s\\templates\\ntldr", g_ImageName );
  83. TERMINATE_BUFFER(szSrcPath);
  84. _snwprintf( szDestPath,
  85. ARRAYSIZE(szDestPath),
  86. L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\ntldr",
  87. g_ServerName,
  88. g_Language,
  89. REMOTE_INSTALL_IMAGE_DIR_W,
  90. g_MirrorDir,
  91. g_Architecture );
  92. TERMINATE_BUFFER(szDestPath);
  93. b = CopyFile( szSrcPath, szDestPath, FALSE );
  94. if ( !b )
  95. {
  96. LBITEMDATA item;
  97. // Error will be logged in TASKS.CPP
  98. item.fSeen = FALSE;
  99. item.pszText = L"NTLDR";
  100. item.uState = GetLastError( );
  101. item.todo = RebootSystem;
  102. SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item );
  103. }
  104. wsprintf( szMajor, L"%u", OsVersion.dwMajorVersion );
  105. wsprintf( szMinor, L"%u", OsVersion.dwMinorVersion );
  106. wsprintf( szBuild, L"%u", OsVersion.dwBuildNumber );
  107. //
  108. // Need to add "Quotes" around the text
  109. //
  110. WCHAR szDescription[ REMOTE_INSTALL_MAX_DESCRIPTION_CHAR_COUNT + 2 ];
  111. WCHAR szHelpText[ REMOTE_INSTALL_MAX_HELPTEXT_CHAR_COUNT + 2 ];
  112. WCHAR szOSVersion[ 30 ];
  113. WCHAR szSystemRoot[ MAX_PATH ];
  114. _snwprintf( szDescription, ARRAYSIZE(szDescription), L"\"%s\"", g_Description );
  115. TERMINATE_BUFFER(szDescription);
  116. _snwprintf( szHelpText, ARRAYSIZE(szHelpText), L"\"%s\"", g_HelpText );
  117. TERMINATE_BUFFER(szHelpText);
  118. _snwprintf( szOSVersion, ARRAYSIZE(szOSVersion), L"\"%s.%s (%s)\"", szMajor, szMinor, szBuild );
  119. TERMINATE_BUFFER(szOSVersion);
  120. _snwprintf( szSystemRoot, ARRAYSIZE(szSystemRoot), L"\"%s\"", g_SystemRoot );
  121. TERMINATE_BUFFER(szSystemRoot);
  122. _snwprintf( szDestPath,
  123. ARRAYSIZE(szDestPath),
  124. L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\riprep.sif",
  125. g_ServerName,
  126. g_Language,
  127. REMOTE_INSTALL_IMAGE_DIR_W,
  128. g_MirrorDir,
  129. g_Architecture );
  130. TERMINATE_BUFFER(szDestPath);
  131. _snwprintf( szSrcPath, ARRAYSIZE(szSrcPath), L"%s\\ristndrd.sif", g_ImageName );
  132. TERMINATE_BUFFER(szSrcPath);
  133. b = CopyFile( szSrcPath, szDestPath, FALSE );
  134. if ( !b )
  135. {
  136. LBITEMDATA item;
  137. // Error will be logged in TASKS.CPP
  138. item.fSeen = FALSE;
  139. item.pszText = L"RISTNDRD.SIF";
  140. item.uState = GetLastError( );
  141. item.todo = RebootSystem;
  142. SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item );
  143. }
  144. WritePrivateProfileString( L"OSChooser",
  145. L"Description",
  146. szDescription,
  147. szDestPath );
  148. WritePrivateProfileString( L"OSChooser",
  149. L"Help",
  150. szHelpText,
  151. szDestPath );
  152. WritePrivateProfileString( L"OSChooser",
  153. L"ImageType",
  154. L"SYSPREP",
  155. szDestPath );
  156. WritePrivateProfileString( L"OSChooser",
  157. L"Version",
  158. szOSVersion,
  159. szDestPath );
  160. WritePrivateProfileString( L"OSChooser",
  161. L"SysPrepSystemRoot",
  162. szSystemRoot,
  163. szDestPath );
  164. WritePrivateProfileString( L"SetupData",
  165. L"SysPrepDevice",
  166. L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%SYSPREPPATH%\"",
  167. szDestPath );
  168. WritePrivateProfileString( L"SetupData",
  169. L"SysPrepDriversDevice",
  170. L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%SYSPREPDRIVERS%\"",
  171. szDestPath );
  172. WritePrivateProfileString( L"OSChooser",
  173. L"LaunchFile",
  174. L"\"%INSTALLPATH%\\%MACHINETYPE%\\templates\\startrom.com\"",
  175. szDestPath );
  176. // WritePrivateProfileString( L"SetupData",
  177. // L"OsLoadOptions",
  178. // L"\"/noguiboot /fastdetect\"",
  179. // szDestPath );
  180. WritePrivateProfileString( L"SetupData",
  181. L"SetupSourceDevice",
  182. L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%INSTALLPATH%\"",
  183. szDestPath );
  184. WritePrivateProfileString( L"UserData",
  185. L"ComputerName",
  186. L"\"%MACHINENAME%\"",
  187. szDestPath );
  188. WritePrivateProfileString( L"OSChooser",
  189. L"HalName",
  190. g_HalName,
  191. szDestPath );
  192. WritePrivateProfileString( L"OSChooser",
  193. L"ProductType",
  194. g_ProductId,
  195. szDestPath );
  196. // End the log
  197. dw = LoadString( g_hinstance, IDS_END_LOG, szSrcPath, ARRAYSIZE( szSrcPath ));
  198. Assert( dw );
  199. LogMsg( szSrcPath );
  200. // Display any errors recorded in the log
  201. if ( g_fErrorOccurred )
  202. {
  203. HINSTANCE hRichedDLL;
  204. // Make sure the RichEdit control has been initialized.
  205. // Simply LoadLibbing it does this for us.
  206. hRichedDLL = LoadLibrary( L"RICHED32.DLL" );
  207. if ( hRichedDLL != NULL )
  208. {
  209. DialogBox( g_hinstance, MAKEINTRESOURCE( IDD_VIEWERRORS ), hDlg, ErrorsDlgProc );
  210. FreeLibrary (hRichedDLL);
  211. }
  212. }
  213. RETURN(hr);
  214. }