PSF (Package Support Framework)Package Support Framework

Il Package Support Framework (PSF) è un kit open source che consente di applicare correzioni a un'applicazione win32 esistente quando non si ha accesso al codice sorgente, in modo che possa essere eseguita in un contenitore MSIX.The Package Support Framework is an open source kit that helps you apply fixes to your existing win32 application when you don't have access to the source code, so that it can run in an MSIX container. PSF consente di seguire le procedure consigliate degli ambienti di runtime moderni per le app.The Package Support Framework helps your application follow the best practices of the modern runtime environment.

Di seguito sono indicati alcuni esempi comuni in cui PSF può risultare utile:Here are some common examples where you can find the Package Support Framework useful:

  • L'app che hai avviato non riesce a trovare alcune DLL.Your app can't find some DLLs when launched. Potrebbe essere necessario impostare la directory di lavoro corrente.You may need to set your current working directory. Puoi ottenere informazioni sulla directory di lavoro corrente necessaria nel collegamento originale prima di eseguire la conversione in MSIX.You can learn about the required current working directory in the original shortcut before you converted to MSIX.
  • L'app esegue operazioni di scrittura nella cartella di installazione.The app writes into the install folder. In genere, te ne accorgi dagli errori di accesso negato in Process Monitor.You will typically see it by "Access Denied" errors in Process Monitor.
  • L'app deve passare i parametri all'eseguibile in fase di avvio.Your app needs to pass parameters to the executable on launch. Altre informazioni su come identificare questo problema sono disponibili qui, mentre altre informazioni sulle configurazioni disponibili sono reperibili qui.You can learn more about how to identify this issue here and learn more about the available configurations here.

Per creare il Package Support Framework abbiamo utilizzato la tecnologia Detours, un framework open source sviluppato da Microsoft Research (MSR) che semplifica il reindirizzamento e l'hook delle API.To create the Package Support Framework, we leveraged the Detours technology which is an open source framework developed by Microsoft Research (MSR) and helps with API redirection and hooking.

Questo framework è leggero e open source e puoi usarlo per risolvere rapidamente i problemi dell'applicazione.This framework is open source, lightweight, and you can use it to address application issues quickly. Ti offre inoltre l'opportunità di consultarti con una community di utenti in tutto il mondo e sfruttare le competenze condivise.It also gives you the opportunity to consult with the community around the globe, and to build on top of the investments of others.

Per una guida dettagliata, vedi Applicare le correzioni di runtime a un pacchetto MSIX usando il Package Support Framework.For a step-by-step guide, see Apply runtime fixes to an MSIX package by using the Package Support Framework.

Breve panoramica sul Package Support FrameworkA quick look inside of the Package Support Framework

Il Package Support Framework contiene un file eseguibile, una DLL del gestore runtime e un set di correzioni di runtime.The Package Support Framework contains an executable, a runtime manager DLL, and a set of runtime fixes.

PSF (Package Support Framework)

Ecco come funziona.Here's how it works. Si crea un file di configurazione che specifica le correzioni che si vogliono apportare all'applicazione.You'll create a configuration file that specifies the fixes that you want to apply to your application. Quindi, si modifica il pacchetto in modo che punti al file eseguibile di avvio del Package Support Framework (PSF).Then, you'll modify your package to point to the Package Support Framework (PSF) launcher executable file.

Quando gli utenti avviano l'applicazione, il primo eseguibile che viene lanciato è quello di avvio del Package Support Framework.When users start your application, the Package Support Framework launcher is the first executable that runs. Legge il file di configurazione e inserisce le correzioni di runtime e la DLL del gestore runtime nel processo dell'applicazione.It reads your configuration file and injects the runtime fixes and the runtime manager DLL into the application process. Il gestore runtime applica la correzione quando è necessario per l'esecuzione dell'applicazione all'interno di un contenitore MSIX.The runtime manager applies the fix when it's needed by the application to run inside of an MSIX container.

Inserimento DLL del Package Support Framework

Introduzione all'uso di Package Support FrameworkGet started using the Package Support Framework

Dopo aver creato un pacchetto per l'applicazione, installala, eseguila e osservane il comportamento.After you create a package for your application, install and run it, and observe its behavior. Potrebbero essere visualizzati messaggi di errore, utili per identificare un problema di compatibilità.You might receive error messages that can help you identify a compatibility issue. Puoi anche usare Process Monitor per identificare i problemi.You can also use Process Monitor to identify issues.

Dopo avere individuato un problema, controlla se nella pagina di GitHub è disponibile una correzione.After you find an issue, you can check our GitHub page for a fix. Se ne trovi una, puoi applicarla al pacchetto.If you find one, you can apply it to your package. Questa guida dettagliata illustra come eseguire l'operazione.Our step-by-step guide shows you how to do this. Inoltre, illustra come usare il debugger di Visual Studio per esaminare il codice dell'applicazione e verificare che la correzione funzioni e abbia risolto il problema di compatibilità.It will also show you how to use the Visual Studio debugger to step through your application and verify that the fix is working and that it has resolved the compatibility issue.

Se non trovi una correzione di runtime per il tuo problema, puoi crearne una.If you can't find a runtime fix that addresses your issue, you can create one. A scopo, devi identificare le chiamate di funzione che hanno esito negativo quando l'applicazione viene eseguita in un contenitore MSIX.To do that, you'll identify which function calls fail when your application runs in an MSIX container. Quindi, devi creare funzioni sostitutive da far chiamare dal gestore runtime.Then, you can create replacement functions that you'd like the runtime manager to call instead. Questo offre la possibilità di sostituire l'implementazione di una funzione con un comportamento conforme alle regole dell'ambiente di runtime moderno.This gives you an opportunity to replace the implementation of a function with behavior that conforms to the rules of the modern runtime environment.

Package Support Framework può essere usato anche per eseguire script in grado di personalizzare dinamicamente un'applicazione per l'ambiente utente.You can also use the Package Support Framework to run scripts to customize an application for the user environment dynamically. Per altre informazioni, vedi questo articolo.For more information, see this article.

LimitazioniLimitations

Il Package Support Framework non supporta gli override del Registro di sistema.The Package Support Framework does not support registry overrides. È progettato per risolvere i problemi di runtime.It is designed to resolve run time issues.

Dati e telemetriaData and telemetry

Package Support Framework include strumenti di telemetria che raccolgono i dati di utilizzo e li inviano a Microsoft per contribuire al miglioramento di prodotti e servizi.The Package Support Framework includes telemetry that collects usage data and sends it to Microsoft to help improve our products and services. Per altre informazioni, leggere l'informativa sulla privacy di Microsoft.Read Microsoft's privacy statement to learn more. I dati, tuttavia, vengono raccolti solo se vengono soddisfatte entrambe le seguenti condizioni:However, data will be collected only when both of the following conditions are met:

  • I file binari di Package Support Framework vengono usati dal pacchetto NuGet in un computer Windows 10.The Package Support Framework binaries are used from the NuGet package on a Windows 10 computer.
  • L'utente ha abilitato la raccolta di dati nel computer.The user has enabled collection of data on the computer.

Il pacchetto NuGet contiene file binari firmati e raccoglie i dati di utilizzo dal computer.The NuGet package contains signed binaries and will collect usage data from the computer. I dati di telemetria non vengono raccolti se i file binari vengono compilati localmente tramite la clonazione del repository o il download diretto.Telemetry is not collected when the binaries are built locally by cloning the repo or downloading the binaries directly.