public InstallReactOSWorker ExtractingFiles() { if (Edition.Edition != ROSInstallEdition.ROSEdition.Setup) { return(null); } var ReactosCabPath = Path.Combine(Edition.SystemPath, "reactos", "reactos.cab"); CabInfo archive = new CabInfo(ReactosCabPath); for (int i = 0; i < FileList.Count; i++) { var file = FileList[i]; this.Check(); Program.MainWnd.SetStatus($"Extracting {file.Local.Name} ({i + 1}/{FileList.Count})"); Program.MainWnd.SetProgressFromValues(i, FileList.Count); if (file.Local.Exists) { file.Local.Delete(); } archive.UnpackFile(file.InCab, file.Local.FullName); } return(null); }
public void UseMultiprocessorHal() { if (m_multiprocessorHalEnabled) { return; } if (m_installation.ArchitectureIdentifier != "x86") { // amd64 and presumably ia64 use a single HAL for both uni and multiprocessor kernel) return; } Console.WriteLine(); Console.WriteLine("By default, text-mode setup will use a multiprocessor OS kernel"); Console.WriteLine("with a uniprocessor HAL. This configuration cannot support network adapters"); Console.WriteLine("(setup will hang)."); Console.WriteLine("IntegrateDrv will try to enable multiprocessor HAL:"); if (m_installation.IsTargetContainsTemporaryInstallation) { if (System.IO.File.Exists(m_installation.BootDirectory + "halmacpi.dl_")) { m_installation.TextSetupInf.UseMultiprocessorHal(); m_multiprocessorHalEnabled = true; Console.WriteLine("Multiprocessor HAL has been enabled."); return; } else if (System.IO.File.Exists(m_installation.SetupDirectory + "halmacpi.dl_")) { ProgramUtils.CopyCriticalFile(m_installation.SetupDirectory + "halmacpi.dl_", m_installation.BootDirectory + "halmacpi.dl_"); m_installation.TextSetupInf.UseMultiprocessorHal(); Console.WriteLine("halmacpi.dl_ was copied from local source directory."); m_multiprocessorHalEnabled = true; Console.WriteLine("Multiprocessor HAL has been enabled."); } else { int index; for (index = 3; index >= 1; index--) { string spFilename = string.Format("sp{0}.cab", index); if (File.Exists(m_installation.SetupDirectory + spFilename)) { CabInfo cabInfo = new CabInfo(m_installation.SetupDirectory + spFilename); if (cabInfo.GetFile("halmacpi.dll") != null) { cabInfo.UnpackFile("halmacpi.dll", m_installation.BootDirectory + "halmacpi.dll"); // setup is expecting a packed "halmacpi.dl_" //cabInfo = new CabInfo(m_installation.BootDirectory + "halmacpi.dl_"); //Dictionary<string, string> files = new Dictionary<string, string>(); //files.Add("halmacpi.dll", "halmacpi.dll"); //cabInfo.PackFileSet(m_installation.BootDirectory, files); Console.WriteLine("halmacpi.dl_ was extracted from local source directory."); m_installation.TextSetupInf.UseMultiprocessorHal(); m_multiprocessorHalEnabled = true; Console.WriteLine("Multiprocessor HAL has been enabled."); } break; } } if (index == 0) { Console.WriteLine("Warning: could not locate halmacpi.dll, multiprocessor HAL has not been enabled!"); } } } else // integration to installation media { m_installation.TextSetupInf.UseMultiprocessorHal(); m_installation.DosNetInf.InstructSetupToCopyFileFromSetupDirectoryToBootDirectory("halmacpi.dl_"); m_multiprocessorHalEnabled = true; Console.WriteLine("Multiprocessor HAL has been enabled."); return; } }