Personalizar seus aplicativos Enterprise com pacotes de modificação

A capacidade de personalizar a experiência de um aplicativo é importante, especialmente para empresas. Falamos com profissionais de TI e sabemos que personalizar aplicativos para atender às necessidades do usuário é essencial para o esforço de migrar para Windows 10. Ao personalizar aplicativos empacotados usando MSI, é bem entendido que os profissionais de TI devem adquirir o pacote dos desenvolvedores e empacotar novamente o instalador com a personalização para atender às suas necessidades. Esse é um esforço caro para as empresas. Seguindo em frente, queremos desacoplar a personalização e o aplicativo principal para que o reemplamento não seja mais necessário. Isso garante que as empresas obtenham as atualizações mais recentes dos desenvolvedores enquanto ainda mantêm o controle de suas personalizações.

Em Windows 10, versão 1809, introduzimos um novo tipo de pacote MSIX chamado pacote de modificação. Pacotes de modificação são pacotes MSIX que armazenam personalizações. Os pacotes de modificação também podem ser plug-ins/complementos que podem não ter um ponto de ativação. Os profissionais de TI podem usar esse recurso para alterar flexívelmente os contêineres MSIX para que os aplicativos sejam sobrepostos pelas personalizações da empresa.

Como ele funciona

Os pacotes de modificação são projetados para empresas que não possuem o código do aplicativo e têm apenas o instalador. Você pode criar um pacote de modificação usando a versão mais recente da ferramenta de empacotamento MSIX (para Windows 10 versão 1809 ou posterior). Se você tiver o código para o aplicativo, você poderá, como alternativa, criar uma extensão de aplicativo.

Se você quiser criar um pacote de modificação que tenha uma associação estrita ao aplicativo principal, poderá declarar o aplicativo principal como uma dependência no manifesto do pacote de modificação.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App"/>
</Dependencies>

O exemplo a seguir demonstra como especificar um certificado ou editor diferente.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App" Publisher="CN=Contoso, C=US" />
</Dependencies>

Essa é uma configuração simples se a relação entre o pacote de modificação e o pacote principal for de um para um. As personalizações típicas geralmente exigem chaves do Registro em HKEY_CURRENT_USER ou HKEY_CURRENT_USERCLASS. Dentro do nosso pacote MSIX, temos arquivos User.dat e Userclass.dat para capturar as chaves do Registro. Você precisará criar User.dat se precisar de chaves do Registro em HKCU\Software* (assim como Registry.dat é usado para HKLM\Software*). Use Userclass.dat se precisar de chaves em HKCU\Sofware\Classes*.

Aqui estão as maneiras típicas de criar um arquivo .dat:

  • Use Regedit para criar um arquivo. Crie um hive no Regedit e insira as chaves necessárias. Do que clicar com o botão direito do mouse, exportar e salvar como arquivo hive. Certifique-se de nomear o arquivo User.dat ou Userclass.dat

  • Use uma API para criar arquivos necessários. Você pode usar a função ORSaveHive para salvar um arquivo .dat. Certifique-se de nomear o arquivo ether User.dat ou Userclass.dat

Depois de fazer as alterações necessárias, você pode criar o pacote de modificação como qualquer outro pacote MSIX. Em seguida, você pode implantar o pacote com a configuração de implantação atual. Ao relançar seu aplicativo principal, você pode ver as alterações feitas pelo pacote de modificação. Se você optar por remover o pacote de modificação, seu aplicativo principal será revertido para um estado sem o pacote de modificação.

Descubra quais pacotes de modificação estão instalados em seu dispositivo

Usando o PowerShell, você pode ver pacotes de modificação instalados usando o comando a seguir.

Get-AppPackage -PackageTypeFilter Optional

Pacotes de modificação no Windows 10, versão 1809

Em Windows 10, versão 1809, os pacotes de modificação podem incluir configurações necessárias para serem definidas no registro, de modo que o pacote principal seja executado conforme o esperado. O que significa que seu aplicativo principal aproveita o registro para exibir se existe um plug-in. Quando você implantar o pacote principal e o pacote de modificação, em runtime, o aplicativo exibirá o VREG (Registro virtual) do pacote principal e do pacote de modificação.

Observe que o pacote principal pode estar usando o VREG para fazer o seguinte:

  • Exibindo onde carregar o arquivo (a DLL) do plug-in. Se esse for o caso, verifique se o arquivo faz parte do pacote. Ao fazer isso, o pacote principal pode acessar o arquivo em runtime.
  • Exibir em que local o valor das chaves do VREG pode ser visto. O pacote principal pode estar procurando um valor que existe no VREG. Ao criar o pacote de modificação manualmente ou usando nossa ferramenta, verifique se o valor está correto.

Pacotes de modificação em Windows 10, versão 1903 e posterior

Os recursos a seguir foram adicionados ao Windows 10, versão 1903.

Atualização do manifesto

Adicionamos suporte no elemento a seguir ao manifesto do pacote de modificação MSIX.

<Properties>
   <rescap6:ModificationPackage>true</rescap6:ModificationPackage>
</Properties>

Para garantir que os pacotes de modificação funcionem na versão 1903 ou posterior, o manifesto do pacote de modificação precisarão incluir esse elemento. Isso será feito para você se empacotar o pacote de modificação MSIX usando a versão de janeiro da Ferramenta de Empacotamento MSIX. Se você converter um pacote usando nossa ferramenta anterior à versão, poderá editar o pacote existente na ferramenta para adicionar esse novo elemento. Além disso, se os usuários instalarem o pacote de modificação, eles serão alertados de que o pacote poderá modificar o aplicativo principal.

Se você estiver usando um pacote de modificação criado antes da versão 1903, será necessário editar o manifesto do pacote para atualizar o MaxVersionTested atributo para 10.0.18362.0.

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="10.0.18362.0" />

Criar um pacote de modificação usando a Ferramenta de Empacotamento MSIX

Crie um pacote de modificação com a Ferramenta de Empacotamento MSIX:

  • Especifique o pacote principal. Verifique se você tem a versão do MSIX do pacote principal disponível no computador no qual está sendo feita a conversão. Caos contrário, solicitamos que você forneça manualmente as informações do fornecedor e do aplicativo principal. Além disso, uma personalização exige a instalação do aplicativo principal no computador. Modification Package MPT

  • Modifique o pacote depois que ele passar pela conversão usando o editor de pacote. Poderá haver casos em que o pacote principal exija que o pacote de modificação tenha certos valores no VREG. É nesse momento que você pode acessar e editar o pacote de forma adequada.

Criar um pacote de modificação usando o MakeAppx.exe

Você pode criar um pacote de modificação manualmente usando a ferramenta MakeAppX.exe incluída no SDK do Windows 10.

  • No manifesto, especifique o pacote principal. Inclua o fornecedor e o nome do pacote principal.

    <Dependencies>
      <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="12.0.0.0"/>
      <uap4:MainPackageDependency Name="HeadTrax" Publisher="CN=Contoso Software, O=Contoso Corporation, C=US" />
    </Dependencies>
    
  • Crie Registry.dat, User.dat e Userclass.dat para criar as chaves do Registro necessárias para carregar o pacote de modificação. Isso só será necessário se você precisar que o aplicativo principal exiba chaves do Registro personalizadas. Lembre-se de que, como tudo está sendo executado dentro de um contêiner, em runtime, o Registro virtual do pacote principal e do pacote de modificação será mesclado, de modo que o pacote principal possa exibir o Registro virtual dos pacotes de modificação.

Esse processo também dá suporte aos plug-ins e às personalizações do sistema de arquivos, desde que o executável do aplicativo principal não esteja em um VFS (sistema de arquivos virtual). Isso serve para garantir que o pacote principal obtenha todo o VFS do pacote principal e do pacote de modificação.

Instalar pacotes de modificação no computador

A instalação de pacotes de modificação no computador segue outras convenções de instalação. Vale a pena observar que talvez você queira usar o parâmetro -OptionalPackagePath ao instalar o pacote.

Resolução de conflitos

No caso de vários pacotes de modificação tentando alterar o mesmo valor, o conflito é resolvido considerando a ordem alfabética dos nomes dos pacotes de modificação.