PackageStore.AddPackage Method (Uri, Package)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Adds a Package to the store.

Namespace:   System.IO.Packaging
Assembly:  PresentationCore (in PresentationCore.dll)

public static void AddPackage(
	Uri uri,
	Package package


Type: System.Uri

The key URI of the package to compare in a PackWebRequest.

Type: System.IO.Packaging.Package

The package to add to the store.

Exception Condition

package is null.


packageUri is an invalid package URI.


A package with the specified packageUri is already in the store.

packageUri defines the package's key URI that is compared when you call PackWebRequest.

If the packageUri matches the Uri for a PackagePart in a PackWebRequest call, the package defined in the PackageStore is used to access the requested part.

If the packageUri does not match the Uri for a PackagePart in a PackWebRequest call, the package with the specified URI is opened to access the requested part.

Security Note   This method demands EnvironmentPermission for all custom Package (non-ZipPackage) types.

The following example shows how to use the AddPackage method.

if (rmi.CryptoProvider.CanDecrypt == true)
    ShowStatus("   Decryption granted.");
    ShowStatus("   CANNOT DECRYPT!");

ShowStatus("   Getting the Package from\n" +
           "      the EncryptedPackage.");
_xpsPackage = ePackage.GetPackage();
if (_xpsPackage == null)
    MessageBox.Show("Unable to get Package.");
    return false;

// Set a PackageStore Uri reference for the encrypted stream.
// ("sdk://packLocation" is a pseudo URI used by
//  PackUriHelper.Create to define the parserContext.BaseURI
//  that XamlReader uses to access the encrypted data stream.)
Uri packageUri = new Uri(@"sdk://packLocation", UriKind.Absolute);
// Add the URI package
PackageStore.AddPackage(packageUri, _xpsPackage);
// Determine the starting part for the package.
PackagePart startingPart = GetPackageStartingPart(_xpsPackage);

// Set the DocViewer.Document property.
ShowStatus("   Opening in DocumentViewer.");
ParserContext parserContext = new ParserContext();
parserContext.BaseUri = PackUriHelper.Create(
                            packageUri, startingPart.Uri);
parserContext.XamlTypeMapper = XamlTypeMapper.DefaultMapper;
DocViewer.Document = XamlReader.Load(
    startingPart.GetStream(), parserContext)
        as IDocumentPaginatorSource;

// Enable document menu controls.
menuFileClose.IsEnabled = true;
menuFilePrint.IsEnabled = true;
menuViewIncreaseZoom.IsEnabled = true;
menuViewDecreaseZoom.IsEnabled = true;

// Give the DocumentViewer focus.

.NET Framework
Available since 3.0
Return to top