Beispiel #1
0
        /// <summary>
        /// Unpacking file
        /// </summary>
        /// <param name="Res">PackResource </param>
        public bool UnpackFile(PackResource Res)
        {
            Console.WriteLine("Unpack");

            String InternalName          = Res.GetName();
            CommonSaveFileDialog dSaveAs = new CommonSaveFileDialog();

            dSaveAs.DefaultFileName = Path.GetFileName(InternalName);
            if (dSaveAs.ShowDialog() == CommonFileDialogResult.Ok)
            {
                if (!isCLI)
                {
                    this.pd.ShowDialog(ProgressDialog.PROGDLG.Normal);
                    this.pd.Caption = Properties.Resources.Str_Unpack;
                }
                try
                {
                    // loading file content.
                    byte[] buffer = new byte[Res.GetSize()];
                    Res.GetData(buffer);
                    Res.Close();
                    // Delete old
                    if (File.Exists(dSaveAs.FileName))
                    {
                        File.Delete(dSaveAs.FileName);
                    }
                    // Write to file.
                    FileStream fs = new FileStream(dSaveAs.FileName, System.IO.FileMode.Create);
                    fs.Write(buffer, 0, buffer.Length);
                    fs.Close();
                    // Modify File time
                    File.SetCreationTime(dSaveAs.FileName, Res.GetCreated());
                    File.SetLastAccessTime(dSaveAs.FileName, Res.GetAccessed());
                    File.SetLastWriteTime(dSaveAs.FileName, Res.GetModified());
                }
                catch (Exception)
                {
                    return(false);
                }
                finally
                {
                    Res.Close();
                    this.pd.CloseDialog();
                    Console.WriteLine("Finish.");
                }
                return(true);
            }
            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Unpacking Package file process.
        /// </summary>
        /// <param name="InputFile">Set filename of unpack file..</param>
        /// <param name="OutputDir">Set output distnation of Unpacked files.</param>
        public void Unpack(string InputFile, string OutputDir)
        {
            if (!isCLI)
            {
                this.pd.Caption = Properties.Resources.Str_Unpack;
                this.pd.ShowDialog(ProgressDialog.PROGDLG.Normal);
            }
            Console.WriteLine("Unpack");

            m_Unpack = PackResourceSet.CreateFromFile(InputFile);

            uint packed_files = m_Unpack.GetFileCount();

            if (!isCLI)
            {
                pd.Maximum = packed_files;
                if (this.pd.HasUserCancelled)
                {
                    m_Unpack.Dispose();
                    this.pd.CloseDialog();
                    return;
                }
            }
            for (uint i = 0; i < packed_files; ++i)
            {
                PackResource Res          = m_Unpack.GetFileByIndex(i);
                String       InternalName = Res.GetName();
                if (!isCLI)
                {
                    this.pd.Message = String.Format(Properties.Resources.Str_Unpacking, i, packed_files);
                    this.pd.Detail  = "data\\" + InternalName;
                    this.pd.Value   = i;
                    if (pd.HasUserCancelled)
                    {
                        m_Unpack.Dispose();
                        Interrupt();
                        return;
                    }
                }
                Console.WriteLine(String.Format("{0}/{1} {2}", i, packed_files, InternalName));
                // loading file content.
                byte[] buffer = new byte[Res.GetSize()];
                Res.GetData(buffer);
                Res.Close();
                // Get output Directory Name
                String outputPath = @OutputDir + "\\data\\" + InternalName;
                // Create directory
                String DirPath = Regex.Replace(outputPath, @"([^\\]*?)$", "");
                if (!Directory.Exists(DirPath))
                {
                    Directory.CreateDirectory(DirPath);
                }
                // Delete old
                if (File.Exists(outputPath))
                {
                    //DateTime dtUpdate = System.IO.File.GetLastWriteTime(outputPath);
                    //if (dtUpdate > Res.GetModified()){
                    File.Delete(@outputPath);
                    //}else{
                    //Todo Overwrite confirm dialog
                    //}
                }
                if (Directory.Exists(outputPath))
                {
                    Directory.Delete(@outputPath);
                }
                // Write to file.
                FileStream fs = new FileStream(outputPath, System.IO.FileMode.Create);
                fs.Write(buffer, 0, buffer.Length);
                fs.Close();
                // Modify File time
                File.SetCreationTime(outputPath, Res.GetCreated());
                File.SetLastAccessTime(outputPath, Res.GetAccessed());
                File.SetLastWriteTime(outputPath, Res.GetModified());
            }
            m_Unpack.Dispose();
            if (!isCLI)
            {
                this.pd.CloseDialog();
            }
            Console.WriteLine("Finish.");
        }
Beispiel #3
0
        /// <summary>
        /// Unpacking file
        /// </summary>
        /// <param name="Res">PackResource </param>
        public bool UnpackFile(PackResource Res)
        {
            Console.WriteLine("Unpack");

            String InternalName = Res.GetName();
            CommonSaveFileDialog dSaveAs = new CommonSaveFileDialog();
            dSaveAs.DefaultFileName = Path.GetFileName(InternalName);
            if (dSaveAs.ShowDialog() == CommonFileDialogResult.Ok)
            {
                if (!isCLI)
                {
                    this.pd.ShowDialog(ProgressDialog.PROGDLG.Normal);
                    this.pd.Caption = Properties.Resources.Str_Unpack;
                }
                try
                {
                    // loading file content.
                    byte[] buffer = new byte[Res.GetSize()];
                    Res.GetData(buffer);
                    Res.Close();
                    // Delete old
                    if (File.Exists(dSaveAs.FileName))
                    {
                        File.Delete(dSaveAs.FileName);
                    }
                    // Write to file.
                    FileStream fs = new FileStream(dSaveAs.FileName, System.IO.FileMode.Create);
                    fs.Write(buffer, 0, buffer.Length);
                    fs.Close();
                    // Modify File time
                    File.SetCreationTime(dSaveAs.FileName, Res.GetCreated());
                    File.SetLastAccessTime(dSaveAs.FileName, Res.GetAccessed());
                    File.SetLastWriteTime(dSaveAs.FileName, Res.GetModified());
                }
                catch (Exception)
                {
                    return false;
                }
                finally
                {
                    Res.Close();
                    this.pd.CloseDialog();
                    Console.WriteLine("Finish.");
                }
                return true;
            }
            return false;
        }