Compartilhar via


Integrando aplicativos de gerenciamento com Microsoft 365 Apps instalador click-to-run

Saiba como integrar o instalador Microsoft 365 Apps Clique para Executar com uma solução de gerenciamento de software.

O instalador Microsoft 365 Apps Click-to-Run fornece uma interface COM que permite aos profissionais de TI e às soluções de gerenciamento de software controle programático sobre o gerenciamento de atualizações. Essa interface tem recursos adicionais de gerenciamento além do que é fornecido pela Ferramenta de Implantação do Office.

Observação

Este artigo se aplica aos aplicativos do Office que usam o instalador Click-to-Run.

Integração ao Clique para Executar

Para usar essa interface, um aplicativo de capacidade de gerenciamento invoca a interface COM e chama APIs expostas que se comunicam diretamente com o serviço de instalação Clique para Executar.

Observação

O instalador Clique para Executar do Office pode ser executado na linha de comando com parâmetros que podem controlar o comportamento, conforme documentado em Ferramenta de Implantação do Office para Clique para Executar.

Veja a seguir um diagrama conceitual da interface COM

Um diagrama do uso da interface COM no instalador do Office Click-To-Run.

O instalador Microsoft 365 Apps Click-to-Run implementa uma interface baseada em COM, IUpdateNotify registrada no CLSID CLSID_UpdateNotifyObject.

Essa interface pode ser invocada da seguinte maneira:

hr = CoCreateInstance(CLSID_UpdateNotifyObject, NULL, CLSCTX_ALL,
       IID_IUpdateNotify, 
      (void **)&p); 

A chamada será bem-sucedida se o autor da chamada estiver em execução sob privilégios elevados, pois o programa de instalação Clique para Executar deve ser executado com privilégios elevados.

A interface COM IUpdateNotify expõe três funções assíncronas responsáveis por validar os comandos e parâmetros, bem como agendar a execução com o serviço de instalação Clique para Executar.

HRESULT Download([in] LPWSTR pcwszParameters) // Download update content.
HRESULT Apply([in] LPWSTR pcwszParameters) // Apply update content.
HRESULT Cancel() // Cancel the download action.

Um quarto método, Status, pode ser usado para obter informações sobre o status do último comando executado ou o status do comando em execução no momento (isto é, êxito, falha, códigos de erro detalhados).

HRESULT status([out] _UPDATE_STATUS_REPORT* pUpdateStatusReport) // Get status of current action. 
typedef struct _UPDATE_STATUS_REPORT  
{  
UPDATE_STATUS status;  
UINT error; 
BSTR contentid;  
} UPDATE_STATUS_REPORT;

Há quatro estados em que o serviço de instalação Clique para Executar pode estar durante o seu ciclo de vida, durante o qual os métodos IUpdateNotify podem ser chamados; Reinicializando, Ocioso, Baixando e Aplicando.

Veja a seguir o diagrama de Máquina de Estado da interface COM

Um diagrama de estado para a interface COM.

Observação

Reinicializando: quando o computador está sendo inicializado, há um período em que o serviço instalador Clique para Executar fica indisponível. Uma chamada bem-sucedida ao método Status após uma reinicialização retornará eUPDATE_UNKNOWN.

Ocioso: quando o instalador Clique para Executar estiver no estado ocioso, você poderá chamar:

  • Aplicar: instala o conteúdo anteriormente baixado.

  • Cancelar: Retorna 0x800000e, "Um método foi chamado em um momento inesperado".

  • Baixar: baixa novo conteúdo no cliente para instalação posterior.

  • Status: retorna o resultado da última ação concluída ou uma mensagem de erro se a ação terminou em falha. Se não houver nenhuma ação anterior, Status retornará eUPDATE_UNKNOWN.

Baixando: quando o instalador Clique para Executar estiver no estado baixando, você poderá chamar:

  • Aplicar: retorna um HRESULT com o valor 0x800000e, "Um método foi chamado em um momento inesperado".

  • Cancelar: interrompe o download e remove o conteúdo parcialmente baixado.

  • Download: retorna um HRESULT com o valor 0x800000e, "Um método foi chamado em um momento inesperado".

  • Status: retorna DOWNLOAD_WIP para indicar que o trabalho de download está em andamento.

Aplicando: quando o instalador Clique para Executar estiver no processo de instalação do conteúdo anteriormente baixado:

  • Aplicar: retorna um HRESULT com o valor 0x800000e, "Um método foi chamado em um momento inesperado".

  • Cancelar: Retorna 0x800000e, a ação Aplicar não pode ser cancelada.

  • Download: retorna um HRESULT com o valor 0x800000e, "Um método foi chamado em um momento inesperado".

  • Status: retorna APPLY_WIP para indicar que o trabalho de aplicação está em andamento.

Observação

Uma vez que OfficeC2RCOM é um serviço COM+ e foi dinamicamente carregado, é preciso chamar CoCreateInstance toda vez que você chama um método nessa classe, a fim de garantir a obtenção do resultado esperado. O serviço COM+ tratará de criar uma nova instância, se necessário. Quando um dos métodos é chamado pela primeira vez, COM+ carregará o objeto IUpdateNotify e o executará em uma das instâncias de dllhost.exe. O novo objeto permanecerá ativo por aproximadamente 3 minutos em estado ocioso. Se uma chamada subsequente for feita dentro de três minutos, a contar da última chamada, o objeto IUpdateNotify permanecerá carregado e não será criada uma nova instância. Se nenhuma chamada for feita em três minutos, o objeto IUpdateNotify será descarregado e um novo objeto IUpdateNotify será criado quando a próxima chamada for feita.

Guia de referência da API COM do instalador Clique para Executar

Na seguinte documentação de referência de API:

Aplicar

HRESULT Apply([in] LPWSTR pcwszParameters) // Apply update content.

Parâmetros

  • displaylevel: true para mostrar o status da instalação, incluindo erros, durante o processo de atualização; false para ocultar o status da instalação, incluindo erros, durante o processo de atualização. O padrão é false.

  • forceappshutdown: true para forçar os aplicativos do Office a desligarem imediatamente quando a ação Aplicar for disparada; false para falha, se algum aplicativo do Office estiver em execução. O padrão é false. Veja Comentários para saber mais.

    Se algum aplicativo do Office estiver em execução quando a ação Aplicar for disparada, a ação Aplicar normalmente falha. A passagem forceappshutdown=true para o método Apply fará com que o serviço OfficeClickToRun desligue imediatamente os aplicativos e aplique a atualização. O usuário poderá enfrentar perda de dados nesse caso.

Retornar resultados

Resultado Descrição
S_OK
A ação foi enviada com êxito ao serviço Clique para Executar para execução.
E_ACCESSDENIED
O autor da chamada não está em execução com privilégios elevados.
E_INVALIDARG
Parâmetros inválidos foram passados.
E_ILLEGAL_METHOD_CALL
A ação não é permitida neste momento. Veja Comentários para saber mais.

Comentários

  • Se algum aplicativo do Office estiver em execução quando a ação Aplicar for disparada, a ação Aplicar falhará. A passagem forceappshutdown=true para o método Apply fará com que o serviço OfficeClickToRun desligue imediatamente todos os aplicativos do Office que estão em execução e aplique a atualização. O usuário pode sofrer perda de dados, uma vez que não é solicitado que salve as alterações em documentos abertos.

  • Essa ação poderá ser disparada somente quando o status COM for um dos seguintes:

    • eUPDATE_UNKNOWN

    • eDOWNLOAD_CANCELLED

    • eDOWNLOAD_FAILED

    • eDOWNLOAD_SUCCEEDED

    • eAPPLY_SUCCEEDED

    • eAPPLY_FAILED

  • Se você chamar o método Apply sem baixar o conteúdo antes, o método Apply indicará Êxito, pois ele não detectou nada a ser aplicado e concluiu o processo Apply com êxito.

Cancelar

HRESULT Cancel() // Cancel the download action.

Retornar resultados

Resultado Descrição
S_OK
A ação foi enviada com êxito ao serviço Clique para Executar para execução.
E_ILLEGAL_METHOD_CALL
A ação não é permitida neste momento. Consulte a seção Comentários para obter mais informações

Comentários

  • Esse método poderá ser disparado somente quando o status COM for eDOWNLOAD_WIP. Ele tentará cancelar a ação de download atual. O status COM será alterado para eDOWNLOAD_CANCELLING e, por fim, para eDOWNLOAD_CANCELED. O status COM retornará E_ILLEGAL_METHOD_CALL se disparado em qualquer outro momento.

Baixar

HRESULT Download([in] LPWSTR pcwszParameters) // Download update content.

Parâmetros

  • displaylevel: true para mostrar o status da instalação, incluindo erros, durante o processo de atualização; false para ocultar o status da instalação, incluindo erros, durante o processo de atualização. O padrão é false.
  • updatebaseurl: URL para a fonte alternativa de download.
  • updatetoversion: a versão para a qual atualizar o Office. Defina esse parâmetro se desejar atualizar para um versão mais antiga do que a versão que está atualmente instalada.
  • downloadsource: CLSID da implementação IBackgroundCopyManager personalizada (gerenciador do BITS).
  • contentid: identifica o conteúdo a ser baixado do servidor de conteúdo por meio do gerenciador do BITS personalizado. Esse valor é passado pela interface do BITS para interpretação.

Retornar resultados

Resultado Descrição
S_OK
A ação foi enviada com êxito ao serviço Clique para Executar para execução.
E_ACCESSDENIED
O autor da chamada não está em execução com privilégios elevados.
E_INVALIDARG
Parâmetros inválidos foram passados.
E_ILLEGAL_METHOD_CALL
A ação não é permitida neste momento. Veja Comentários para saber mais.

Comentários

  • Você deve especificar downloadsource e contentid como um par. Caso contrário, o método Baixar retornará um erro E_INVALIDARG.

  • Se o downloadsource, contentid e updatebaseurl for fornecido, updatebaseurl será ignorado.

  • Essa ação poderá ser disparada somente quando o status COM for um dos seguintes:

    • eUPDATE_UNKNOWN

    • eDOWNLOAD_CANCELLED

    • eDOWNLOAD_FAILED

    • eDOWNLOAD_SUCCEEDED

    • eAPPLY_SUCCEEDED

    • eAPPLY_FAILED

  • Se você chamar o método Apply sem o conteúdo baixado anteriormente, o método Apply indicará Êxito, pois ele não detectou nada a ser aplicado e concluiu o processo Apply com êxito.

Exemplos

  • Para baixar o conteúdo do gerenciador do BITS personalizado: chame a função download() passando os seguintes parâmetros:

    "downloadsource=CLSIDofBITSInterface contentid=BITSServerContentIdentifier"
    
  • Para baixar o conteúdo da CDN (Rede de Entrega de Conteúdo do Office): chame a função download() sem especificar os parâmetros downloadsource, contentid ou updatebaseurl .

  • Para baixar o conteúdo de um local personalizado: chame a função download() passando o seguinte parâmetro:

    "updatebaseurl=yourcontentserverurl"
    

Status

typdef struct _UPDATE_STATUS_REPORT
{
    UPDATE_STATUS status;
    UINT error;
    LPCWSTR contentid;
}UPDATE_STATUS_REPORT;
HRESULT status([out] _UPDATE_STATUS_REPORT& pUpdateStatusReport) // Get status of current action

Parâmetros

Parâmetro Descrição
pUpdateStatusReport
Ponteiro para uma estrutura UPDATE_STATUS_REPORT.

Retornar resultados

Resultado Descrição
S_OK
O método Status sempre retorna esse resultado. Inspecione a UPDATE_STATUS_RESULT estrutura para o status da ação atual.

Comentários

  • O campo status do UPDATE_STATUS_REPORT contém o status da ação atual. Um dos seguintes valores de status é retornado:

    typedef enum _UPDATE_STATUS
    {
    eUPDATE_UNKNOWN = 0,
    eDOWNLOAD_PENDING,
    eDOWNLOAD_WIP,
    eDOWNLOAD_CANCELLING,
    eDOWNLOAD_CANCELLED,
    eDOWNLOAD_FAILED,
    eDOWNLOAD_SUCCEEDED,
    eAPPLY_PENDING,
    eAPPLY_WIP,
    eAPPLY_SUCCEEDED,
    eAPPLY_FAILED,
    } UPDATE_STATUS;
    
    
  • Se o último comando resultou em um erro, o campo de erro do UPDATE_STATUS_REPORT contém informações detalhadas sobre o erro. Dois tipos de código de erro são retornados do método Status.

  • Se o erro for menor que UPDATE_ERROR_CODE::eUNKNOWN, o erro será um dos seguintes códigos de erro pré-definidos:

    typedef enum _UPDATE_ERROR_CODE
    {
    eOK = 0,
    eFAILED_UNEXPECTED,
    eTRIGGER_DISABLED,
    ePIPELINE_IN_USE,
    eFAILED_STOP_C2RSERVICE,
    eFAILED_GET_CLIENTUPDATEFOLDER,
    eFAILED_LOCK_PACKAGE_TO_UPDATE,
    eFAILED_CREATE_STREAM_SESSION,
    eFAILED_PUBLISH_WORKING_CONFIGURATION,
    eFAILED_DOWNLOAD_UPGRADE_PACKAGE,
    eFAILED_APPLY_UPGRADE_PACKAGE,
    eFAILED_INITIALIZE_RSOD,
    eFAILED_PUBLISH_RSOD,
    // Keep this one as the last
    eUNKNOWN
    } UPDATE_ERROR_CODE;
    
    

    Se o código de erro de retorno for maior que UPDATE_ERROR_CODE::eUNKNOWN o HRESULT de uma chamada de função com falha. Para extrair a subtração UPDATE_ERROR_CODE::eUNKNOWN HRESULT do valor retornado no campo de erro do UPDATE_STATUS_REPORT.

    A lista completa de valores de status e erro pode ser exibida inspecionando a biblioteca de tipos IUpdateNotify inserida em OfficeC2RCom.dll.

  • O campo contentid é usado para chamadas a Status depois que Baixar tiver sido iniciado e retornar o contentid que foi passado à chamada Baixar. É uma prática recomendada inicializar esse campo como nulo antes chamar o método Status e, em seguida, verificar o valor depois que Status tiver sido retornado. Se o valor ainda for null, isso significa que não há contentid a ser retornado. Se o valor não for null, você precisará liberá-lo com um chamada a SysFreeString(). Veja um trecho de código de como chamar Status após Baixar.

    std::wstring contentID;
    UPDATE_STATUS_REPORT statusReport;
    statusReport.status = eUPDATE_UNKNOWN;
    statusReport.error = eOK;
    statusReport.contentid = NULL;
    hr = p->Status(&statusReport);
    if (statusReport.contentid != NULL)
    {
    contentID = statusReport.contentid;
    SysFreeString(statusReport.contentid);
    }
    wprintf(L"ContentID: %s, Status: %d, LastError: %d", contentID.c_str(), statusReport.status, statusReport.error);
    
    

Resumo da interface IUpdateNotify2

Na versão [16.0.8208.6352] adicionamos uma nova interface IUpdateNotify2 .

  • CLSID_UpdateNotifyObject2, {52C2F9C2-F1AC-4021-BF50-756A5FA8DDFE}

  • Essa interface também hospedava a interface IUpdateNotify original para fornecer compatibilidade com versões anteriores. Isso significa que, ao usar essa interface, você terá acesso a todos os métodos fornecidos na interface UpdateNotifyObject.

  • Novos métodos adicionados a IUpdateNotify2:

    • HRESULT GetBlockingApps([out] BSTR * AppsList). Obtenha a lista de aplicativos de bloqueio de atualizações. Essa chamada retornará os aplicativos do Office em execução que impedirão o processo de atualização de prosseguir.

    • HRESULT GetOfficeDeploymentData([in] int dataType, [in] LPCWSTR pcwszName, [out] BSTR * OfficeData). Obtenha os dados de implantação do Office.

  • Se desejar usar os novos métodos, você precisará garantir:

    • Que a sua versão C2R seja mais nova do que o build acima (> = build fork de junho).

    • O uso de UpdateNotifyObject2, em vez de UpdateNotifyObject para chamar CoCreateInstance.

Se você não usar qualquer um dos métodos novos, não será necessário alterar nada. Todos os métodos existentes funcionarão exatamente da mesma maneira que antes.

Como implantar a interface do BITS

O BITS (Serviço de Transferência Inteligente em Segundo Plano) é um serviço fornecido pela Microsoft para transferir arquivos entre um cliente e um servidor. O BITS é um dos canais que o instalador Clique para Executar do Office pode usar para baixar conteúdo. Por padrão, o instalador Microsoft 365 Apps Click-To-Run usa a implementação interna do BITS do Windows para baixar o conteúdo da CDN.

Ao fornecer uma implementação do BITS personalizado ao método download() da interface IUpdateNotify, seu software de capacidade de gerenciamento pode controlar onde e como o cliente baixa o conteúdo. Uma interface bits personalizada é útil ao fornecer um canal de distribuição de conteúdo personalizado diferente dos canais internos Clique para Executar, como CDN, servidores IIS ou compartilhamentos de arquivos.

O requisito mínimo para uma interface do BITS personalizado trabalhar com o serviço C2R do Office é:

  • Para IBackgroundCopyManager:

    HRESULT _stdcall CreateJob(
                        [in] LPWSTR DisplayName, 
                        [in] BG_JOB_TYPE Type, 
                        [out] GUID* pJobId, 
                        [out] IBackgroundCopyJob** ppJob)
    HRESULT _stdcall GetJob(
                        [in] GUID* jobID, 
                        [out] IBackgroundCopyJob** ppJob)
    HRESULT _stdcall EnumJobs(
                        [in] unsigned long dwFlags, 
                        [out] IEnumBackgroundCopyJobs** ppenum)
    
    
  • Para IBackgroundCopyJob:

    HRESULT _stdcall AddFile(
                        [in] LPWSTR RemoteUrl, 
                        [in] LPWSTR LocalName)
    HRESULT _stdcall Resume()
    HRESULT _stdcall Complete()
    HRESULT _stdcall Cancel();
    HRESULT _stdcall GetState([out] BG_JOB_STATE* pVal);
    HRESULT GetProgress( [out] BG_JOB_PROGRESS *pProgress);
    
    
  • Para IBackgroundCopyJob3:

    HRESULT _stdcall AddFileWithRanges(
                        [in] LPWSTR RemoteUrl, 
                        [in] LPWSTR LocalName,
                        [in] DWORD RangeCount,
                        [in] BG_FILE_RANGE Ranges[])
    
    
  • Para as Addfile funções eAddFileWithRanges, o URL remota está no seguinte formato:

    cmbits://<contentid>/<relative path to target file>
    
    • cmbits é embutido em código e significa o BITS personalizado.

    • <contentid> é o parâmetro contentid para o método Download().

    • <caminho relativo para arquivo de destino> fornece o local e o nome do arquivo para download.

      Por exemplo, se você tiver fornecido um contentid do f732af58-5d86-4299-abe9-7595c35136ef método Download() e o Office C2R quiser baixar o arquivo de táxi de versão, como v32.cab arquivo, ele chamará AddFile() com o seguinte RemoteUrl:

    cmbits://f732af58-5d86-4299-abe9-7595c35136ef/Office/Data/V32.cab
    
  • Para IBackgroundCopyError:

    HRESULT _stdcall GetErrorDescription(
          [in]  DWORD  LanguageId,
          [out] LPWSTR *ppErrorDescription);
    
    
  • Para IBackgroundCopyFile:

    HRESULT _stdcall GetLocalName([out] LPWSTR *ppName); 
    HRESULT _stdcall GetRemoteName([out] LPWSTR *ppName);
    
    

Como automatizar o preparo do conteúdo

Os administradores de TI podem optar por ter clientes da área de trabalho habilitados para receber atualizações automaticamente quando estiverem disponíveis diretamente da CDN ou optarem por controlar a implantação de atualizações disponíveis nos canais de atualização usando a Ferramenta de Implantação do Office ou o Microsoft Endpoint Configuration Manager.

O serviço dá suporte à capacidade das ferramentas de gerenciamento de reconhecer e automatizar o download do conteúdo quando as atualizações são disponibilizadas.

A imagem a seguir é uma visão geral de como baixar uma imagem personalizada

Um diagrama do uso da interface COM no instalador do Office Click-To-Run.

Visão geral de como baixar uma imagem personalizada

No diagrama anterior, você verá que uma nova imagem de Microsoft 365 Apps está disponível na CDN. Junto com a imagem Microsoft 365 Apps, uma API está disponível que tem as informações necessárias para permitir que o software de gerenciabilidade crie diretamente imagens personalizadas substituindo a necessidade de usar a Ferramenta de Implantação do Office.

Uma empresa configura seu WSUS para sincronizar as atualizações de Microsoft 365 Apps. Essas atualizações não contêm a carga real da imagem, mas permitem que o software de capacidade de gerenciamento reconheça quando conteúdo novo está disponível. Em seguida, o software de gerenciabilidade pode ler os metadados Microsoft 365 Apps Atualizar para entender a qual versão do Office a atualização se aplica.

Se a atualização for aplicável, o software de capacidade de gerenciamento pode usar o conteúdo da CDN e a lista de arquivos para criar a imagem personalizada e armazená-la no local do compartilhamento de arquivos que ele está configurado para usar.

Usando a API da lista de arquivos Microsoft 365 Apps

A API da lista de arquivos Microsoft 365 Apps é usada para recuperar os nomes dos arquivos necessários para uma atualização Microsoft 365 Apps específica.

Solicitação HTTP

GET https://clients.config.office.net/releases/v1.0/filelist

Não forneça um corpo de solicitação para esse método.

Nenhuma permissão é necessária para chamar essa API.

Parâmetros de consulta opcionais

Nome Descrição
Canal
Especifica o nome do canal
Opcional – padrão para 'Semestral'
Valores <com suporte /DeployOffice/office-deployment-tool-configuration-options#channel-attribute-part-of-add-element.md>
versão
Especifica a versão de atualização
Opcional – padrão para a versão mais recente disponível para o canal especificado
Arco
Especifica a arquitetura do cliente
Opcional – padrão para 'x64'
Valores com suporte: x64, x86
lid
Especifica os arquivos de idioma a serem incluídos
Opcional – padrão para nenhum
Para especificar vários idiomas, inclua um parâmetro de consulta de tampa para cada idioma
Use o formato do identificador de idioma, ex. 'en-us', 'fr-fr'
alllanguages
Especifica para incluir todos os arquivos de idioma
Opcional – padrão para false

Resposta HTTP

Se for bem-sucedido, esse método retornará um código de resposta de 200 OK e uma coleção de objetos de arquivo no corpo da resposta.

Para criar uma imagem, siga estas etapas:

  1. Chame a API, fornecendo os parâmetros de consulta apropriados para o canal, a versão e a arquitetura da atualização em que você está interessado. Observação: objetos de arquivo com o atributo "lcid": "0" são arquivos neutros de linguagem e devem ser incluídos na imagem.
  2. Construa uma imagem local da CDN iterando através dos objetos de arquivo e copiando os arquivos CDN, ao mesmo tempo em que cria a estrutura da pasta conforme especificado pelo atributo "relativePath" definido para cada um dos objetos de arquivo.

O exemplo a seguir recupera a lista de arquivos para o Canal Atual e a versão 16.0.4229.1004 para 64bit e inclui os arquivos em francês e inglês.

Get https://clients.config.office.net/releases/v1.0/filelist?Channel=Current&Version=16.0.4229.1004&Arch=x64&Lid=fr-fr&Lid=en-US

Verificação de hash de arquivos .dat

As ferramentas de criação de imagem podem verificar a integridade dos arquivos .dat baixados comparando um valor de hash computado com o valor de hash fornecido associado a cada um dos arquivos .dat. A seguir está um exemplo de um objeto de arquivo que especifica valores hashLocation e hashAlgorithm:

{
  "url": "https://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114/office/data/16.0.1234.1001/stream.x64.x-none.dat",
  "name": "stream.x64.x-none.dat",
  "relativePath": "/office/data/16.0.1234.1001/",
  "hashLocation": "s640.cab/stream.x64.x-none.hash",
  "hashAlgorithm": "Sha256",
  "lcid": "0"
},
  • O atributo hashLocation especifica o local de caminho relativo de .cab arquivo que contém o valor de hash. Crie o local do arquivo hash concatenando a URL + relativePath + hashLocation. No seguinte exemplo, o local stream.x64.bg-bg.hash seria:

    https://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/office/data/16.0.4229.1004/s641026.cab/stream.x64.bg-bg.hash 
    
  • O atributo hashAlgorithm especifica qual algoritmo de hash foi usado.

    Para validar a integridade do arquivo stream.x64.bg-bg.dat, abra o stream.x64.bg-bg.hash e leia o valor do HASH, que é a primeira linha do texto no arquivo de hash. Compare-o com o valor do hash calculado (usando o algoritmo de hash especificado) para verificar a integridade do arquivo .dat baixado.

    O exemplo a seguir mostra o código C# para leitura do hash.

      string[] readHashes = System.IO.File.ReadAllLines(tmpFile, Encoding.Unicode);
      string readHash = readHashes.First();
    

Microsoft 365 Apps Atualizações

Todos os Microsoft 365 Apps Atualizações são publicados no Catálogo de Atualizações da Microsoft.

Microsoft 365 Apps Atualizações permitir que o software de gerenciabilidade trate Microsoft 365 Apps Atualizações de maneira muito semelhante a qualquer outra atualização wu com uma exceção; as atualizações do cliente não contêm uma carga real. O Microsoft 365 Apps Atualizações não deve ser instalado em nenhum cliente, mas sim usado para disparar os fluxos de trabalho com o software de gerenciabilidade substituindo o comando de instalação pelo mecanismo de instalação baseado em COM mostrado acima.

A figura a seguir mostra um diagrama do fluxo de trabalho da Atualização de Cliente do Office 365.

Diagrama de fluxo de trabalho para atualizações de cliente O365PP.

Cada Microsoft 365 Apps Atualização publicada inclui metadados sobre a atualização. Esses metadados incluem um parâmetro chamado MoreInfoUrl que pode ser usado para derivar a chamada de API para a API da lista de arquivos para essa atualização específica.

No exemplo a seguir, a API da lista de arquivos está inserida no MoreInfoURL e começa com "ServicePath="

https://go.microsoft.com/fwlink/?LinkId=626090& ; Ver=16.0.12527.21104&Branch=Insiders&Arch=64&XMLVer=1,6&xmlPath=http://officecdn.microsoft.com/pr/wsus/ofl.cab& xmlFile=O365Client_64bit.xml& ServicePath=https://go.microsoft.com/fwlink/?linkid=2190568& Channel=Insiders&Version=16.0.12527.21104&Arch=64&AllLanguages=True

Metadados adicionais para automatização do preparo de conteúdo

API de Descoberta de Versão

A API de descoberta de versão Microsoft 365 Apps é usada para recuperar detalhes de cada uma das atualizações publicadas na CDN junto com os nomes do canal e outros atributos de canal.

Solicitação HTTP

GET [https://clients.config.office.net/releases/v1.0/filelist/channels](https://clients.config.office.net/releases/v1.0/filelist/channels)

Não forneça um corpo de solicitação para esse método.

Nenhuma permissão é necessária para chamar essa API.

Resposta HTTP

Se for bem-sucedido, esse método retornará um código de resposta de 200 OK e uma coleção de objetos de arquivo no corpo da resposta.

SKUs API

A API skus retorna informações úteis para determinar quais produtos estão disponíveis para implantação e manutenção da CDN do Office, juntamente com várias opções para cada um.

Solicitação HTTP

GET [https://clients.config.office.net/releases/v1.0/filelist/skus](https://clients.config.office.net/releases/v1.0/filelist/skus) 

Não forneça um corpo de solicitação para esse método.

Nenhuma permissão é necessária para chamar essa API.

Resposta HTTP

Se for bem-sucedido, esse método retornará um código de resposta de 200 OK e uma coleção de objetos de arquivo no corpo da resposta.