Personalizzare le app aziendali con i pacchetti di modificaCustomize your Enterprise apps with modification packages

La possibilità di personalizzare l'esperienza di un'applicazione è importante, specialmente per le aziende.The ability to customize an application's experience is important, especially for enterprises. Abbiamo parlato con i professionisti IT e sappiamo che la personalizzazione delle applicazioni per soddisfare le esigenze degli utenti è essenziale per il lavoro richiesto per il passaggio a 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. Quando si personalizzano le applicazioni assemblate con MSI, è bene comprendere che i professionisti IT devono acquisire il pacchetto dagli sviluppatori e ricreare il pacchetto del programma di installazione con la personalizzazione in base alle proprie esigenze.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. Si tratta di un impegno costoso per le aziende.This is a costly effort for enterprises. In futuro, è necessario separare la personalizzazione e l'applicazione principale in modo che la ricreazione del pacchetto non sia più necessaria.Moving forward, we want to decouple the customization and the main application so that re-packaging is no longer needed. Ciò garantisce che le aziende ottengano gli aggiornamenti più recenti dagli sviluppatori mantenendo al tempo stesso il controllo delle proprie personalizzazioni.This ensures that enterprises get the latest updates from developers while still maintaining control of their customizations.

In Windows 10, versione 1809, è stato introdotto un nuovo tipo di pacchetto di MSIX denominato pacchetto di modifica.In Windows 10, version 1809, we introduced a new type of MSIX package called a modification package. I pacchetti di modifica sono pacchetti MSIX che archiviano le personalizzazioni.Modification packages are MSIX packages that store customizations. I pacchetti di modifica possono essere anche plug-in e componenti aggiuntivi che potrebbero non avere un punto di attivazione.Modification packages can also be plugins/add-ons that may not have an activation point. I professionisti IT possono utilizzare questa funzionalità per modificare in modo flessibile i contenitori MSIX in modo che le applicazioni vengano sovrapposte dalle personalizzazioni aziendali.IT professionals can use this feature to flexibly change MSIX containers so that applications are overlaid by their enterprise's customizations.

Come funzionaHow it works

I pacchetti di modifica sono progettati per le aziende che non sono proprietari del codice dell'applicazione e hanno solo il programma di installazione.Modification packages are designed for enterprises that do not own the code of the application and only have the installer. È possibile creare un pacchetto di modifica usando la versione più recente dello strumento per la creazione di pacchetti MSIX (per Windows 10 versione 1809 o successiva).You can create a modification package by using the latest version of the MSIX packaging tool (for Windows 10 version 1809 or later). Se si ha il codice per l'applicazione, è possibile creare un'estensione dell' appin alternativa.If you have the code for the application, you can alternatively create an app extension.

Se si vuole creare un pacchetto di modifica con un'associazione rigorosa all'app principale, è possibile dichiarare l'app principale come dipendenza nel manifesto del pacchetto di modifica.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>

Nell'esempio seguente viene illustrato come specificare un certificato o un server di pubblicazione diverso.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>

Si tratta di una configurazione semplice se la relazione tra il pacchetto di modifica e il pacchetto principale è uno-a-uno.This is a simple configuration if the relationship between the modification package and main package is one-to-one. Le personalizzazioni tipiche spesso richiedono chiavi del registro di sistema in HKEY_CURRENT_USER o HKEY_CURRENT_USERCLASS.Typical customizations often require registry keys under HKEY_CURRENT_USER or HKEY_CURRENT_USERCLASS. All'interno del pacchetto MSIX sono disponibili file User. dat e userclass. dat per acquisire le chiavi del registro di sistema.Inside our MSIX package we have User.dat and Userclass.dat files to capture the registry keys. È necessario creare User. dat se sono necessarie chiavi del registro di sistema in HKCU\Software * (proprio come Registry. dat viene usato per 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*). Usare userclass. dat se sono necessarie le chiavi in HKCU\Sofware\Classes * .Use Userclass.dat if you need keys under HKCU\Sofware\Classes*.

Ecco i modi tipici per creare un file con estensione dat:Here are the typical ways to create a .dat file:

  • Usare regedit per creare un file.Use Regedit to create a file. Creare un'hive in regedit e inserire le chiavi necessarie.Create a hive in Regedit and insert the necessary keys. Fare clic con il pulsante destro del mouse su Esporta e Salva come file hive.Than right click, export and save-as hive file. Assicurarsi di denominare il file User. dat o userclass. datMake sure to name the file either User.dat or Userclass.dat

  • Usare un'API per creare i file necessari.Use an API to create necessary files. Per salvare un file con estensione dat, è possibile usare la funzione ORSaveHive .You can use the ORSaveHive function to save a .dat file. Assicurarsi di denominare il file etere User. dat o userclass. datMake sure to name the file ether User.dat or Userclass.dat

Dopo aver apportato le modifiche necessarie, è possibile creare il pacchetto di modifica come qualsiasi altro pacchetto di MSIX.After you’ve made the necessary changes, you can create the modification package like any other MSIX package. È quindi possibile distribuire il pacchetto con la configurazione della distribuzione corrente.Then you can deploy the package with the current deployment set-up. Quando si riavvia l'app principale, è possibile visualizzare le modifiche apportate dal pacchetto di modifica.When you relaunch your main app, you can see the changes that the modification package has made. Se si sceglie di rimuovere il pacchetto di modifica, l'app principale tornerà a uno stato senza il pacchetto di modifica.If you choose to remove the modification package, your main app will revert to a state without the modification package.

Scoprire quali pacchetti di modifica sono installati nel dispositivoFind out what modification packages are installed on your device

Con PowerShell è possibile visualizzare i pacchetti di modifica installati usando il comando seguente.Using PowerShell, you can see installed modification packages using the following command.

Get-AppPackage -PackageTypeFilter Optional

Pacchetti di modifica in Windows 10, versione 1809Modification packages on Windows 10, version 1809

In Windows 10, versione 1809, i pacchetti di modifica possono includere le configurazioni necessarie per l'impostazione nel registro di sistema, in modo che il pacchetto principale venga eseguito come previsto.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. Il che significa che l'applicazione principale sfrutta il registro di sistema per verificare se esiste un plug-in.Meaning your main application leverages the registry to view whether a plug-in exists. Quando si distribuiscono il pacchetto principale e il pacchetto di modifica, in fase di esecuzione l'applicazione esaminerà il registro virtuale sia del pacchetto principale, sia del pacchetto di modifica.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.

Tieni presente che il pacchetto principale può usare il registro virtuale per eseguire le operazioni seguenti:Note that your main package may be using the VREG to do the following things:

  • Visualizzazione della posizione in cui caricare il file (DLL) del plug-in.Viewing where to load the file (the DLL) of the plug-in. In tal caso, assicurati che il file sia compreso nel pacchetto.If this is the case, then ensure that the file is part of the package. In questo modo, il pacchetto principale può accedere al file in fase di esecuzione.By doing this, main package is able to access the file at runtime.
  • Verificare la posizione in cui recuperare il valore delle chiavi del registro virtuale.Viewing where to see the value of the VREG keys. Il pacchetto principale potrebbe cercare l'esistenza di un valore nel registro virtuale.Your main package may be looking for a value to exist in the VREG. Quando crei il pacchetto di modifica, manualmente o usando l'apposito strumento, assicurati che il valore sia corretto.When you create your modification package either by hand or using our tool, ensure that the value is correct.

Pacchetti di modifica in Windows 10, versione 1903 e successiveModification packages on Windows 10, version 1903, and later

In Windows 10 versione 1903 sono state aggiunte le funzionalità seguenti.The following features were added to Windows 10, version 1903.

Aggiornamento del manifestoManifest update

È stato aggiunto il supporto per l'elemento seguente al manifesto del pacchetto di modifica MSIX.We’ve added support for the following element to the MSIX modification package’s manifest.

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

Per garantire il funzionamento dei pacchetti di modifica nella versione 1903 o successiva, il manifesto del pacchetto di modifica deve includere questo elemento.To ensure that modification packages work in version 1903 or later, the modification package's manifest must include this element. L'operazione verrà eseguita automaticamente se crei il pacchetto di modifica MSIX usando la versione di gennaio di MSIX Packaging Tool.This will be done for you if you package your MSIX modification package using the January release of the MSIX packaging tool. Se hai convertito un pacchetto usando lo strumento prima del rilascio di questa versione, puoi modificare il pacchetto esistente nello strumento per aggiungere il nuovo 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. Inoltre, se gli utenti installano il pacchetto di modifica, riceveranno l'avviso che il pacchetto può modificare l'applicazione principale.In addition, if users install the modification package, they will be alerted that the package may modify the main application.

Se si usa un pacchetto di modifica creato prima della versione 1903, è necessario modificare il manifesto del pacchetto per aggiornare l' MaxVersionTested attributo a 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" />

Creare un pacchetto di modifica usando MSIX Packaging ToolCreate a modification package using the MSIX Packaging Tool

Puoi creare un pacchetto di modifica con MSIX Packaging Tool:You can create a modification package with the MSIX Packaging Tool:

  • Specifica il pacchetto principale.Specify the main package. Assicurati che la versione MSIX del pacchetto principale sia disponibile nel computer in cui esegui la conversione.Be sure to have the MSIX version of your main package available on your machine that you are converting on. In caso contrario, ti verrà chiesto di specificare manualmente le informazioni principali sull'applicazione e sull'editore.If not than we will ask you to manually provide the publisher and main application information. Anche alcune personalizzazioni richiedono che l'applicazione principale sia installata nel computer.Also some customization require that your main application is installed on your machine. Creazione pacchetto di modifica in MSIX Packaging ToolModification Package MPT

  • Modifica il pacchetto dopo la conversione usando l'editor pacchetti.Modify the package once it has gone through conversion using the package editor. In alcuni casi, il pacchetto principale richiede che nel registro virtuale del pacchetto di modifica siano presenti determinati valori.There may be a case where the main package requires your modification package to have certain values in their VREG. È lì che devi intervenire e modificare il pacchetto in modo appropriato.This is where you would go and edit the package appropriately.

Creare un pacchetto di modifica usando MakeAppx.exeCreate a modification package using MakeAppx.exe

È possibile creare manualmente un pacchetto di modifica usando lo strumento MakeAppX.exe incluso in Windows 10 SDK.You can create a modification package manually by using the MakeAppX.exe tool that is included in the Windows 10 SDK.

  • Specifica il pacchetto principale nel manifesto.In the manifest, specify the main package. Includi l'editor e il nome del pacchetto principale.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>
    
  • Crea i file Registry.dat, User.dat e Userclass.dat per creare tutte le chiavi del Registro di sistema necessarie per caricare il pacchetto di modifica.Create Registry.dat, User.dat and Userclass.dat to create whatever registry keys are needed to load your modification package. Questo è solo necessario se l'applicazione principale deve accedere a chiavi del Registro di sistema personalizzate.This is only required if you need your main application to view custom registry keys. Tieni presente che, poiché tutto viene eseguito all'interno di un contenitore, in fase di runtime il registro virtuale del pacchetto principale e del pacchetto di modifica verranno uniti, in modo che il pacchetto principale possa visualizzare il registro virtuale del pacchetto di modifica.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.

Questo processo supporta anche plug-in e personalizzazioni del file system, purché l'eseguibile dell'applicazione principale non si trovi in un file system virtuale (VFS).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). Questo si garantisce che il pacchetto principale otterrà l'intero VFS pacchetto principale e del pacchetto di modifica.This is to ensure that the main package will get all the VFS of the main package and the modification package.