Exemplo n.º 1
0
        /// <summary>
        /// Extracts the contents of the zip file to the working directory.
        /// </summary>
        public void ExtractToCurrentDirectory()
        {
            for (var index = 0; index < Entries.Length; index++)
            {
                var entry = Entries[index];

                var fileName = Path.Combine(Directory.GetCurrentDirectory(), entry.Name);
                // save file if it is not only a directory
                if (!entry.IsDirectory)
                {
                    Extract(entry.Name, fileName);
                }

                ExtractProgress?.Invoke(this, new FileProgressEventArgs(index + 1, Entries.Length, entry.Name));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Extracts the contents of the zip file to the given directory.
        /// </summary>
        /// <param name="directoryName">Name of the directory.</param>
        public void ExtractToDirectory(string directoryName)
        {
            for (var index = 0; index < Entries.Length; index++)
            {
                var entry = Entries[index];

                // create target directory for the file
                var fileName = Path.Combine(directoryName, entry.Name);
                var dirName  = Path.GetDirectoryName(fileName) ?? "";
                Directory.CreateDirectory(dirName);

                // save file if it is not only a directory
                if (!entry.IsDirectory)
                {
                    Extract(entry.Name, fileName);
                }

                ExtractProgress?.Invoke(this, new FileProgressEventArgs(index + 1, Entries.Length, entry.Name));
            }
        }
Exemplo n.º 3
0
        public void Extract(string selfExtractPath, string folderPathOutput, ExtractExistingFileAction extractExistingFile)
        {
            if (!ioOperation.FileExist(selfExtractPath))
            {
                throw new FileNotFoundException("SelfExtractor Executable path cannot be found");
            }

            if (!ioOperation.DirectoryExist(folderPathOutput))
            {
                throw new FileNotFoundException("The output path does not exist");
            }

            if (!ZipFile.IsZipFile(selfExtractPath))
            {
                throw new System.NotSupportedException("The provided SelfExtractor does not contain anything");
            }

            using (var zipFile = ZipFile.Read(selfExtractPath))
            {
                zipFile.ExtractProgress += (sender, arg) => ExtractProgress?.Invoke(sender, arg);
                zipFile.ExtractAll(folderPathOutput, extractExistingFile);
            }
        }
Exemplo n.º 4
0
        public void ReferenceTemplateImageTemplate(string[] splitWimNames, RefFlags refFlags = RefFlags.None, bool failure = false)
        {
            string[] splitWims = splitWimNames.Select(x => Path.Combine(TestSetup.SampleDir, x)).ToArray();
            string   destDir   = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            try
            {
                Directory.CreateDirectory(destDir);

                bool[] _checked = new bool[5];
                for (int i = 0; i < _checked.Length; i++)
                {
                    _checked[i] = false;
                }
                CallbackStatus ProgressCallback(ProgressMsg msg, object info, object progctx)
                {
                    switch (msg)
                    {
                    case ProgressMsg.ExtractImageBegin:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[0] = true;
                    }
                    break;

                    case ProgressMsg.ExtractImageEnd:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[1] = true;
                    }
                    break;

                    case ProgressMsg.ExtractFileStructure:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[2] = true;
                    }
                    break;

                    case ProgressMsg.ExtractStreams:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[3] = true;
                    }
                    break;

                    case ProgressMsg.ExtractMetadata:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[4] = true;
                    }
                    break;
                    }
                    return(CallbackStatus.Continue);
                }

                try
                {
                    using (Wim wim = Wim.OpenWim(splitWims[0], OpenFlags.None, ProgressCallback))
                    {
                        var leftSplitWims = splitWims.Skip(1);
                        wim.ReferenceResourceFiles(leftSplitWims, refFlags, OpenFlags.None);

                        wim.ExtractImage(1, destDir, ExtractFlags.NoAcls);
                    }
                }
                catch (WimLibException)
                {
                    if (failure)
                    {
                        return;
                    }
                    else
                    {
                        Assert.Fail();
                    }
                }

                Assert.IsTrue(_checked.All(x => x));

                TestHelper.CheckFileSystem(SampleSet.Src03, destDir);
            }
            finally
            {
                if (Directory.Exists(destDir))
                {
                    Directory.Delete(destDir, true);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Extract a node and all of its subnodes and children.
        /// </summary>
        /// <param name="RootPath">Path to which to extract node.</param>
        /// <param name="TextureType">How textures are to be extracted.</param>
        /// <param name="NodeType">Whether to recreate the full root path.</param>
        /// <param name="OnlyTextures">Indicates whether only textures or to be
        /// extracted or all files.</param>
        /// <param name="Callback">Callback function to update the caller that a
        /// leaf is about to be extracted.</param>
        public void Extract(string RootPath, TextureExtractType TextureType,
                            NodeExtractType NodeType, bool OnlyTextures, ExtractProgress Callback)
        {
            // Create the path to extract the nodes.
            string dir_path = RootPath;

            switch (NodeType)
            {
            case NodeExtractType.Relative:
                dir_path += Path.DirectorySeparatorChar + this.Name;
                break;

            case NodeExtractType.FullPath:
                dir_path += Path.DirectorySeparatorChar + this.FullPath;
                break;

            default:
                throw new NotSupportedException("NodeExtractType not supported.");
            }
            DirectoryInfo new_dir = Directory.CreateDirectory(dir_path);

            // Extract all child nodes
            foreach (PiggNode node in this.Subnodes)
            {
                node.Extract(dir_path, TextureType, NodeExtractType.Relative,
                             OnlyTextures, Callback);
            }

            // Extract all files
            foreach (PiggLeaf leaf in this.Leafs)
            {
                if (Callback != null)
                {
                    Callback(leaf);
                }
                int          last      = leaf.PiggReferences.Count - 1;
                PiggLeafInfo leaf_info = leaf.PiggReferences[last];

                if (Path.GetExtension(leaf.Name).ToLower() != ".texture" ||
                    TextureType == TextureExtractType.Texture)
                {
                    // Check to see if we only want textures.
                    if (TextureType == TextureExtractType.Texture || !OnlyTextures)
                    {
                        // Extract the file as-is.
                        FileStream fs = new FileStream(dir_path +
                                                       Path.DirectorySeparatorChar + leaf.Name,
                                                       FileMode.Create, FileAccess.Write, FileShare.Write);
                        if (fs != null)
                        {
                            leaf_info.Extract(fs);
                        }
                        fs.Close();
                    }
                }
                else
                {
                    PiggTexture tex = new PiggTexture(leaf_info);
                    string      ext = "";
                    switch (TextureType)
                    {
                    case TextureExtractType.Bmp:
                        ext += ".bmp";
                        break;

                    case TextureExtractType.Gif:
                        ext += ".gif";
                        break;

                    case TextureExtractType.Jpeg:
                        ext += ".jpg";
                        break;

                    case TextureExtractType.Original:
                        ext += Path.GetExtension(tex.Filename).ToLower();
                        break;

                    case TextureExtractType.Png:
                        ext += ".png";
                        break;

                    case TextureExtractType.Tiff:
                        ext += ".tif";
                        break;

                    default:
                        throw new NotSupportedException();
                    }
                    FileStream fs = new FileStream(dir_path +
                                                   Path.DirectorySeparatorChar +
                                                   Path.GetFileNameWithoutExtension(leaf.Name) + ext,
                                                   FileMode.Create, FileAccess.Write, FileShare.Write);
                    tex.Extract(fs, TextureType);
                    fs.Close();
                }
            }
        }
Exemplo n.º 6
0
 public HtsNotification(ExtractProgress progress)
 {
     Progress = progress;
 }
Exemplo n.º 7
0
 public async Task ShowProgress(ExtractProgress progress)
 {
     await Clients.All.SendAsync("ShowMnchSendProgress", progress);
 }
Exemplo n.º 8
0
        private void OnExtractProgress(string filename, long filelength)
        {
            var args = new ExtractProgressEventArgs(filename, filelength);

            ExtractProgress?.Invoke(this, args);
        }
Exemplo n.º 9
0
        public bool ApplyImage(string wimFile, int imageIndex, string OutputDirectory, IEnumerable <string> referenceWIMs = null, bool PreserveACL = true, IImaging.ProgressCallback progressCallback = null)
        {
            string title = $"Applying {wimFile.Split('\\').Last()} - Index {imageIndex}";

            try
            {
                CallbackStatus ProgressCallback(ProgressMsg msg, object info, object progctx)
                {
                    switch (msg)
                    {
                    case ProgressMsg.ExtractImageBegin:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                    }
                    break;

                    case ProgressMsg.ExtractImageEnd:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                    }
                    break;

                    case ProgressMsg.ExtractFileStructure:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        progressCallback?.Invoke($"Applying file structure ({(int)Math.Round((double)m.CurrentFileCount / m.EndFileCount * 100)}%)", 0, true);
                    }
                    break;

                    case ProgressMsg.ExtractStreams:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        progressCallback?.Invoke(title, (int)Math.Round((double)m.CompletedBytes / m.TotalBytes * 100), false);
                    }
                    break;

                    case ProgressMsg.ExtractMetadata:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        progressCallback?.Invoke($"Applying metadata ({(int)Math.Round((double)m.CompletedBytes / m.TotalBytes * 100)}%)", 0, true);
                    }
                    break;
                    }
                    return(CallbackStatus.Continue);
                }

                using (Wim wim = Wim.OpenWim(wimFile, OpenFlags.None))
                {
                    wim.RegisterCallback(ProgressCallback);
                    if (referenceWIMs != null && referenceWIMs.Count() > 0)
                    {
                        wim.ReferenceResourceFiles(referenceWIMs, RefFlags.None, OpenFlags.None);
                    }
                    wim.ExtractImage(imageIndex, OutputDirectory, PreserveACL ? ExtractFlags.StrictAcls : ExtractFlags.NoAcls);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
            return(true);
        }
Exemplo n.º 10
0
        public void CheckErrorTemplate(string fileName, string[] paths, bool printError)
        {
            string destDir = TestHelper.GetTempDir();

            try
            {
                Directory.CreateDirectory(destDir);

                bool[] _checked = new bool[5];
                for (int i = 0; i < _checked.Length; i++)
                {
                    _checked[i] = false;
                }
                CallbackStatus ProgressCallback(ProgressMsg msg, object info, object progctx)
                {
                    switch (msg)
                    {
                    case ProgressMsg.ExtractTreeBegin:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[0] = true;
                    }
                    break;

                    case ProgressMsg.ExtractTreeEnd:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[1] = true;
                    }
                    break;

                    case ProgressMsg.ExtractFileStructure:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[2] = true;
                    }
                    break;

                    case ProgressMsg.ExtractStreams:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[3] = true;
                    }
                    break;

                    case ProgressMsg.ExtractMetadata:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[4] = true;
                    }
                    break;
                    }
                    return(CallbackStatus.Continue);
                }

                string wimFile = Path.Combine(TestSetup.SampleDir, fileName);
                using (Wim wim = Wim.OpenWim(wimFile, OpenFlags.None))
                {
                    wim.RegisterCallback(ProgressCallback);

                    wim.ExtractPaths(1, destDir, paths, ExtractFlags.GlobPaths);
                }

                // The callback must not have been called
                Assert.IsFalse(_checked.Any(x => x));

                // The files must not exist
                foreach (string path in paths.Select(x => TestHelper.NormalizePath(x.TrimStart('\\'))))
                {
                    if (path.IndexOfAny(new char[] { '*', '?' }) == -1)
                    { // No wlidcard
                        Assert.IsFalse(File.Exists(Path.Combine(destDir, path)));
                    }
                    else
                    { // With wildcard
                        string   destFullPath = Path.Combine(destDir, path);
                        string[] files        = Directory.GetFiles(Path.GetDirectoryName(destFullPath), Path.GetFileName(destFullPath), SearchOption.AllDirectories);
                        Assert.IsFalse(0 < files.Length);
                    }
                }

                // Read error message
                string[]        errorMsgs  = Wim.GetErrors();
                ErrorPrintState printState = Wim.ErrorPrintState;
                if (printError)
                {
                    Assert.IsNotNull(errorMsgs);
                    Assert.AreEqual(ErrorPrintState.PrintOn, printState);
                    Assert.IsTrue(0 < errorMsgs.Length);
                    foreach (string errorMsg in errorMsgs)
                    {
                        Console.WriteLine(errorMsg);
                    }
                }
                else
                {
                    Assert.IsNull(errorMsgs);
                    Assert.AreEqual(ErrorPrintState.PrintOff, printState);
                }
            }
            finally
            {
                if (Directory.Exists(destDir))
                {
                    Directory.Delete(destDir, true);
                }
            }
        }
Exemplo n.º 11
0
        public void ExtractImageTemplate(string wimFileName)
        {
            string wimFile = Path.Combine(TestSetup.SampleDir, wimFileName);
            string destDir = TestHelper.GetTempDir();

            try
            {
                Directory.CreateDirectory(destDir);

                bool[] _checked = new bool[5];
                for (int i = 0; i < _checked.Length; i++)
                {
                    _checked[i] = false;
                }
                CallbackStatus ProgressCallback(ProgressMsg msg, object info, object progctx)
                {
                    switch (msg)
                    {
                    case ProgressMsg.ExtractImageBegin:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        Assert.IsTrue(m.ImageName.Equals("Sample", StringComparison.Ordinal));
                        _checked[0] = true;
                    }
                    break;

                    case ProgressMsg.ExtractImageEnd:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        Assert.IsTrue(m.ImageName.Equals("Sample", StringComparison.Ordinal));
                        _checked[1] = true;
                    }
                    break;

                    case ProgressMsg.ExtractFileStructure:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        Assert.IsTrue(m.ImageName.Equals("Sample", StringComparison.Ordinal));
                        _checked[2] = true;
                    }
                    break;

                    case ProgressMsg.ExtractStreams:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        Assert.IsTrue(m.ImageName.Equals("Sample", StringComparison.Ordinal));
                        _checked[3] = true;
                    }
                    break;

                    case ProgressMsg.ExtractMetadata:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        Assert.IsTrue(m.ImageName.Equals("Sample", StringComparison.Ordinal));
                        _checked[4] = true;
                    }
                    break;
                    }
                    return(CallbackStatus.Continue);
                }

                using (Wim wim = Wim.OpenWim(wimFile, OpenFlags.None))
                {
                    wim.RegisterCallback(ProgressCallback);

                    WimInfo wi = wim.GetWimInfo();
                    Assert.IsTrue(wi.ImageCount == 1);

                    wim.ExtractImage(1, destDir, ExtractFlags.None);
                }

                Assert.IsTrue(_checked.All(x => x));

                TestHelper.CheckFileSystem(SampleSet.Src01, destDir);
            }
            finally
            {
                if (Directory.Exists(destDir))
                {
                    Directory.Delete(destDir, true);
                }
            }
        }
Exemplo n.º 12
0
        public void ExtractListTemplate(string fileName, string[] paths)
        {
            string destDir = TestHelper.GetTempDir();

            try
            {
                Directory.CreateDirectory(destDir);

                bool[] _checked = new bool[5];
                for (int i = 0; i < _checked.Length; i++)
                {
                    _checked[i] = false;
                }
                CallbackStatus ProgressCallback(ProgressMsg msg, object info, object progctx)
                {
                    switch (msg)
                    {
                    case ProgressMsg.ExtractTreeBegin:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[0] = true;
                    }
                    break;

                    case ProgressMsg.ExtractTreeEnd:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[1] = true;
                    }
                    break;

                    case ProgressMsg.ExtractFileStructure:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[2] = true;
                    }
                    break;

                    case ProgressMsg.ExtractStreams:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[3] = true;
                    }
                    break;

                    case ProgressMsg.ExtractMetadata:
                    {
                        ExtractProgress m = (ExtractProgress)info;
                        Assert.IsNotNull(m);

                        _checked[4] = true;
                    }
                    break;
                    }
                    return(CallbackStatus.Continue);
                }

                string listFile = Path.Combine(destDir, "ListFile.txt");
                using (StreamWriter w = new StreamWriter(listFile, false, Encoding.Unicode))
                {
                    foreach (string path in paths)
                    {
                        w.WriteLine(path);
                    }
                }

                string wimFile = Path.Combine(TestSetup.SampleDir, fileName);
                using (Wim wim = Wim.OpenWim(wimFile, OpenFlags.None))
                {
                    wim.RegisterCallback(ProgressCallback);

                    wim.ExtractPathList(1, destDir, listFile, ExtractFlags.GlobPaths);
                }

                Assert.IsTrue(_checked.All(x => x));

                foreach (string path in paths.Select(x => TestHelper.NormalizePath(x.TrimStart('\\'))))
                {
                    if (path.IndexOfAny(new char[] { '*', '?' }) == -1)
                    { // No wlidcard
                        Assert.IsTrue(File.Exists(Path.Combine(destDir, path)));
                    }
                    else
                    { // With wildcard
                        string   destFullPath = Path.Combine(destDir, path);
                        string[] files        = Directory.GetFiles(Path.GetDirectoryName(destFullPath), Path.GetFileName(destFullPath), SearchOption.AllDirectories);
                        Assert.IsTrue(0 < files.Length);
                    }
                }
            }
            finally
            {
                if (Directory.Exists(destDir))
                {
                    Directory.Delete(destDir, true);
                }
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Convert a input file into a output file with a user specified format.
        /// </summary>
        /// </summary>
        /// <param name="inFile"></param>
        /// <param name="fileIdx"></param>
        public void ConvertFile(string inFile, int fileIdx)
        {
            LogList.Clear();
            ExtractProgress.Reset();

            // check whether MsFileReaderLib is installed if the input file is a RAW file;
            if (inFile.ToLower().EndsWith(".raw"))
            {
                //if (!Utils.verifyProgramInstalled())
                //{
                //    Console.WriteLine("\nERROR: Not found the necessary program to read RAW files ! Please verify that the program is installed in your computer.\n");
                //    LogList.Add("ERROR: Not found the necessary program to read Raw files ! Please verify that the program is installed in your computer.\n");
                //    errorFiles = true;
                //    return;
                //}
            }

            int totalFileNum = inputFiles.Count;

            CurrentFileLabel = "File " + (fileIdx + 1) + " / " + totalFileNum;
            Console.WriteLine(" Starting to convert file " + (fileIdx + 1) + " / " + totalFileNum + "...");
            LogList.Add(" Starting to convert file " + (fileIdx + 1) + " / " + totalFileNum + "...");

            if (inFile.EndsWith(".ms2", true, curCultInfo) && mgfConverter)
            {
                Console.WriteLine(" Parsing MS2 file: " + inFile + " . . . ");
                LogList.Add(" Parsing MS2 file: " + inFile + " . . . ");
                MS2Converter mc = new MS2Converter(inFile, OutFileFolder, outFileTypes, correctPrecMz);
                mc.SetOptions(MzDecimalPlace, IntensityDecimalPlace);
                mc.Convert(ExtractProgress);
                mc.Close();
            }
            else if (inFile.EndsWith(".mgf", true, curCultInfo) && ms2Converter)
            {
                Console.WriteLine(" Parsing MGF file: " + inFile + " . . . ");
                LogList.Add(" Parsing MGF file: " + inFile + " . . . ");
                MgfConverter mc = new MgfConverter(inFile, OutFileFolder, outFileTypes[0]);
                mc.SetOptions(MzDecimalPlace, IntensityDecimalPlace, DDADataChargeStates);
                mc.Convert(ExtractProgress);
                LogList.Add(" Conversion finished");
            }
            else if (inFile.EndsWith(".raw", true, curCultInfo))
            {
                Console.WriteLine(" Parsing RAW file: " + inFile + " . . . ");
                LogList.Add(" Parsing RAW file: " + inFile + " . . . ");
                ByPassThermoAlgorithm = true;
                RawFileConverter rc = new RawFileConverter(inFile, OutFileFolder, outFileTypes, ExpType, exportChargeState);
                rc.SetOptions(isCentroided, MzDecimalPlace, IntensityDecimalPlace, ExtractPrecursorByMz, ByPassThermoAlgorithm,
                              correctPrecMz, correctPrecZ, predictPrecursors, DDADataChargeStates, Ms2PrecZ,
                              showPeakChargeStates, showPeakResolution, exportChargeState);
                rc.Convert(ExtractProgress);
                rc.Close();
            }
            else if (inFile.EndsWith(".mzxml", true, curCultInfo))
            {
                Console.WriteLine(" Parsing mzXML file: " + inFile + " . . . ");
                LogList.Add(" Parsing mzXML file: " + inFile + " . . . ");

                MzXMLConverter mc = new MzXMLConverter(inFile, OutFileFolder, outFileTypes, ExpType);
                mc.SetOptions(MzDecimalPlace, IntensityDecimalPlace);
                mc.Convert(ExtractProgress);
                mc.Close();
            }
            else if (inFile.EndsWith(".mzml", true, curCultInfo))
            {
                Console.WriteLine(" Parsing mzML file: " + inFile + " . . . ");
                LogList.Add(" Parsing mzML file: " + inFile + " . . . ");

                MzMLConverter mc = new MzMLConverter(inFile, OutFileFolder, outFileTypes);
                mc.SetOptions(MzDecimalPlace, IntensityDecimalPlace, correctPrecMz);
                mc.Convert(ExtractProgress);
                mc.Close();
            }
            //ExtractProgress.CurrentProgress = 100;
            LogList.Add("  \n");
        }
Exemplo n.º 14
0
 public MnchNotification(ExtractProgress progress)
 {
     Progress = progress;
 }