<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.Deployment.Compression</name>
    </assembly>
    <members>
        <member name="T:Microsoft.Deployment.Compression.ArchiveException">
            <summary>
            Base exception class for compression operations. Compression libraries should
            derive subclass exceptions with more specific error information relevent to the
            file format.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new ArchiveException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="message">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveException.#ctor(System.String)">
            <summary>
            Creates a new ArchiveException with a specified error message.
            </summary>
            <param name="message">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveException.#ctor">
            <summary>
            Creates a new ArchiveException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the ArchiveException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:Microsoft.Deployment.Compression.ArchiveFileInfo">
            <summary>
            Abstract object representing a compressed file within an archive;
            provides operations for getting the file properties and unpacking
            the file.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.#ctor(Microsoft.Deployment.Compression.ArchiveInfo,System.String)">
            <summary>
            Creates a new ArchiveFileInfo object representing a file within
            an archive in a specified path.
            </summary>
            <param name="archiveInfo">An object representing the archive
            containing the file.</param>
            <param name="filePath">The path to the file within the archive.
            Usually, this is a simple file name, but if the archive contains
            a directory structure this may include the directory.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.#ctor(System.String,System.Int32,System.IO.FileAttributes,System.DateTime,System.Int64)">
            <summary>
            Creates a new ArchiveFileInfo object with all parameters specified;
            used by subclasses when reading the metadata out of an archive.
            </summary>
            <param name="filePath">The internal path and name of the file in
            the archive.</param>
            <param name="archiveNumber">The archive number where the file
            starts.</param>
            <param name="attributes">The stored attributes of the file.</param>
            <param name="lastWriteTime">The stored last write time of the
            file.</param>
            <param name="length">The uncompressed size of the file.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the ArchiveFileInfo class with
            serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized
            object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual
            information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Sets the SerializationInfo with information about the archive.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized
            object data.</param>
            <param name="context">The StreamingContext that contains contextual
            information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.ToString">
            <summary>
            Gets the full path to the file.
            </summary>
            <returns>The same as <see cref="P:Microsoft.Deployment.Compression.ArchiveFileInfo.FullName"/></returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.Delete">
            <summary>
            Deletes the file. NOT SUPPORTED.
            </summary>
            <exception cref="T:System.NotSupportedException">Files cannot be deleted
            from an existing archive.</exception>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.Refresh">
            <summary>
            Refreshes the attributes and other cached information about the file,
            by re-reading the information from the archive.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.CopyTo(System.String)">
            <summary>
            Extracts the file.
            </summary>
            <param name="destFileName">The destination path where the file
            will be extracted.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.CopyTo(System.String,System.Boolean)">
            <summary>
            Extracts the file, optionally overwriting any existing file.
            </summary>
            <param name="destFileName">The destination path where the file
            will be extracted.</param>
            <param name="overwrite">If true, <paramref name="destFileName"/>
            will be overwritten if it exists.</param>
            <exception cref="T:System.IO.IOException"><paramref name="overwrite"/> is false
            and <paramref name="destFileName"/> exists.</exception>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.OpenRead">
            <summary>
            Opens the archive file for reading without actually extracting the
            file to disk.
            </summary>
            <returns>
            A stream for reading directly from the packed file. Like any stream
            this should be closed/disposed as soon as it is no longer needed.
            </returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.OpenText">
            <summary>
            Opens the archive file reading text with UTF-8 encoding without
            actually extracting the file to disk.
            </summary>
            <returns>
            A reader for reading text directly from the packed file. Like any reader
            this should be closed/disposed as soon as it is no longer needed.
            </returns>
            <remarks>
            To open an archived text file with different encoding, use the
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileInfo.OpenRead"/> method and pass the returned stream to one of
            the <see cref="T:System.IO.StreamReader"/> constructor overloads.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileInfo.Refresh(Microsoft.Deployment.Compression.ArchiveFileInfo)">
            <summary>
            Refreshes the information in this object with new data retrieved
            from an archive.
            </summary>
            <param name="newFileInfo">Fresh instance for the same file just
            read from the archive.</param>
            <remarks>
            Subclasses may override this method to refresh sublcass fields.
            However they should always call the base implementation first.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Name">
            <summary>
            Gets the name of the file.
            </summary>
            <value>The name of the file, not including any path.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Path">
            <summary>
            Gets the internal path of the file in the archive.
            </summary>
            <value>The internal path of the file in the archive, not including
            the file name.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.FullName">
            <summary>
            Gets the full path to the file.
            </summary>
            <value>The full path to the file, including the full path to the
            archive, the internal path in the archive, and the file name.</value>
            <remarks>
            For example, the path <c>"C:\archive.cab\file.txt"</c> refers to
            a file "file.txt" inside the archive "archive.cab".
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Archive">
            <summary>
            Gets or sets the archive that contains this file.
            </summary>
            <value>
            The ArchiveInfo instance that retrieved this file information -- this
            may be null if the ArchiveFileInfo object was returned directly from
            a stream.
            </value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.ArchiveName">
            <summary>
            Gets the full path of the archive that contains this file.
            </summary>
            <value>The full path of the archive that contains this file.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.ArchiveNumber">
            <summary>
            Gets the number of the archive where this file starts.
            </summary>
            <value>The number of the archive where this file starts.</value>
            <remarks>A single archive or the first archive in a chain is
            numbered 0.</remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Exists">
            <summary>
            Checks if the file exists within the archive.
            </summary>
            <value>True if the file exists, false otherwise.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Length">
            <summary>
            Gets the uncompressed size of the file.
            </summary>
            <value>The uncompressed size of the file in bytes.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.Attributes">
            <summary>
            Gets the attributes of the file.
            </summary>
            <value>The attributes of the file as stored in the archive.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileInfo.LastWriteTime">
            <summary>
            Gets the last modification time of the file.
            </summary>
            <value>The last modification time of the file as stored in the
            archive.</value>
        </member>
        <member name="T:Microsoft.Deployment.Compression.ArchiveInfo">
            <summary>
            Abstract object representing a compressed archive on disk;
            provides access to file-based operations on the archive.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.#ctor(System.String)">
            <summary>
            Creates a new ArchiveInfo object representing an archive in a
            specified path.
            </summary>
            <param name="path">The path to the archive. When creating an archive,
            this file does not necessarily exist yet.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the ArchiveInfo class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object
            data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual
            information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.ToString">
            <summary>
            Gets the full path of the archive.
            </summary>
            <returns>The full path of the archive.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.Delete">
            <summary>
            Deletes the archive.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.CopyTo(System.String)">
            <summary>
            Copies an existing archive to another location.
            </summary>
            <param name="destFileName">The destination file path.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.CopyTo(System.String,System.Boolean)">
            <summary>
            Copies an existing archive to another location, optionally
            overwriting the destination file.
            </summary>
            <param name="destFileName">The destination file path.</param>
            <param name="overwrite">If true, the destination file will be
            overwritten if it exists.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.MoveTo(System.String)">
            <summary>
            Moves an existing archive to another location.
            </summary>
            <param name="destFileName">The destination file path.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.IsValid">
            <summary>
            Checks if the archive contains a valid archive header.
            </summary>
            <returns>True if the file is a valid archive; false otherwise.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.GetFiles">
            <summary>
            Gets information about the files contained in the archive.
            </summary>
            <returns>A list of <see cref="T:Microsoft.Deployment.Compression.ArchiveFileInfo"/> objects, each
            containing information about a file in the archive.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.GetFiles(System.String)">
            <summary>
            Gets information about the certain files contained in the archive file.
            </summary>
            <param name="searchPattern">The search string, such as
            "*.txt".</param>
            <returns>A list of <see cref="T:Microsoft.Deployment.Compression.ArchiveFileInfo"/> objects, each containing
            information about a file in the archive.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.Unpack(System.String)">
            <summary>
            Extracts all files from an archive to a destination directory.
            </summary>
            <param name="destDirectory">Directory where the files are to be
            extracted.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.Unpack(System.String,System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Extracts all files from an archive to a destination directory,
            optionally extracting only newer files.
            </summary>
            <param name="destDirectory">Directory where the files are to be
            extracted.</param>
            <param name="progressHandler">Handler for receiving progress
            information; this may be null if progress is not desired.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.UnpackFile(System.String,System.String)">
            <summary>
            Extracts a single file from the archive.
            </summary>
            <param name="fileName">The name of the file in the archive. Also
            includes the internal path of the file, if any. File name matching
            is case-insensitive.</param>
            <param name="destFileName">The path where the file is to be
            extracted on disk.</param>
            <remarks>If <paramref name="destFileName"/> already exists,
            it will be overwritten.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.UnpackFiles(System.Collections.Generic.IList{System.String},System.String,System.Collections.Generic.IList{System.String})">
            <summary>
            Extracts multiple files from the archive.
            </summary>
            <param name="fileNames">The names of the files in the archive.
            Each name includes the internal path of the file, if any. File name
            matching is case-insensitive.</param>
            <param name="destDirectory">This parameter may be null, but if
            specified it is the root directory for any relative paths in
            <paramref name="destFileNames"/>.</param>
            <param name="destFileNames">The paths where the files are to be
            extracted on disk. If this parameter is null, the files will be
            extracted with the names from the archive.</param>
            <remarks>
            If any extracted files already exist on disk, they will be overwritten.
            <p>The <paramref name="destDirectory"/> and
            <paramref name="destFileNames"/> parameters cannot both be null.</p>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.UnpackFiles(System.Collections.Generic.IList{System.String},System.String,System.Collections.Generic.IList{System.String},System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Extracts multiple files from the archive, optionally extracting
            only newer files.
            </summary>
            <param name="fileNames">The names of the files in the archive.
            Each name includes the internal path of the file, if any. File name
            matching is case-insensitive.</param>
            <param name="destDirectory">This parameter may be null, but if
            specified it is the root directory for any relative paths in
            <paramref name="destFileNames"/>.</param>
            <param name="destFileNames">The paths where the files are to be
            extracted on disk. If this parameter is null, the files will be
            extracted with the names from the archive.</param>
            <param name="progressHandler">Handler for receiving progress information;
            this may be null if progress is not desired.</param>
            <remarks>
            If any extracted files already exist on disk, they will be overwritten.
            <p>The <paramref name="destDirectory"/> and
            <paramref name="destFileNames"/> parameters cannot both be null.</p>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.UnpackFileSet(System.Collections.Generic.IDictionary{System.String,System.String},System.String)">
            <summary>
            Extracts multiple files from the archive.
            </summary>
            <param name="fileNames">A mapping from internal file paths to
            external file paths. Case-senstivity when matching internal paths
            depends on the IDictionary implementation.</param>
            <param name="destDirectory">This parameter may be null, but if
            specified it is the root directory for any relative external paths
            in <paramref name="fileNameMap"/>.</param>
            <remarks>
            If any extracted files already exist on disk, they will be overwritten.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.UnpackFileSet(System.Collections.Generic.IDictionary{System.String,System.String},System.String,System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Extracts multiple files from the archive.
            </summary>
            <param name="fileNames">A mapping from internal file paths to
            external file paths. Case-senstivity when matching internal
            paths depends on the IDictionary implementation.</param>
            <param name="destDirectory">This parameter may be null, but if
            specified it is the root directory for any relative external
            paths in <paramref name="fileNameMap"/>.</param>
            <param name="progressHandler">Handler for receiving progress
            information; this may be null if progress is not desired.</param>
            <remarks>
            If any extracted files already exist on disk, they will be overwritten.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.OpenRead(System.String)">
            <summary>
            Opens a file inside the archive for reading without actually
            extracting the file to disk.
            </summary>
            <param name="fileName">The name of the file in the archive. Also
            includes the internal path of the file, if any. File name matching
            is case-insensitive.</param>
            <returns>
            A stream for reading directly from the packed file. Like any stream
            this should be closed/disposed as soon as it is no longer needed.
            </returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.OpenText(System.String)">
            <summary>
            Opens a file inside the archive for reading text with UTF-8 encoding
            without actually extracting the file to disk.
            </summary>
            <param name="fileName">The name of the file in the archive. Also
            includes the internal path of the file, if any. File name matching
            is case-insensitive.</param>
            <returns>
            A reader for reading text directly from the packed file. Like any reader
            this should be closed/disposed as soon as it is no longer needed.
            </returns>
            <remarks>
            To open an archived text file with different encoding, use the
            <see cref="M:Microsoft.Deployment.Compression.ArchiveInfo.OpenRead(System.String)"/> method and pass the returned stream to one of
            the <see cref="T:System.IO.StreamReader"/> constructor overloads.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.Pack(System.String)">
            <summary>
            Compresses all files in a directory into the archive.
            Does not include subdirectories.
            </summary>
            <param name="sourceDirectory">The directory containing the
            files to be included.</param>
            <remarks>
            Uses maximum compression level.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.Pack(System.String,System.Boolean,Microsoft.Deployment.Compression.CompressionLevel,System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Compresses all files in a directory into the archive, optionally
            including subdirectories.
            </summary>
            <param name="sourceDirectory">This parameter may be null, but
            if specified it is the root directory
            for any relative paths in <paramref name="sourceFileNames"/>.</param>
            <param name="includeSubdirectories">If true, recursively include
            files in subdirectories.</param>
            <param name="compLevel">The compression level used when creating
            the archive.</param>
            <param name="progressHandler">Handler for receiving progress information;
            this may be null if progress is not desired.</param>
            <remarks>
            The files are stored in the archive using their relative file paths in
            the directory tree, if supported by the archive file format.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.PackFiles(System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Compresses files into the archive, specifying the names used to
            store the files in the archive.
            </summary>
            <param name="sourceDirectory">This parameter may be null, but
            if specified it is the root directory
            for any relative paths in <paramref name="sourceFileNames"/>.</param>
            <param name="sourceFileNames">The list of files to be included in
            the archive.</param>
            <param name="fileNames">The names of the files as they are stored
            in the archive. Each name
            includes the internal path of the file, if any. This parameter may
            be null, in which case the files are stored in the archive with their
            source file names and no path information.</param>
            <remarks>
            Uses maximum compression level.
            <p>Duplicate items in the <paramref name="fileNames"/> array will cause
            an <see cref="T:Microsoft.Deployment.Compression.ArchiveException"/>.</p>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.PackFiles(System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String},Microsoft.Deployment.Compression.CompressionLevel,System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Compresses files into the archive, specifying the names used to
            store the files in the archive.
            </summary>
            <param name="sourceDirectory">This parameter may be null, but if
            specified it is the root directory
            for any relative paths in <paramref name="sourceFileNames"/>.</param>
            <param name="sourceFileNames">The list of files to be included in
            the archive.</param>
            <param name="fileNames">The names of the files as they are stored in
            the archive. Each name includes the internal path of the file, if any.
            This parameter may be null, in which case the files are stored in the
            archive with their source file names and no path information.</param>
            <param name="compLevel">The compression level used when creating the
            archive.</param>
            <param name="progressHandler">Handler for receiving progress information;
            this may be null if progress is not desired.</param>
            <remarks>
            Duplicate items in the <paramref name="fileNames"/> array will cause
            an <see cref="T:Microsoft.Deployment.Compression.ArchiveException"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.PackFileSet(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
            <summary>
            Compresses files into the archive, specifying the names used
            to store the files in the archive.
            </summary>
            <param name="sourceDirectory">This parameter may be null, but if
            specified it is the root directory
            for any relative paths in <paramref name="fileNames"/>.</param>
            <param name="fileNames">A mapping from internal file paths to
            external file paths.</param>
            <remarks>
            Uses maximum compression level.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.PackFileSet(System.String,System.Collections.Generic.IDictionary{System.String,System.String},Microsoft.Deployment.Compression.CompressionLevel,System.EventHandler{Microsoft.Deployment.Compression.ArchiveProgressEventArgs})">
            <summary>
            Compresses files into the archive, specifying the names used to
            store the files in the archive.
            </summary>
            <param name="sourceDirectory">This parameter may be null, but if
            specified it is the root directory
            for any relative paths in <paramref name="fileNames"/>.</param>
            <param name="fileNames">A mapping from internal file paths to
            external file paths.</param>
            <param name="compLevel">The compression level used when creating
            the archive.</param>
            <param name="progressHandler">Handler for receiving progress information;
            this may be null if progress is not desired.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.GetRelativeFilePathsInDirectoryTree(System.String,System.Boolean)">
            <summary>
            Given a directory, gets the relative paths of all files in the
            directory, optionally including all subdirectories.
            </summary>
            <param name="dir">The directory to search.</param>
            <param name="includeSubdirectories">True to include subdirectories
            in the search.</param>
            <returns>A list of file paths relative to the directory.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.GetFile(System.String)">
            <summary>
            Retrieves information about one file from this archive.
            </summary>
            <param name="path">Path of the file in the archive.</param>
            <returns>File information, or null if the file was not found
            in the archive.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.CreateCompressionEngine">
            <summary>
            Creates a compression engine that does the low-level work for
            this object.
            </summary>
            <returns>A new compression engine instance that matches the specific
            subclass of archive.</returns>
            <remarks>
            Each instance will be <see cref="M:Microsoft.Deployment.Compression.CompressionEngine.Dispose"/>d
            immediately after use.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.CreateStringDictionary(System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Creates a case-insensitive dictionary mapping from one list of
            strings to the other.
            </summary>
            <param name="keys">List of keys.</param>
            <param name="values">List of values that are mapped 1-to-1 to
            the keys.</param>
            <returns>A filled dictionary of the strings.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.RecursiveGetRelativeFilePathsInDirectoryTree(System.String,System.String,System.Boolean,System.Collections.Generic.IList{System.String})">
            <summary>
            Recursive-descent helper function for
            GetRelativeFilePathsInDirectoryTree.
            </summary>
            <param name="dir">The root directory of the search.</param>
            <param name="relativeDir">The relative directory to be
            processed now.</param>
            <param name="includeSubdirectories">True to descend into
            subdirectories.</param>
            <param name="fileList">List of files found so far.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveInfo.InternalGetFiles(System.Predicate{System.String})">
            <summary>
            Uses a CompressionEngine to get ArchiveFileInfo objects from this
            archive, and then associates them with this ArchiveInfo instance.
            </summary>
            <param name="fileFilter">Optional predicate that can determine
            which files to process.</param>
            <returns>A list of <see cref="T:Microsoft.Deployment.Compression.ArchiveFileInfo"/> objects, each
            containing information about a file in the archive.</returns>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveInfo.Directory">
            <summary>
            Gets the directory that contains the archive.
            </summary>
            <value>A DirectoryInfo object representing the parent directory of the
            archive.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveInfo.DirectoryName">
            <summary>
            Gets the full path of the directory that contains the archive.
            </summary>
            <value>The full path of the directory that contains the archive.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveInfo.Length">
            <summary>
            Gets the size of the archive.
            </summary>
            <value>The size of the archive in bytes.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveInfo.Name">
            <summary>
            Gets the file name of the archive.
            </summary>
            <value>The file name of the archive, not including any path.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveInfo.Exists">
            <summary>
            Checks if the archive exists.
            </summary>
            <value>True if the archive exists; else false.</value>
        </member>
        <member name="T:Microsoft.Deployment.Compression.ArchiveProgressEventArgs">
            <summary>
            Contains the data reported in an archive progress event.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.#ctor(Microsoft.Deployment.Compression.ArchiveProgressType,System.String,System.Int32,System.Int32,System.Int64,System.Int64,System.String,System.Int32,System.Int32,System.Int64,System.Int64,System.Int64,System.Int64)">
            <summary>
            Creates a new ArchiveProgressEventArgs object from specified event parameters.
            </summary>
            <param name="progressType">type of status message</param>
            <param name="currentFileName">name of the file being processed</param>
            <param name="currentFileNumber">number of the current file being processed</param>
            <param name="totalFiles">total number of files to be processed</param>
            <param name="currentFileBytesProcessed">number of bytes processed so far when compressing or extracting a file</param>
            <param name="currentFileTotalBytes">total number of bytes in the current file</param>
            <param name="currentArchiveName">name of the current Archive</param>
            <param name="currentArchiveNumber">current Archive number, when processing a chained set of Archives</param>
            <param name="totalArchives">total number of Archives in a chained set</param>
            <param name="currentArchiveBytesProcessed">number of compressed bytes processed so far during an extraction</param>
            <param name="currentArchiveTotalBytes">total number of compressed bytes to be processed during an extraction</param>
            <param name="fileBytesProcessed">number of uncompressed file bytes processed so far</param>
            <param name="totalFileBytes">total number of uncompressed file bytes to be processed</param>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.ProgressType">
            <summary>
            Gets the type of status message.
            </summary>
            <value>A <see cref="T:Microsoft.Deployment.Compression.ArchiveProgressType"/> value indicating what type of progress event occurred.</value>
            <remarks>
            The handler may choose to ignore some types of progress events.
            For example, if the handler will only list each file as it is
            compressed/extracted, it can ignore events that
            are not of type <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile"/>.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentFileName">
            <summary>
            Gets the name of the file being processed. (The name of the file within the Archive; not the external
            file path.) Also includes the internal path of the file, if any.  Valid for
            <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartFile"/>, <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialFile"/>,
            and <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile"/> messages.
            </summary>
            <value>The name of the file currently being processed, or null if processing
            is currently at the stream or archive level.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentFileNumber">
            <summary>
            Gets the number of the current file being processed. The first file is number 0, and the last file
            is <see cref="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalFiles"/>-1. Valid for <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartFile"/>,
            <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialFile"/>, and <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile"/> messages.
            </summary>
            <value>The number of the file currently being processed, or the most recent
            file processed if processing is currently at the stream or archive level.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalFiles">
            <summary>
            Gets the total number of files to be processed.  Valid for all message types.
            </summary>
            <value>The total number of files to be processed that are known so far.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentFileBytesProcessed">
            <summary>
            Gets the number of bytes processed so far when compressing or extracting a file.  Valid for
            <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartFile"/>, <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialFile"/>,
            and <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile"/> messages.
            </summary>
            <value>The number of uncompressed bytes processed so far for the current file,
            or 0 if processing is currently at the stream or archive level.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentFileTotalBytes">
            <summary>
            Gets the total number of bytes in the current file.  Valid for <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartFile"/>,
            <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialFile"/>, and <see cref="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile"/> messages.
            </summary>
            <value>The uncompressed size of the current file being processed,
            or 0 if processing is currently at the stream or archive level.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentArchiveName">
            <summary>
            Gets the name of the current archive.  Not necessarily the name of the archive on disk.
            Valid for all message types.
            </summary>
            <value>The name of the current archive, or an empty string if no name was specified.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentArchiveNumber">
            <summary>
            Gets the current archive number, when processing a chained set of archives. Valid for all message types.
            </summary>
            <value>The number of the current archive.</value>
            <remarks>The first archive is number 0, and the last archive is
            <see cref="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalArchives"/>-1.</remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalArchives">
            <summary>
            Gets the total number of known archives in a chained set. Valid for all message types.
            </summary>
            <value>The total number of known archives in a chained set.</value>
            <remarks>
            When using the compression option to auto-split into multiple archives based on data size,
            this value will not be accurate until the end.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentArchiveBytesProcessed">
            <summary>
            Gets the number of compressed bytes processed so far during extraction
            of the current archive. Valid for all extraction messages.
            </summary>
            <value>The number of compressed bytes processed so far during extraction
            of the current archive.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.CurrentArchiveTotalBytes">
            <summary>
            Gets the total number of compressed bytes to be processed during extraction
            of the current archive. Valid for all extraction messages.
            </summary>
            <value>The total number of compressed bytes to be processed during extraction
            of the current archive.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.FileBytesProcessed">
            <summary>
            Gets the number of uncompressed bytes processed so far among all files. Valid for all message types.  
            </summary>
            <value>The number of uncompressed file bytes processed so far among all files.</value>
            <remarks>
            When compared to <see cref="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalFileBytes"/>, this can be used as a measure of overall progress.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveProgressEventArgs.TotalFileBytes">
            <summary>
            Gets the total number of uncompressed file bytes to be processed.  Valid for all message types.
            </summary>
            <value>The total number of uncompressed bytes to be processed among all files.</value>
        </member>
        <member name="T:Microsoft.Deployment.Compression.ArchiveProgressType">
            <summary>
            The type of progress event.
            </summary>
            <remarks>
            <p>PACKING EXAMPLE: The following sequence of events might be received when
            extracting a simple archive file with 2 files.</p>
            <list type="table">
            <listheader><term>Message Type</term><description>Description</description></listheader>
            <item><term>StartArchive</term> <description>Begin extracting archive</description></item>
            <item><term>StartFile</term>    <description>Begin extracting first file</description></item>
            <item><term>PartialFile</term>  <description>Extracting first file</description></item>
            <item><term>PartialFile</term>  <description>Extracting first file</description></item>
            <item><term>FinishFile</term>   <description>Finished extracting first file</description></item>
            <item><term>StartFile</term>    <description>Begin extracting second file</description></item>
            <item><term>PartialFile</term>  <description>Extracting second file</description></item>
            <item><term>FinishFile</term>   <description>Finished extracting second file</description></item>
            <item><term>FinishArchive</term><description>Finished extracting archive</description></item>
            </list>
            <p></p>
            <p>UNPACKING EXAMPLE:  Packing 3 files into 2 archive chunks, where the second file is
            continued to the second archive chunk.</p>
            <list type="table">
            <listheader><term>Message Type</term><description>Description</description></listheader>
            <item><term>StartFile</term>     <description>Begin compressing first file</description></item>
            <item><term>FinishFile</term>    <description>Finished compressing first file</description></item>
            <item><term>StartFile</term>     <description>Begin compressing second file</description></item>
            <item><term>PartialFile</term>   <description>Compressing second file</description></item>
            <item><term>PartialFile</term>   <description>Compressing second file</description></item>
            <item><term>FinishFile</term>    <description>Finished compressing second file</description></item>
            <item><term>StartArchive</term>  <description>Begin writing first archive</description></item>
            <item><term>PartialArchive</term><description>Writing first archive</description></item>
            <item><term>FinishArchive</term> <description>Finished writing first archive</description></item>
            <item><term>StartFile</term>     <description>Begin compressing third file</description></item>
            <item><term>PartialFile</term>   <description>Compressing third file</description></item>
            <item><term>FinishFile</term>    <description>Finished compressing third file</description></item>
            <item><term>StartArchive</term>  <description>Begin writing second archive</description></item>
            <item><term>PartialArchive</term><description>Writing second archive</description></item>
            <item><term>FinishArchive</term> <description>Finished writing second archive</description></item>
            </list>
            </remarks>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartFile">
            <summary>Status message before beginning the packing or unpacking an individual file.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialFile">
            <summary>Status message (possibly reported multiple times) during the process of packing or unpacking a file.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishFile">
            <summary>Status message after completion of the packing or unpacking an individual file.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.StartArchive">
            <summary>Status message before beginning the packing or unpacking an archive.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.PartialArchive">
            <summary>Status message (possibly reported multiple times) during the process of packing or unpacking an archiv.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.ArchiveProgressType.FinishArchive">
            <summary>Status message after completion of the packing or unpacking of an archive.</summary>
        </member>
        <member name="T:Microsoft.Deployment.Compression.ArchiveFileStreamContext">
            <summary>
            Provides a basic implementation of the archive pack and unpack stream context
            interfaces, based on a list of archive files, a default directory, and an
            optional mapping from internal to external file paths.
            </summary>
            <remarks>
            This class can also handle creating or extracting chained archive packages.
            </remarks>
        </member>
        <member name="T:Microsoft.Deployment.Compression.IPackStreamContext">
            <summary>
            This interface provides the methods necessary for the
            <see cref="T:Microsoft.Deployment.Compression.CompressionEngine"/> to open and close streams for archives
            and files. The implementor of this interface can use any kind of logic
            to determine what kind of streams to open and where.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.GetArchiveName(System.Int32)">
            <summary>
            Gets the name of the archive with a specified number.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive
            within the chain.</param>
            <returns>The name of the requested archive. May be an empty string
            for non-chained archives, but may never be null.</returns>
            <remarks>The archive name is the name stored within the archive, used for
            identification of the archive especially among archive chains. That
            name is often, but not necessarily the same as the filename of the
            archive package.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.OpenArchiveWriteStream(System.Int32,System.String,System.Boolean,Microsoft.Deployment.Compression.CompressionEngine)">
            <summary>
            Opens a stream for writing an archive package.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive within
            the chain.</param>
            <param name="archiveName">The name of the archive that was returned
            by <see cref="M:Microsoft.Deployment.Compression.IPackStreamContext.GetArchiveName(System.Int32)"/>.</param>
            <param name="truncate">True if the stream should be truncated when
            opened (if it already exists); false if an existing stream is being
            re-opened for writing additional data.</param>
            <param name="compressionEngine">Instance of the compression engine
            doing the operations.</param>
            <returns>A writable Stream where the compressed archive bytes will be
            written, or null to cancel the archive creation.</returns>
            <remarks>
            If this method returns null, the archive engine will throw a
            FileNotFoundException.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.CloseArchiveWriteStream(System.Int32,System.String,System.IO.Stream)">
            <summary>
            Closes a stream where an archive package was written.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive within
            the chain.</param>
            <param name="archiveName">The name of the archive that was previously
            returned by
            <see cref="M:Microsoft.Deployment.Compression.IPackStreamContext.GetArchiveName(System.Int32)"/>.</param>
            <param name="stream">A stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.IPackStreamContext.OpenArchiveWriteStream(System.Int32,System.String,System.Boolean,Microsoft.Deployment.Compression.CompressionEngine)"/> and is now ready to be closed.</param>
            <remarks>
            If there is another archive package in the chain, then after this stream
            is closed a new stream will be opened.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)">
            <summary>
            Opens a stream to read a file that is to be included in an archive.
            </summary>
            <param name="path">The path of the file within the archive. This is often,
            but not necessarily, the same as the relative path of the file outside
            the archive.</param>
            <param name="attributes">Returned attributes of the opened file, to be
            stored in the archive.</param>
            <param name="lastWriteTime">Returned last-modified time of the opened file,
            to be stored in the archive.</param>
            <returns>A readable Stream where the file bytes will be read from before
            they are compressed, or null to skip inclusion of the file and continue to
            the next file.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.CloseFileReadStream(System.String,System.IO.Stream)">
            <summary>
            Closes a stream that has been used to read a file.
            </summary>
            <param name="path">The path of the file within the archive; the same as
            the path provided
            when the stream was opened.</param>
            <param name="stream">A stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.IPackStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and is now ready to be closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IPackStreamContext.GetOption(System.String,System.Object[])">
            <summary>
            Gets extended parameter information specific to the compression
            format being used.
            </summary>
            <param name="optionName">Name of the option being requested.</param>
            <param name="parameters">Parameters for the option; for per-file options,
            the first parameter is typically the internal file path.</param>
            <returns>Option value, or null to use the default behavior.</returns>
            <remarks>
            This method provides a way to set uncommon options during packaging, or a
            way to handle aspects of compression formats not supported by the base library.
            <para>For example, this may be used by the zip compression library to
            specify different compression methods/levels on a per-file basis.</para>
            <para>The available option names, parameters, and expected return values
            should be documented by each compression library.</para>
            </remarks>
        </member>
        <member name="T:Microsoft.Deployment.Compression.IUnpackStreamContext">
            <summary>
            This interface provides the methods necessary for the <see cref="T:Microsoft.Deployment.Compression.CompressionEngine"/> to open
            and close streams for archives and files. The implementor of this interface can use any
            kind of logic to determine what kind of streams to open and where 
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IUnpackStreamContext.OpenArchiveReadStream(System.Int32,System.String,Microsoft.Deployment.Compression.CompressionEngine)">
            <summary>
            Opens the archive stream for reading.
            </summary>
            <param name="archiveNumber">The zero-based index of the archive to open.</param>
            <param name="archiveName">The name of the archive being opened.</param>
            <param name="compressionEngine">Instance of the compression engine doing the operations.</param>
            <returns>A stream from which archive bytes are read, or null to cancel extraction
            of the archive.</returns>
            <remarks>
            When the first archive in a chain is opened, the name is not yet known, so the
            provided value will be an empty string. When opening further archives, the
            provided value is the next-archive name stored in the previous archive. This
            name is often, but not necessarily, the same as the filename of the archive
            package to be opened.
            <para>If this method returns null, the archive engine will throw a
            FileNotFoundException.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IUnpackStreamContext.CloseArchiveReadStream(System.Int32,System.String,System.IO.Stream)">
            <summary>
            Closes a stream where an archive package was read.
            </summary>
            <param name="archiveNumber">The archive number of the stream to close.</param>
            <param name="archiveName">The name of the archive being closed.</param>
            <param name="stream">The stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.IUnpackStreamContext.OpenArchiveReadStream(System.Int32,System.String,Microsoft.Deployment.Compression.CompressionEngine)"/> and is now ready to be closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IUnpackStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)">
            <summary>
            Opens a stream for writing extracted file bytes.
            </summary>
            <param name="path">The path of the file within the archive. This is often, but
            not necessarily, the same as the relative path of the file outside the archive.</param>
            <param name="fileSize">The uncompressed size of the file to be extracted.</param>
            <param name="lastWriteTime">The last write time of the file to be extracted.</param>
            <returns>A stream where extracted file bytes are to be written, or null to skip
            extraction of the file and continue to the next file.</returns>
            <remarks>
            The implementor may use the path, size and date information to dynamically
            decide whether or not the file should be extracted.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.IUnpackStreamContext.CloseFileWriteStream(System.String,System.IO.Stream,System.IO.FileAttributes,System.DateTime)">
            <summary>
            Closes a stream where an extracted file was written.
            </summary>
            <param name="path">The path of the file within the archive.</param>
            <param name="stream">The stream that was previously returned by <see cref="M:Microsoft.Deployment.Compression.IUnpackStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>
            and is now ready to be closed.</param>
            <param name="attributes">The attributes of the extracted file.</param>
            <param name="lastWriteTime">The last write time of the file.</param>
            <remarks>
            The implementor may wish to apply the attributes and date to the newly-extracted file.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.#ctor(System.String)">
            <summary>
            Creates a new ArchiveFileStreamContext with a archive file and
            no default directory or file mapping.
            </summary>
            <param name="archiveFile">The path to a archive file that will be
            created or extracted.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.#ctor(System.String,System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
            <summary>
            Creates a new ArchiveFileStreamContext with a archive file, default
            directory and mapping from internal to external file paths.
            </summary>
            <param name="archiveFile">The path to a archive file that will be
            created or extracted.</param>
            <param name="directory">The default root directory where files will be
            located, optional.</param>
            <param name="files">A mapping from internal file paths to external file
            paths, optional.</param>
            <remarks>
            If the mapping is not null and a file is not included in the mapping,
            the file will be skipped.
            <para>If the external path in the mapping is a simple file name or
            relative file path, it will be concatenated onto the default directory,
            if one was specified.</para>
            <para>For more about how the default directory and files mapping are
            used, see <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.#ctor(System.Collections.Generic.IList{System.String},System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
            <summary>
            Creates a new ArchiveFileStreamContext with a list of archive files,
            a default directory and a mapping from internal to external file paths.
            </summary>
            <param name="archiveFiles">A list of paths to archive files that will be
            created or extracted.</param>
            <param name="directory">The default root directory where files will be
            located, optional.</param>
            <param name="files">A mapping from internal file paths to external file
            paths, optional.</param>
            <remarks>
            When creating chained archives, the <paramref name="archiveFiles"/> list
            should include at least enough archives to handle the entire set of
            input files, based on the maximum archive size that is passed to the
            <see cref="T:Microsoft.Deployment.Compression.CompressionEngine"/>.<see cref="M:Microsoft.Deployment.Compression.CompressionEngine.Pack(Microsoft.Deployment.Compression.IPackStreamContext,System.Collections.Generic.IEnumerable{System.String},System.Int64)"/>.
            <para>If the mapping is not null and a file is not included in the mapping,
            the file will be skipped.</para>
            <para>If the external path in the mapping is a simple file name or
            relative file path, it will be concatenated onto the default directory,
            if one was specified.</para>
            <para>For more about how the default directory and files mapping are used,
            see <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.GetArchiveName(System.Int32)">
            <summary>
            Gets the name of the archive with a specified number.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive within
            the chain.</param>
            <returns>The name of the requested archive. May be an empty string
            for non-chained archives, but may never be null.</returns>
            <remarks>This method returns the file name of the archive from the
            <see cref="F:Microsoft.Deployment.Compression.ArchiveFileStreamContext.archiveFiles"/> list with the specified index, or an empty
            string if the archive number is outside the bounds of the list. The
            file name should not include any directory path.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenArchiveWriteStream(System.Int32,System.String,System.Boolean,Microsoft.Deployment.Compression.CompressionEngine)">
            <summary>
            Opens a stream for writing an archive.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive within
            the chain.</param>
            <param name="archiveName">The name of the archive that was returned
            by <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.GetArchiveName(System.Int32)"/>.</param>
            <param name="truncate">True if the stream should be truncated when
            opened (if it already exists); false if an existing stream is being
            re-opened for writing additional data.</param>
            <param name="compressionEngine">Instance of the compression engine
            doing the operations.</param>
            <returns>A writable Stream where the compressed archive bytes will be
            written, or null to cancel the archive creation.</returns>
            <remarks>
            This method opens the file from the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.ArchiveFiles"/> list
            with the specified index. If the archive number is outside the bounds
            of the list, this method returns null.
            <para>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.EnableOffsetOpen"/> flag is set, this method
            will seek to the start of any existing archive in the file, or to the
            end of the file if the existing file is not an archive.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.CloseArchiveWriteStream(System.Int32,System.String,System.IO.Stream)">
            <summary>
            Closes a stream where an archive package was written.
            </summary>
            <param name="archiveNumber">The 0-based index of the archive within
            the chain.</param>
            <param name="archiveName">The name of the archive that was previously
            returned by <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.GetArchiveName(System.Int32)"/>.</param>
            <param name="stream">A stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenArchiveWriteStream(System.Int32,System.String,System.Boolean,Microsoft.Deployment.Compression.CompressionEngine)"/> and is now ready to be closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)">
            <summary>
            Opens a stream to read a file that is to be included in an archive.
            </summary>
            <param name="path">The path of the file within the archive.</param>
            <param name="attributes">The returned attributes of the opened file,
            to be stored in the archive.</param>
            <param name="lastWriteTime">The returned last-modified time of the
            opened file, to be stored in the archive.</param>
            <returns>A readable Stream where the file bytes will be read from
            before they are compressed, or null to skip inclusion of the file and
            continue to the next file.</returns>
            <remarks>
            This method opens a file using the following logic:
            <list>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> and the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/> mapping
            are both null, the path is treated as relative to the current directory,
            and that file is opened.</item>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> is not null but the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping is null, the path is treated as relative to that directory, and
            that file is opened.</item>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> is null but the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping is not null, the path parameter is used as a key into the mapping,
            and the resulting value is the file path that is opened, relative to the
            current directory (or it may be an absolute path). If no mapping exists,
            the file is skipped.</item>
            <item>If both the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> and the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping are specified, the path parameter is used as a key into the
            mapping, and the resulting value is the file path that is opened, relative
            to the specified directory (or it may be an absolute path). If no mapping
            exists, the file is skipped.</item>
            </list>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.CloseFileReadStream(System.String,System.IO.Stream)">
            <summary>
            Closes a stream that has been used to read a file.
            </summary>
            <param name="path">The path of the file within the archive; the same as
            the path provided when the stream was opened.</param>
            <param name="stream">A stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and is now ready to be closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.GetOption(System.String,System.Object[])">
            <summary>
            Gets extended parameter information specific to the compression format
            being used.
            </summary>
            <param name="optionName">Name of the option being requested.</param>
            <param name="parameters">Parameters for the option; for per-file options,
            the first parameter is typically the internal file path.</param>
            <returns>Option value, or null to use the default behavior.</returns>
            <remarks>
            This implementation does not handle any options. Subclasses may override
            this method to allow for non-default behavior.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenArchiveReadStream(System.Int32,System.String,Microsoft.Deployment.Compression.CompressionEngine)">
            <summary>
            Opens the archive stream for reading.
            </summary>
            <param name="archiveNumber">The zero-based index of the archive to
            open.</param>
            <param name="archiveName">The name of the archive being opened.</param>
            <param name="compressionEngine">Instance of the compression engine
            doing the operations.</param>
            <returns>A stream from which archive bytes are read, or null to cancel
            extraction of the archive.</returns>
            <remarks>
            This method opens the file from the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.ArchiveFiles"/> list with
            the specified index. If the archive number is outside the bounds of the
            list, this method returns null.
            <para>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.EnableOffsetOpen"/> flag is set, this method will
            seek to the start of any existing archive in the file, or to the end of
            the file if the existing file is not an archive.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.CloseArchiveReadStream(System.Int32,System.String,System.IO.Stream)">
            <summary>
            Closes a stream where an archive was read.
            </summary>
            <param name="archiveNumber">The archive number of the stream
            to close.</param>
            <param name="archiveName">The name of the archive being closed.</param>
            <param name="stream">The stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenArchiveReadStream(System.Int32,System.String,Microsoft.Deployment.Compression.CompressionEngine)"/> and is now ready to be closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)">
            <summary>
            Opens a stream for writing extracted file bytes.
            </summary>
            <param name="path">The path of the file within the archive.</param>
            <param name="fileSize">The uncompressed size of the file to be
            extracted.</param>
            <param name="lastWriteTime">The last write time of the file to be
            extracted.</param>
            <returns>A stream where extracted file bytes are to be written, or null
            to skip extraction of the file and continue to the next file.</returns>
            <remarks>
            This method opens a file using the following logic:
            <list>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> and the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/> mapping
            are both null, the path is treated as relative to the current directory,
            and that file is opened.</item>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> is not null but the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping is null, the path is treated as relative to that directory, and
            that file is opened.</item>
            <item>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> is null but the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping is not null, the path parameter is used as a key into the mapping,
            and the resulting value is the file path that is opened, relative to the
            current directory (or it may be an absolute path). If no mapping exists,
            the file is skipped.</item>
            <item>If both the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> and the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/>
            mapping are specified, the path parameter is used as a key into the
            mapping, and the resulting value is the file path that is opened,
            relative to the specified directory (or it may be an absolute path).
            If no mapping exists, the file is skipped.</item>
            </list>
            <para>If the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.ExtractOnlyNewerFiles"/> flag is set, the file
            is skipped if a file currently exists in the same path with an equal
            or newer write time.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.CloseFileWriteStream(System.String,System.IO.Stream,System.IO.FileAttributes,System.DateTime)">
            <summary>
            Closes a stream where an extracted file was written.
            </summary>
            <param name="path">The path of the file within the archive.</param>
            <param name="stream">The stream that was previously returned by
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/> and is now ready to be closed.</param>
            <param name="attributes">The attributes of the extracted file.</param>
            <param name="lastWriteTime">The last write time of the file.</param>
            <remarks>
            After closing the extracted file stream, this method applies the date
            and attributes to that file.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.TranslateFilePath(System.String)">
            <summary>
            Translates an internal file path to an external file path using the
            <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory"/> and the <see cref="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files"/> mapping, according to
            rules documented in <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and
            <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>.
            </summary>
            <param name="path">The path of the file with the archive.</param>
            <returns>The external path of the file, or null if there is no
            valid translation.</returns>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.ArchiveFiles">
            <summary>
            Gets or sets the list of archive files that are created or extracted.
            </summary>
            <value>The list of archive files that are created or extracted.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Directory">
            <summary>
            Gets or sets the default root directory where files are located.
            </summary>
            <value>The default root directory where files are located.</value>
            <remarks>
            For details about how the default directory is used,
            see <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.Files">
            <summary>
            Gets or sets the mapping from internal file paths to external file paths.
            </summary>
            <value>A mapping from internal file paths to external file paths.</value>
            <remarks>
            For details about how the files mapping is used,
            see <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileReadStream(System.String,System.IO.FileAttributes@,System.DateTime@)"/> and <see cref="M:Microsoft.Deployment.Compression.ArchiveFileStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)"/>.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.ExtractOnlyNewerFiles">
            <summary>
            Gets or sets a flag that can prevent extracted files from overwriting
            newer files that already exist.
            </summary>
            <value>True to prevent overwriting newer files that already exist
            during extraction; false to always extract from the archive regardless
            of existing files.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.ArchiveFileStreamContext.EnableOffsetOpen">
            <summary>
            Gets or sets a flag that enables creating or extracting an archive
            at an offset within an existing file. (This is typically used to open
            archive-based self-extracting packages.)
            </summary>
            <value>True to search an existing package file for an archive offset
            or the end of the file;/ false to always create or open a plain
            archive file.</value>
        </member>
        <member name="T:Microsoft.Deployment.Compression.BasicUnpackStreamContext">
            <summary>
            Stream context used to extract a single file from an archive into a memory stream.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.BasicUnpackStreamContext.#ctor(System.IO.Stream)">
            <summary>
            Creates a new BasicExtractStreamContext that reads from the specified archive stream.
            </summary>
            <param name="archiveStream">Archive stream to read from.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.BasicUnpackStreamContext.OpenArchiveReadStream(System.Int32,System.String,Microsoft.Deployment.Compression.CompressionEngine)">
            <summary>
            Opens the archive stream for reading. Returns a DuplicateStream instance,
            so the stream may be virtually opened multiple times.
            </summary>
            <param name="archiveNumber">The archive number to open (ignored; 0 is assumed).</param>
            <param name="archiveName">The name of the archive being opened.</param>
            <param name="compressionEngine">Instance of the compression engine doing the operations.</param>
            <returns>A stream from which archive bytes are read.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.BasicUnpackStreamContext.CloseArchiveReadStream(System.Int32,System.String,System.IO.Stream)">
            <summary>
            Does *not* close the stream. The archive stream should be managed by
            the code that invokes the archive extraction.
            </summary>
            <param name="archiveNumber">The archive number of the stream to close.</param>
            <param name="archiveName">The name of the archive being closed.</param>
            <param name="stream">The stream being closed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.BasicUnpackStreamContext.OpenFileWriteStream(System.String,System.Int64,System.DateTime)">
            <summary>
            Opens a stream for writing extracted file bytes. The returned stream is a MemoryStream
            instance, so the file is extracted straight into memory.
            </summary>
            <param name="path">Path of the file within the archive.</param>
            <param name="fileSize">The uncompressed size of the file to be extracted.</param>
            <param name="lastWriteTime">The last write time of the file.</param>
            <returns>A stream where extracted file bytes are to be written.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.BasicUnpackStreamContext.CloseFileWriteStream(System.String,System.IO.Stream,System.IO.FileAttributes,System.DateTime)">
            <summary>
            Does *not* close the file stream. The file stream is saved in memory so it can
            be read later.
            </summary>
            <param name="path">Path of the file within the archive.</param>
            <param name="stream">The file stream to be closed.</param>
            <param name="attributes">The attributes of the extracted file.</param>
            <param name="lastWriteTime">The last write time of the file.</param>
        </member>
        <member name="P:Microsoft.Deployment.Compression.BasicUnpackStreamContext.FileStream">
            <summary>
            Gets the stream for the extracted file, or null if no file was extracted.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.Compression.CompressionEngine">
            <summary>
            Base class for an engine capable of packing and unpacking a particular
            compressed file format.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.#ctor">
            <summary>
            Creates a new instance of the compression engine base class.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Finalize">
            <summary>
            Disposes the compression engine.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Dispose">
            <summary>
            Disposes of resources allocated by the compression engine.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Pack(Microsoft.Deployment.Compression.IPackStreamContext,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Creates an archive.
            </summary>
            <param name="streamContext">A context interface to handle opening
            and closing of archive and file streams.</param>
            <param name="files">The paths of the files in the archive
            (not external file paths).</param>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The archive could not be
            created.</exception>
            <remarks>
            The stream context implementation may provide a mapping from the
            file paths within the archive to the external file paths.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Pack(Microsoft.Deployment.Compression.IPackStreamContext,System.Collections.Generic.IEnumerable{System.String},System.Int64)">
            <summary>
            Creates an archive or chain of archives.
            </summary>
            <param name="streamContext">A context interface to handle opening
            and closing of archive and file streams.</param>
            <param name="files">The paths of the files in the archive (not
            external file paths).</param>
            <param name="maxArchiveSize">The maximum number of bytes for one
            archive before the contents are chained to the next archive, or zero
            for unlimited archive size.</param>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The archive could not be
            created.</exception>
            <remarks>
            The stream context implementation may provide a mapping from the file
            paths within the archive to the external file paths.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.IsArchive(System.IO.Stream)">
            <summary>
            Checks whether a Stream begins with a header that indicates
            it is a valid archive.
            </summary>
            <param name="stream">Stream for reading the archive file.</param>
            <returns>True if the stream is a valid archive
            (with no offset); false otherwise.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.FindArchiveOffset(System.IO.Stream)">
            <summary>
            Gets the offset of an archive that is positioned 0 or more bytes
            from the start of the Stream.
            </summary>
            <param name="stream">A stream for reading the archive.</param>
            <returns>The offset in bytes of the archive,
            or -1 if no archive is found in the Stream.</returns>
            <remarks>The archive must begin on a 4-byte boundary.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.GetFileInfo(System.IO.Stream)">
            <summary>
            Gets information about all files in an archive stream.
            </summary>
            <param name="stream">A stream for reading the archive.</param>
            <returns>Information about all files in the archive stream.</returns>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The stream is not a valid
            archive.</exception>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.GetFileInfo(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
            <summary>
            Gets information about files in an archive or archive chain.
            </summary>
            <param name="streamContext">A context interface to handle opening
            and closing of archive and file streams.</param>
            <param name="fileFilter">A predicate that can determine
            which files to process, optional.</param>
            <returns>Information about files in the archive stream.</returns>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The archive provided
            by the stream context is not valid.</exception>
            <remarks>
            The <paramref name="fileFilter"/> predicate takes an internal file
            path and returns true to include the file or false to exclude it.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.GetFiles(System.IO.Stream)">
            <summary>
            Gets the list of files in an archive Stream.
            </summary>
            <param name="stream">A stream for reading the archive.</param>
            <returns>A list of the paths of all files contained in the
            archive.</returns>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The stream is not a valid
            archive.</exception>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.GetFiles(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
            <summary>
            Gets the list of files in an archive or archive chain.
            </summary>
            <param name="streamContext">A context interface to handle opening
            and closing of archive and file streams.</param>
            <param name="fileFilter">A predicate that can determine
            which files to process, optional.</param>
            <returns>An array containing the names of all files contained in
            the archive or archive chain.</returns>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The archive provided
            by the stream context is not valid.</exception>
            <remarks>
            The <paramref name="fileFilter"/> predicate takes an internal file
            path and returns true to include the file or false to exclude it.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Unpack(System.IO.Stream,System.String)">
            <summary>
            Reads a single file from an archive stream.
            </summary>
            <param name="stream">A stream for reading the archive.</param>
            <param name="path">The path of the file within the archive
            (not the external file path).</param>
            <returns>A stream for reading the extracted file, or null
            if the file does not exist in the archive.</returns>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The stream is not a valid
            archive.</exception>
            <remarks>The entire extracted file is cached in memory, so this
            method requires enough free memory to hold the file.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Unpack(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
            <summary>
            Extracts files from an archive or archive chain.
            </summary>
            <param name="streamContext">A context interface to handle opening
            and closing of archive and file streams.</param>
            <param name="fileFilter">An optional predicate that can determine
            which files to process.</param>
            <exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The archive provided
            by the stream context is not valid.</exception>
            <remarks>
            The <paramref name="fileFilter"/> predicate takes an internal file
            path and returns true to include the file or false to exclude it.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.OnProgress(Microsoft.Deployment.Compression.ArchiveProgressEventArgs)">
            <summary>
            Called by sublcasses to distribute a packing or unpacking progress
            event to listeners.
            </summary>
            <param name="e">Event details.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.Dispose(System.Boolean)">
            <summary>
            Disposes of resources allocated by the compression engine.
            </summary>
            <param name="disposing">If true, the method has been called
            directly or indirectly by a user's code, so managed and unmanaged
            resources will be disposed. If false, the method has been called by
            the runtime from inside the finalizer, and only unmanaged resources
            will be disposed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.DosDateAndTimeToDateTime(System.Int16,System.Int16,System.DateTime@)">
            <summary>
            Compresion utility function for converting old-style
            date and time values to a DateTime structure.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CompressionEngine.DateTimeToDosDateAndTime(System.DateTime,System.Int16@,System.Int16@)">
            <summary>
            Compresion utility function for converting a DateTime structure
            to old-style date and time values.
            </summary>
        </member>
        <member name="E:Microsoft.Deployment.Compression.CompressionEngine.Progress">
            <summary>
            Occurs when the compression engine reports progress in packing
            or unpacking an archive.
            </summary>
            <seealso cref="T:Microsoft.Deployment.Compression.ArchiveProgressType"/>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CompressionEngine.UseTempFiles">
            <summary>
            Gets or sets a flag indicating whether temporary files are created
            and used during compression.
            </summary>
            <value>True if temporary files are used; false if compression is done
            entirely in-memory.</value>
            <remarks>The value of this property is true by default. Using temporary
            files can greatly reduce the memory requirement of compression,
            especially when compressing large archives. However, setting this property
            to false may yield slightly better performance when creating small
            archives. Or it may be necessary if the process does not have sufficient
            privileges to create temporary files.</remarks>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CompressionEngine.CompressionLevel">
            <summary>
            Compression level to use when compressing files.
            </summary>
            <value>A compression level ranging from minimum to maximum compression,
            or no compression.</value>
        </member>
        <member name="T:Microsoft.Deployment.Compression.CompressionLevel">
            <summary>
            Specifies the compression level ranging from minimum compresion to
            maximum compression, or no compression at all.
            </summary>
            <remarks>
            Although only four values are enumerated, any integral value between
            <see cref="F:Microsoft.Deployment.Compression.CompressionLevel.Min"/> and <see cref="F:Microsoft.Deployment.Compression.CompressionLevel.Max"/> can also be used.
            </remarks>
        </member>
        <member name="F:Microsoft.Deployment.Compression.CompressionLevel.None">
            <summary>Do not compress files, only store.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.CompressionLevel.Min">
            <summary>Minimum compression; fastest.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.CompressionLevel.Normal">
            <summary>A compromize between speed and compression efficiency.</summary>
        </member>
        <member name="F:Microsoft.Deployment.Compression.CompressionLevel.Max">
            <summary>Maximum compression; slowest.</summary>
        </member>
        <member name="T:Microsoft.Deployment.Compression.CargoStream">
            <summary>
            Wraps a source stream and carries additional items that are disposed when the stream is closed.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.#ctor(System.IO.Stream,System.IDisposable[])">
            <summary>
            Creates a new a cargo stream.
            </summary>
            <param name="source">source of the stream</param>
            <param name="cargo">List of additional items that are disposed when the stream is closed.
            The order of the list is the order in which the items are disposed.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.Flush">
            <summary>
            Flushes the source stream.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.SetLength(System.Int64)">
            <summary>
            Sets the length of the source stream.
            </summary>
            <param name="value">The desired length of the stream in bytes.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.Close">
            <summary>
            Closes the source stream and also closes the additional objects that are carried.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads from the source stream.
            </summary>
            <param name="buffer">An array of bytes. When this method returns, the buffer
            contains the specified byte array with the values between offset and
            (offset + count - 1) replaced by the bytes read from the source.</param>
            <param name="offset">The zero-based byte offset in buffer at which to begin
            storing the data read from the stream.</param>
            <param name="count">The maximum number of bytes to be read from the stream.</param>
            <returns>The total number of bytes read into the buffer. This can be less
            than the number of bytes requested if that many bytes are not currently available,
            or zero (0) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes to the source stream.
            </summary>
            <param name="buffer">An array of bytes. This method copies count
            bytes from buffer to the stream.</param>
            <param name="offset">The zero-based byte offset in buffer at which
            to begin copying bytes to the stream.</param>
            <param name="count">The number of bytes to be written to the stream.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.CargoStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Changes the position of the source stream.
            </summary>
            <param name="offset">A byte offset relative to the origin parameter.</param>
            <param name="origin">A value of type SeekOrigin indicating the reference
            point used to obtain the new position.</param>
            <returns>The new position within the stream.</returns>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.Source">
            <summary>
            Gets the source stream of the cargo stream.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.Cargo">
            <summary>
            Gets the list of additional items that are disposed when the stream is closed.
            The order of the list is the order in which the items are disposed. The contents can be modified any time.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.CanRead">
            <summary>
            Gets a value indicating whether the source stream supports reading.
            </summary>
            <value>true if the stream supports reading; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.CanWrite">
            <summary>
            Gets a value indicating whether the source stream supports writing.
            </summary>
            <value>true if the stream supports writing; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.CanSeek">
            <summary>
            Gets a value indicating whether the source stream supports seeking.
            </summary>
            <value>true if the stream supports seeking; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.Length">
            <summary>
            Gets the length of the source stream.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.CargoStream.Position">
            <summary>
            Gets or sets the position of the source stream.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.Compression.DuplicateStream">
            <summary>
            Duplicates a source stream by maintaining a separate position.
            </summary>
            <remarks>
            WARNING: duplicate streams are not thread-safe with respect to each other or the original stream.
            If multiple threads use duplicate copies of the same stream, they must synchronize for any operations.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.#ctor(System.IO.Stream)">
            <summary>
            Creates a new duplicate of a stream.
            </summary>
            <param name="source">source of the duplicate</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.OriginalStream(System.IO.Stream)">
            <summary>
            Retrieves the original stream from a possible duplicate stream.
            </summary>
            <param name="stream">Possible duplicate stream.</param>
            <returns>If the stream is a DuplicateStream, returns
            the duplicate's source; otherwise returns the same stream.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.Flush">
            <summary>
            Flushes the source stream.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.SetLength(System.Int64)">
            <summary>
            Sets the length of the source stream.
            </summary>
            <param name="value">The desired length of the stream in bytes.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.Close">
            <summary>
            Closes the underlying stream, effectively closing ALL duplicates.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads from the source stream while maintaining a separate position
            and not impacting the source stream's position.
            </summary>
            <param name="buffer">An array of bytes. When this method returns, the buffer
            contains the specified byte array with the values between offset and
            (offset + count - 1) replaced by the bytes read from the current source.</param>
            <param name="offset">The zero-based byte offset in buffer at which to begin
            storing the data read from the current stream.</param>
            <param name="count">The maximum number of bytes to be read from the current stream.</param>
            <returns>The total number of bytes read into the buffer. This can be less
            than the number of bytes requested if that many bytes are not currently available,
            or zero (0) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes to the source stream while maintaining a separate position
            and not impacting the source stream's position.
            </summary>
            <param name="buffer">An array of bytes. This method copies count
            bytes from buffer to the current stream.</param>
            <param name="offset">The zero-based byte offset in buffer at which
            to begin copying bytes to the current stream.</param>
            <param name="count">The number of bytes to be written to the
            current stream.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.DuplicateStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Changes the position of this stream without impacting the
            source stream's position.
            </summary>
            <param name="offset">A byte offset relative to the origin parameter.</param>
            <param name="origin">A value of type SeekOrigin indicating the reference
            point used to obtain the new position.</param>
            <returns>The new position within the current stream.</returns>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.Source">
            <summary>
            Gets the original stream that was used to create the duplicate.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.CanRead">
            <summary>
            Gets a value indicating whether the source stream supports reading.
            </summary>
            <value>true if the stream supports reading; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.CanWrite">
            <summary>
            Gets a value indicating whether the source stream supports writing.
            </summary>
            <value>true if the stream supports writing; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.CanSeek">
            <summary>
            Gets a value indicating whether the source stream supports seeking.
            </summary>
            <value>true if the stream supports seeking; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.Length">
            <summary>
            Gets the length of the source stream.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.DuplicateStream.Position">
            <summary>
            Gets or sets the position of the current stream,
            ignoring the position of the source stream.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.Compression.OffsetStream">
            <summary>
            Wraps a source stream and offsets all read/write/seek calls by a given value.
            </summary>
            <remarks>
            This class is used to trick archive an packing or unpacking process
            into reading or writing at an offset into a file, primarily for
            self-extracting packages.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.#ctor(System.IO.Stream,System.Int64)">
            <summary>
            Creates a new OffsetStream instance from a source stream
            and using a specified offset.
            </summary>
            <param name="source">Underlying stream for which all calls will be offset.</param>
            <param name="offset">Positive or negative number of bytes to offset.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a sequence of bytes from the source stream and advances
            the position within the stream by the number of bytes read.
            </summary>
            <param name="buffer">An array of bytes. When this method returns, the buffer
            contains the specified byte array with the values between offset and
            (offset + count - 1) replaced by the bytes read from the current source.</param>
            <param name="offset">The zero-based byte offset in buffer at which to begin
            storing the data read from the current stream.</param>
            <param name="count">The maximum number of bytes to be read from the current stream.</param>
            <returns>The total number of bytes read into the buffer. This can be less
            than the number of bytes requested if that many bytes are not currently available,
            or zero (0) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes a sequence of bytes to the source stream and advances the
            current position within this stream by the number of bytes written.
            </summary>
            <param name="buffer">An array of bytes. This method copies count
            bytes from buffer to the current stream.</param>
            <param name="offset">The zero-based byte offset in buffer at which
            to begin copying bytes to the current stream.</param>
            <param name="count">The number of bytes to be written to the
            current stream.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.ReadByte">
            <summary>
            Reads a byte from the stream and advances the position within the
            source stream by one byte, or returns -1 if at the end of the stream.
            </summary>
            <returns>The unsigned byte cast to an Int32, or -1 if at the
            end of the stream.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.WriteByte(System.Byte)">
            <summary>
            Writes a byte to the current position in the source stream and
            advances the position within the stream by one byte.
            </summary>
            <param name="value">The byte to write to the stream.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.Flush">
            <summary>
            Flushes the source stream.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Sets the position within the current stream, which is
            equal to the position within the source stream minus the offset.
            </summary>
            <param name="offset">A byte offset relative to the origin parameter.</param>
            <param name="origin">A value of type SeekOrigin indicating
            the reference point used to obtain the new position.</param>
            <returns>The new position within the current stream.</returns>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.SetLength(System.Int64)">
            <summary>
            Sets the effective length of the stream, which is equal to
            the length of the source stream minus the offset.
            </summary>
            <param name="value">The desired length of the
            current stream in bytes.</param>
        </member>
        <member name="M:Microsoft.Deployment.Compression.OffsetStream.Close">
            <summary>
            Closes the underlying stream.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.Source">
            <summary>
            Gets the underlying stream that this OffsetStream calls into.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.Offset">
            <summary>
            Gets the number of bytes to offset all calls before
            redirecting to the underlying stream.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.CanRead">
            <summary>
            Gets a value indicating whether the source stream supports reading.
            </summary>
            <value>true if the stream supports reading; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.CanWrite">
            <summary>
            Gets a value indicating whether the source stream supports writing.
            </summary>
            <value>true if the stream supports writing; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.CanSeek">
            <summary>
            Gets a value indicating whether the source stream supports seeking.
            </summary>
            <value>true if the stream supports seeking; otherwise, false.</value>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.Length">
            <summary>
            Gets the effective length of the stream, which is equal to
            the length of the source stream minus the offset.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.Compression.OffsetStream.Position">
            <summary>
            Gets or sets the effective position of the stream, which
            is equal to the position of the source stream minus the offset.
            </summary>
        </member>
    </members>
</doc>
