Personalizar seus aplicativos empresariais com pacotes de modificaçãoCustomize your Enterprise apps with modification packages

A capacidade de personalizar a experiência de um aplicativo é importante, especialmente para empresas.The ability to customize an application's experience is important, especially for enterprises. Falamos aos profissionais de ti e sabemos que a personalização de aplicativos para atender às necessidades do usuário é essencial para o esforço de migrar para o Windows 10.We’ve spoken to IT professionals and we know that customizing applications to meet their user's needs is essential to the effort of moving to Windows 10. Ao personalizar aplicativos que são empacotados usando o MSI, é bem compreendido que os profissionais de ti devem adquirir o pacote dos desenvolvedores e reempacotar o instalador com a personalização para atender às suas necessidades.When customizing applications that are packaged using MSI, it is well understood that IT professionals must acquire the package from the developers and re-package the installer with the customization to suit their needs. Esse é um esforço dispendioso para as empresas.This is a costly effort for enterprises. Avançando, queremos desacoplar a personalização e o aplicativo principal para que o reempacotamento não seja mais necessário.Moving forward, we want to decouple the customization and the main application so that re-packaging is no longer needed. Isso garante que as empresas obtenham as atualizações mais recentes dos desenvolvedores e, ao mesmo tempo, mantenham o controle de suas personalizações.This ensures that enterprises get the latest updates from developers while still maintaining control of their customizations.

No Windows 10, versão 1809, apresentamos um novo tipo de pacote MSIX chamado de pacote de modificação.In Windows 10, version 1809, we introduced a new type of MSIX package called a modification package. Os pacotes de modificação são pacotes MSIX que armazenam personalizações.Modification packages are MSIX packages that store customizations. Os pacotes de modificação também podem ser plug-ins/complementos que podem não ter um ponto de ativação.Modification packages can also be plugins/add-ons that may not have an activation point. Os profissionais de ti podem usar esse recurso para alterar de maneira flexível os contêineres de MSIX para que os aplicativos sejam sobrepostos pelas personalizações da sua empresa.IT professionals can use this feature to flexibly change MSIX containers so that applications are overlaid by their enterprise's customizations.

Como ele funcionaHow it works

Os pacotes de modificação são projetados para empresas que não possuem o código do aplicativo e só têm o instalador.Modification packages are designed for enterprises that do not own the code of the application and only have the installer. 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).You can create a modification package by using the latest version of the MSIX packaging tool (for Windows 10 version 1809 or later). Se você tiver o código para o aplicativo, você pode criar uma extensão de aplicativocomo alternativa.If you have the code for the application, you can alternatively create an app extension.

Se desejar criar um pacote de modificação que tenha uma ligação estrita ao aplicativo principal, você poderá declarar o aplicativo principal como uma dependência no manifesto do pacote de modificação.If you want to create a modification package that has a strict binding to the main app, you can declare the main app as a dependency in the modification package’s manifest.

<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.The following example demonstrates how to specify a different certificate or publisher.

<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 um para um.This is a simple configuration if the relationship between the modification package and main package is one-to-one. As personalizações típicas geralmente exigem chaves do registro em HKEY_CURRENT_USER ou HKEY_CURRENT_USERCLASS.Typical customizations often require registry keys under HKEY_CURRENT_USER or HKEY_CURRENT_USERCLASS. Dentro de nosso pacote MSIX temos os arquivos user. dat e userclass. dat para capturar as chaves do registro.Inside our MSIX package we have User.dat and Userclass.dat files to capture the registry keys. Você precisará criar User. dat se precisar de chaves do registro em HKCU\Software * (assim como Registry. dat é usado para HKLM\Software * ).You will need to create User.dat if you need registry keys under HKCU\Software* (just like Registry.dat is used for HKLM\Software*). Use userclass. dat se você precisar de chaves em HKCU\Sofware\Classes * .Use Userclass.dat if you need keys under HKCU\Sofware\Classes*.

Aqui estão as maneiras típicas de criar um arquivo. dat:Here are the typical ways to create a .dat file:

  • Use o regedit para criar um arquivo.Use Regedit to create a file. Crie um Hive no regedit e insira as chaves necessárias.Create a hive in Regedit and insert the necessary keys. Em vez de clicar com o botão direito, exportar e salvar como arquivo do hive.Than right click, export and save-as hive file. Certifique-se de nomear o arquivo como User. dat ou userclass. datMake sure to name the file either User.dat or Userclass.dat

  • Use uma API para criar os arquivos necessários.Use an API to create necessary files. Você pode usar a função ORSaveHive para salvar um arquivo. dat.You can use the ORSaveHive function to save a .dat file. Certifique-se de nomear o arquivo de ether User. dat ou userclass. datMake sure to name the file ether User.dat or Userclass.dat

Depois de fazer as alterações necessárias, você pode criar o pacote de modificação como qualquer outro pacote MSIX.After you’ve made the necessary changes, you can create the modification package like any other MSIX package. Em seguida, você pode implantar o pacote com a configuração de implantação atual.Then you can deploy the package with the current deployment set-up. Ao reiniciar o aplicativo principal, você pode ver as alterações feitas pelo pacote de modificação.When you relaunch your main app, you can see the changes that the modification package has made. Se você optar por remover o pacote de modificação, seu aplicativo principal será revertido para um estado sem o pacote de modificação.If you choose to remove the modification package, your main app will revert to a state without the modification package.

Descubra quais pacotes de modificação estão instalados em seu dispositivoFind out what modification packages are installed on your device

Usando o PowerShell, você pode ver os pacotes de modificação instalados usando o comando a seguir.Using PowerShell, you can see installed modification packages using the following command.

Get-AppPackage -PackageTypeFilter Optional

Pacotes de modificação no Windows 10, versão 1809Modification packages on Windows 10, version 1809

No 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 será executado conforme o esperado.On Windows 10, version 1809, modification packages can include configurations needed to be set in the registry such that the main package will run as expected. O que significa que seu aplicativo principal utiliza o registro para exibir se existe um plug-in.Meaning your main application leverages the registry to view whether a plug-in exists. 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.When you deploy the main package and the modification package, at runtime the application will view the virtual registry (VREG) of both the main package and the modification package.

Observe que o pacote principal pode estar usando o VREG para fazer o seguinte:Note that your main package may be using the VREG to do the following things:

  • Exibindo onde carregar o arquivo (a DLL) do plug-in.Viewing where to load the file (the DLL) of the plug-in. Se esse for o caso, verifique se o arquivo faz parte do pacote.If this is the case, then ensure that the file is part of the package. Ao fazer isso, o pacote principal pode acessar o arquivo em runtime.By doing this, main package is able to access the file at runtime.
  • Exibir em que local o valor das chaves do VREG pode ser visto.Viewing where to see the value of the VREG keys. O pacote principal pode estar procurando um valor que existe no VREG.Your main package may be looking for a value to exist in the VREG. Ao criar o pacote de modificação manualmente ou usando nossa ferramenta, verifique se o valor está correto.When you create your modification package either by hand or using our tool, ensure that the value is correct.

Pacotes de modificação no Windows 10, versão 1903 e posteriorModification packages on Windows 10, version 1903, and later

Os recursos a seguir foram adicionados ao Windows 10, versão 1903.The following features were added to Windows 10, version 1903.

Atualização do manifestoManifest update

Adicionamos suporte no elemento a seguir ao manifesto do pacote de modificação MSIX.We’ve added support for the following element to the MSIX modification package’s manifest.

<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.To ensure that modification packages work in version 1903 or later, the modification package's manifest must include this element. Isso será feito para você se empacotar o pacote de modificação MSIX usando a versão de janeiro da Ferramenta de Empacotamento MSIX.This will be done for you if you package your MSIX modification package using the January release of the MSIX packaging tool. Se você converter um pacote usando nossa ferramenta anterior à versão, poderá editar o pacote existente na ferramenta para adicionar esse novo elemento.If you've converted a package using our tool prior to the release, you can edit your existing package in our tool to add this new element. 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.In addition, if users install the modification package, they will be alerted that the package may modify the main application.

Se você estiver usando um pacote de modificação que foi criado antes da versão 1903, será necessário editar o manifesto do pacote para atualizar o MaxVersionTested atributo para 10.0.18362.0.If you are using a modification package that was created before version 1903, it is necessary to edit the package manifest to update the MaxVersionTested attribute to 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 MSIXCreate a modification package using the MSIX Packaging Tool

Crie um pacote de modificação com a Ferramenta de Empacotamento MSIX:You can create a modification package with the MSIX Packaging Tool:

  • Especifique o pacote principal.Specify the main package. Verifique se você tem a versão do MSIX do pacote principal disponível no computador no qual está sendo feita a conversão.Be sure to have the MSIX version of your main package available on your machine that you are converting on. Caos contrário, solicitamos que você forneça manualmente as informações do fornecedor e do aplicativo principal.If not than we will ask you to manually provide the publisher and main application information. Além disso, uma personalização exige a instalação do aplicativo principal no computador.Also some customization require that your main application is installed on your machine. MPT do pacote de modificaçãoModification Package MPT

  • Modifique o pacote depois que ele passar pela conversão usando o editor de pacote.Modify the package once it has gone through conversion using the package editor. Poderá haver casos em que o pacote principal exija que o pacote de modificação tenha certos valores no VREG.There may be a case where the main package requires your modification package to have certain values in their VREG. É nesse momento que você pode acessar e editar o pacote de forma adequada.This is where you would go and edit the package appropriately.

Criar um pacote de modificação usando o MakeAppx.exeCreate a modification package using MakeAppx.exe

Você pode criar um pacote de modificação manualmente usando a ferramenta de MakeAppX.exe que está incluída no SDK do Windows 10.You can create a modification package manually by using the MakeAppX.exe tool that is included in the Windows 10 SDK.

  • No manifesto, especifique o pacote principal.In the manifest, specify the main package. Inclua o fornecedor e o nome do pacote principal.Include the publisher and the main package name.

    <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.Create Registry.dat, User.dat and Userclass.dat to create whatever registry keys are needed to load your modification package. Isso só será necessário se você precisar que o aplicativo principal exiba chaves do Registro personalizadas.This is only required if you need your main application to view custom registry keys. 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.Remember that since everything is running inside a container, at runtime the main package and the modification package virtual registry will merge such that main package can view the modification packages virtual registry.

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).This process also supports file system plug-ins and customizations, as long as the executable of the main application is not in a virtual file system (VFS). Isso serve para garantir que o pacote principal obtenha todo o VFS do pacote principal e do pacote de modificação.This is to ensure that the main package will get all the VFS of the main package and the modification package.