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 passar para o Windows 10. Ao personalizar aplicativos empacotados usando a MSI, é bem compreendido que os profissionais de TI devem adquirir o pacote dos desenvolvedores e reembalhá-lo com a personalização para atender às suas necessidades. Esse é um esforço caro para empresas. Avançando, queremos desacoplar a personalização e o aplicativo principal para que o reembalamento não seja mais necessário. Isso garante que as empresas recebam as atualizações mais recentes dos desenvolvedores, mantendo o controle de suas personalizações.

No Windows 10, versão 1809, introduzimos um novo tipo de pacote MSIX chamado de 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 os contêineres MSIX de forma flexível para que os aplicativos sejam sobressalados 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, 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 publicador 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 a relação entre o pacote de modificação e o pacote principal for um-para-um. As personalizações típicas geralmente exigem chaves do Registro HKEY_CURRENT_USER ou HKEY_CURRENT_USERCLASS. Dentro de 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. Em vez de clicar com o botão direito do mouse, exporte e salve o arquivo hive. Certifique-se de nomear o arquivo como 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 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 que o pacote de modificação fez. Se você optar por remover o pacote de modificação, o 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 os pacotes de modificação instalados usando o comando a seguir.

Get-AppPackage -PackageTypeFilter Optional

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

No Windows 10, versão 1809, os pacotes de modificação podem incluir as configurações necessárias para serem definidas no Registro, de forma que o pacote principal seja executado conforme o esperado. Isso significa que seu aplicativo principal aproveita o Registro para exibir 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:

  • 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 Windows 10, versão 1903 e posteriores

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 atributo para MaxVersionTested 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. MPT do pacote de modificação

  • 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 aMakeAppX.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. Vale a pena notar que talvez você queira usar o parâmetro -OptionalPackagePath ao instalar o pacote.