Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }