Compartilhar via


Método IAppxFactory3::CreatePackageReader2 (appxpackaging.h)

Importante

Algumas informações estão relacionadas a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.

Cria um leitor de pacote somente leitura com base no conteúdo fornecido por um IStream, com um parâmetro opcional para especificar o resumo esperado para o pacote. Esse método não valida a assinatura digital.

Sintaxe

HRESULT CreatePackageReader2(
  [in]          IStream            *inputStream,
  [in,optional] LPCWSTR            expectedDigest,
  [out]         IAppxPackageReader **packageReader
);

Parâmetros

[in] inputStream

O fluxo de entrada que entrega o pacote para leitura. O fluxo deve dar suporte a ISequentialStream::Read, IStream::Seek e IStream::Stat. Se esses métodos falharem, seus códigos de erro poderão ser passados para e retornados por esse método.

[in,optional] expectedDigest

Um LPCWSTR que contém o resumo esperado, uma representação com hash do arquivo de pacote.

[out] packageReader

O leitor de pacote criado.

Retornar valor

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro que inclui, mas não se limita, aqueles na tabela a seguir.

Código de retorno Descrição
APPX_E_INTERLEAVING_NOT_ALLOWED O arquivo ZIP entregue por inputStream é um pacote OPC intercalado.
APPX_E_RELATIONSHIPS_NOT_ALLOWED O pacote OPC entregue por inputStream contém relações de pacote/parte OPC.
APPX_E_MISSING_REQUIRED_FILE O pacote OPC entregue por inputStream não tem um manifesto, um mapa de blocos ou um arquivo de assinatura quando um catálogo de CI está presente.
APPX_E_INVALID_MANIFEST O manifesto do pacote não é válido.
APPX_E_INVALID_BLOCKMAP O mapa de blocos do pacote não é válido, a lista de arquivos no diretório central zip não corresponde à lista de arquivos no mapa de blocos ou o tamanho dos arquivos listados no diretório central zip não corresponde aos tamanhos de arquivo e bloco listados no mapa de blocos.
APPX_E_DIGEST_MISMATCH O resumo do objeto não corresponde ao resumo fornecido em expectedDigest.

Comentários

O método CreatePackageReader2 recupera imediatamente os elementos de volume do pacote do aplicativo por meio do fluxo e valida seu conteúdo. Esse método só terá êxito se o pacote OPC e todos os elementos de volume (incluindo diretório central ZIP, manifesto, [Content_Types].xml e mapa de blocos) forem válidos.

Obtenha a cadeia de caracteres de resumo para o parâmetro expecteDigest chamando IAppxDigestProvider::GetDigest.

Exemplos

Para obter um exemplo, consulte Início Rápido: Extrair conteúdo do pacote do aplicativo e Início Rápido: Ler informações de manifesto do pacote do aplicativo.

Requisitos

Requisito Valor
Cabeçalho appxpackaging.h