Personalizar seus aplicativos empresariais com pacotes de modificação

A capacidade de personalizar a experiência de um aplicativo é importante, especialmente para empresas. Conversamos com profissionais de TI e sabemos que personalizar aplicativos para atender às necessidades de seus usuários é essencial para o esforço de migrar para o Windows 10. Ao personalizar aplicativos que são empacotados usando MSI, entende-se que os profissionais de TI devem adquirir o pacote dos desenvolvedores e reempacotar o instalador com a personalização para atender às suas necessidades. Trata-se de um esforço dispendioso para as empresas. No futuro, queremos desacoplar a personalização e o aplicativo principal para que o reempacotamento não seja mais necessário. Isso garante que as empresas recebam as atualizações mais recentes dos desenvolvedores e, ao mesmo tempo, mantenham o controle de suas personalizações.

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

Como ele funciona

Os pacotes de modificação são projetados para empresas que não têm o código do aplicativo e só têm 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 tiver o código para o aplicativo, como alternativa, você poderá criar uma extensão de aplicativo.

Se desejar criar um pacote de modificação que tenha uma vinculação estrita ao aplicativo principal, você 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 será uma configuração simples, se o relacionamento o pacote de modificação e o pacote principal for um para um. As personalizações típicas geralmente exigem chaves do Registro em HKEY_CURRENT_USER ou HKEY_CURRENT_USERCLASS. No pacote MSIX, há 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. Clique com o botão direito do mouse, exporte e salve como arquivo de hive. Nomeie o arquivo como User.dat ou Userclass.dat

  • Use uma API para criar os arquivos necessários. Você pode usar a função ORSaveHive para salvar um arquivo .dat. Nomeie o arquivo como 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 reiniciar o 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

No Windows 10, versão 1809, os pacotes de modificação podem incluir configurações necessárias a serem definidas no Registro para que o pacote principal seja executado conforme o esperado. Isso significa que o aplicativo principal utiliza o Registro para ver se um plug-in existe. 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:

  • Exibir 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 no 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 de pacote para atualizar o atributo MaxVersionTested 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

Crie um pacote de modificação manualmente usando a ferramenta MakeAppX.exe que está 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. Observe que convém usar o parâmetro -OptionalPackagePath ao instalar o pacote.

Resolução de conflitos

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