/************************************************************************************************************** * Extract ISO 9660 *************************************************************************************************************/ private void ExtractDirectoryISO9660(DiscDirectoryInfo Dinfo, string RootPath, string PathinISO) { try { if (!string.IsNullOrWhiteSpace(PathinISO)) { PathinISO += "\\" + Dinfo.Name; } RootPath += "\\" + Dinfo.Name; AppendDirectoryISO9660(RootPath); foreach (DiscDirectoryInfo dinfo in Dinfo.GetDirectories()) { ExtractDirectoryISO9660(dinfo, RootPath, PathinISO); } foreach (DiscFileInfo finfo in Dinfo.GetFiles()) { using (Stream FileStr = finfo.OpenRead()) { using (FileStream Fs = File.Create(RootPath + "\\" + finfo.Name)) // Here you can Set the BufferSize Also e.g. File.Create(RootPath + "\\" + finfo.Name, 4 * 1024) { FileStr.CopyTo(Fs, 4 * 1024); // Buffer Size is 4 * 1024 but you can modify it in your code as per your need } } } } catch (Exception oEx) { BootmanLog.LogError(LogTextBox, "Error Extracting ISO: " + oEx.Message); } }
/************************************************************************************************************** * Extract ISO 9660 *************************************************************************************************************/ public bool CreateISO9660(string in_sISOPathAndFilename , string in_sISORootSourceRootDir) { try { CDBuilder oISOBuilder = new CDBuilder(); oISOBuilder.UseJoliet = true; oISOBuilder.VolumeIdentifier = "A_SAMPLE_DISK"; string sISOPathAndFilename = in_sISOPathAndFilename; // Add Files to ISO bool bResultAddFiles = AddFilesToISO9660(in_sISORootSourceRootDir , "" , oISOBuilder , false); if (bResultAddFiles) { // Build the ISO oISOBuilder.Build(sISOPathAndFilename); return(true); } else { return(false); } } catch (Exception oEx) { BootmanLog.LogError(LogTextBox, "Error Extracting ISO: " + oEx.Message); return(false); } }
public bool CreateDiskPartWorkFile(string in_sUsbDriveLetter , int in_iDriveNumber , string in_sWorkAreaPath ) { try { // Create directory string sDiskPartWorkFile = Path.Combine(in_sWorkAreaPath, "DiskPartWorkFile.txt"); using (System.IO.FileStream oFileStream = System.IO.File.Create(sDiskPartWorkFile)) { StreamWriter oStreamWriter = new StreamWriter(oFileStream); //select disk oStreamWriter.WriteLine("select disk " + in_iDriveNumber); oStreamWriter.WriteLine(""); //clean oStreamWriter.WriteLine("clean"); oStreamWriter.WriteLine(""); //create partition primary oStreamWriter.WriteLine("create part pri"); oStreamWriter.WriteLine(""); //select partition oStreamWriter.WriteLine("select part 1"); oStreamWriter.WriteLine(""); //format oStreamWriter.WriteLine("format fs=ntfs quick"); oStreamWriter.WriteLine(""); //make active oStreamWriter.WriteLine("active"); oStreamWriter.WriteLine(""); //assign oStreamWriter.WriteLine("assign letter=" + in_sUsbDriveLetter); oStreamWriter.WriteLine(""); oStreamWriter.Dispose(); } return(true); } catch (Exception oEx) { BootmanLog.LogError(LogTextBox, "Error: " + oEx.Message); return(false); } }
/************************************************************************************************************** * ISO Extract *************************************************************************************************************/ public bool ExtractISO(string in_sIsoPathAndFileName , string in_sIsoExtractionRootDir , bool in_bCreateSubdirectory) { try { using (FileStream ISOStream = File.Open(in_sIsoPathAndFileName, FileMode.Open)) { DiscUtils.FileSystemManager oMgr = new FileSystemManager(); DiscUtils.FileSystemInfo[] oFileInfoItems = oMgr.DetectFileSystems(ISOStream); bool bIsUDF = false; foreach (DiscUtils.FileSystemInfo oInfo in oFileInfoItems) { string sDesc = oInfo.Description; if (sDesc == "OSTA Universal Disk Format (UDF)") { bIsUDF = true; } } string sIsoExtractionPath = ""; if (in_bCreateSubdirectory) { // Extract to subdirectory on drive sIsoExtractionPath = Path.Combine(in_sIsoExtractionRootDir, Path.GetFileNameWithoutExtension(in_sIsoPathAndFileName)); } else { // Extract to ISO Extraction Root directory sIsoExtractionPath = in_sIsoExtractionRootDir; } if (bIsUDF) { BootmanLog.LogError(LogTextBox, "Processing ISO Extract as ISO-UDF"); UdfReader oUDFReader = new UdfReader(ISOStream); ExtractDirectoryISOUDF(oUDFReader.Root , sIsoExtractionPath , ""); oUDFReader.Dispose(); return(true); } else { BootmanLog.LogError(LogTextBox, "Processing ISO Extract as ISO-9660"); CDReader oISO9660Reader = new CDReader(ISOStream, true, true); ExtractDirectoryISO9660(oISO9660Reader.Root , sIsoExtractionPath , ""); oISO9660Reader.Dispose(); return(true); } } } catch (Exception oEx) { BootmanLog.LogError(LogTextBox, "Error Extracting ISO: " + oEx.Message); return(false); } }
private bool AddFilesToISO9660(string in_sDirectoryRead , string in_sDirectoryISO , CDBuilder in_oISOBuilder , bool in_bCreateISOSubDirectory) { try { string sDirectoryISO = in_sDirectoryISO.Trim(); if (System.IO.Directory.Exists(in_sDirectoryRead)) { // Create new ISO Subdirectory if (in_bCreateISOSubDirectory) { in_oISOBuilder.AddDirectory(sDirectoryISO); } System.IO.DirectoryInfo oDirInfo = new DirectoryInfo(in_sDirectoryRead); // Copy the files and overwrite destination files if they already exist. foreach (FileInfo oFileInfo in oDirInfo.GetFiles()) { // Add File to ISO try { if (Properties.Settings.Default.DebugOn) { BootmanLog.LogError(LogTextBox , "ISO Create Add: >> " + sDirectoryISO + "\\" + oFileInfo.Name); } in_oISOBuilder.AddFile(sDirectoryISO + "\\" + oFileInfo.Name , oFileInfo.FullName); } catch (Exception oEx) { BootmanLog.LogError(LogTextBox , "Error: " + oEx.Message); throw new Exception("Rethrow - " + oEx.Message); } } foreach (DirectoryInfo oSubDirInfo in oDirInfo.GetDirectories()) { string sNewDirRead = oSubDirInfo.FullName; string sNewDirISO = ""; if (sDirectoryISO.Length > 0) { sNewDirISO = sDirectoryISO + "\\" + oSubDirInfo.Name; } else { sNewDirISO = oSubDirInfo.Name; } // Recursive call bool bRecusiveCallResult = AddFilesToISO9660(sNewDirRead , sNewDirISO , in_oISOBuilder , true); if (!bRecusiveCallResult) { return(false); } } return(true); } else { Console.WriteLine("Source path does not exist!"); return(false); } } catch (Exception oEx) { BootmanLog.LogError(LogTextBox , "Error: " + oEx.Message); return(false); } }