Package Support Framework - Correzione della directory di lavoro

Analisi

Windows Le app reindirizzano directory specifiche correlate all'applicazione alla Windows contenitore app. Se un'applicazione crea una sottocartella ( ) come parte dell'installazione e successivamente chiama questa sottocartella, non riuscirà a trovare la directory perché C:\Program Files\Vendor\subfolder non esiste.

Usando Package Support Framework (PSF), è possibile a livello di pacchetto Windows app per risolvere il problema. Prima di tutto, è necessario identificare l'errore e i percorsi di directory richiesti dall'app.

Acquisire l'errore Windows'app

Il filtro dei risultati è un passaggio facoltativo che semplifica la visualizzazione degli errori correlati all'applicazione. A tale scopo, verranno create due regole di filtro. Il primo include un filtro per il nome del processo dell'applicazione e il secondo è un'inclusione di tutti i risultati che non hanno esito positivo.

  1. Scaricare ed estrarre SysInternals Process Monitor nella directory C:\PSF\ProcessMonitor.
  2. Aprire Windows Explorer e passare alla cartella di Monitoraggio processo SysInternals estratta
  3. Fare doppio clic sul file SysInternals Process Monitor (procmon.exe) avviando l'app.
  4. Se richiesto dal controllo dell'account utente, selezionare il pulsante Sì.
  5. Nella finestra Filtro monitoraggio processo selezionare il primo menu a discesa con etichetta Architettura.
  6. Selezionare Nome processo dal menu a discesa.
  7. Nel menu a discesa successivo verificare che sia impostato con il valore di .
  8. Nel campo di testo digitare il nome del processo dell'app (esempio: PSFSample.exe). Esempio di filtro di Monitoraggio processi Windows con nome app
  9. Fare clic sul pulsante Aggiungi.
  10. Nella finestra Filtro monitoraggio processo selezionare il primo menu a discesa con l'etichetta Nome processo.
  11. Selezionare Result (Risultato) dal menu a discesa.
  12. Nel menu a discesa successivo selezionarlo e selezionare non è nel menu a discesa.
  13. Nel campo di testo digitare: SUCCESS. Esempio di filtro di Monitoraggio processi Windows con risultato
  14. Fare clic sul pulsante Aggiungi.
  15. Selezionare il pulsante OK.
  16. avviare l Windows App, attivare l'errore e chiudere l Windows App.

Esaminare i log degli errori Windows'app

Dopo aver acquisito Windows processi dell'app, sarà necessario eseguire un'analisi dei risultati per identificare se l'errore è correlato alla directory di lavoro.

  1. Esaminare i risultati di SysInternals Process Monitor, cercando gli errori descritti nella tabella precedente.
  2. Se i risultati mostrano un risultato "Nome non trovato", con i dettagli "Accesso desiderato: ..." per l'app specifica che ha come destinazione una directory esterna a "C:\Programmi\WindowsApps \ ... \ " (come illustrato nell'immagine seguente), quindi è stato identificato un errore correlato alla directory di lavoro, usare l'articolo SUPPORTO PSF - Accesso al file system per indicazioni su come applicare la correzione di PSF all'app. Visualizza il messaggio di errore visualizzato in SysInternals Process Monitor per la mancata scrittura nella directory.

Risoluzione

Windows Le app reindirizzano directory specifiche correlate all'applicazione alla Windows contenitore app. Se un'applicazione crea una sottocartella ( ) come parte dell'installazione e successivamente chiama questa sottocartella, non riuscirà a trovare la directory perché C:\Program Files\Vendor\subfolder non esiste.

Per risolvere il problema relativo all'app Windows che fa riferimento a una directory di lavoro non corretta, è necessario seguire i quattro passaggi seguenti:

  1. Eseguire lo stage dell Windows app in una directory locale
  2. Creare il Config.jssu e inserire i file PSF necessari
  3. Aggiornare il Windows App AppxManifest
  4. Ripacchetto e firma l'app Windows app

I passaggi precedenti forniscono indicazioni tramite l'estrazione del contenuto dell'app Windows in una directory locale a fasi, l'inserimento dei file di correzione psf nella directory dell'app Windows di gestione temporanea, la configurazione dell'utilità di avvio delle applicazioni in modo che punti all'utilità di avvio di PSF e quindi la configurazione del config.jsPSF nel file per reindirizzare l'utilità di avvio di PSF all'app specificando la directory di lavoro.

Scaricare e installare gli strumenti necessari

Questo processo consente di recuperare e utilizzare gli strumenti seguenti:

  • NuGet Strumento client
  • PSF (Package Support Framework)
  • Windows 10 SDK (versione più recente)
  • Monitoraggio processi SysInternals

Di seguito vengono fornite istruzioni dettagliate sul download e l'installazione degli strumenti necessari.

  1. Scaricare la versione più recente (non in anteprima) dello strumento client NuGete salvare ilnuget.exe nella C:\PSF\nuget cartella .

  2. Scaricare Package Support Framework con Nuget eseguendo quanto segue da una finestra di PowerShell amministrativa:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Scaricare e installare il Windows 10 Software Development Toolkit (Win 10 SDK).

    1. Scaricare Win 10 SDK.
    2. Eseguire il winsdksetup.exe scaricato nel passaggio precedente.
    3. Selezionare il pulsante Avanti.
    4. Selezionare solo le tre funzionalità seguenti per l'installazione:
      • Windows Strumenti di firma SDK per le app desktop
      • Windows SDK per app C++ UWP
      • Localizzazione di Windwos SDK per app UWP
    5. Selezionare il pulsante Installa.
    6. Selezionare il pulsante OK.

Creare una fase dell Windows app

Con la gestione temporanea Windows app, il contenuto dell'app Windows verrà estratto o decompresso in una directory locale. Dopo che l Windows app è stata decompressa nel percorso di staging, è possibile inserire i file di correzione psf correggendo eventuali esperienze indesiderate.

  1. Aprire una finestra di PowerShell amministrativa.

  2. Impostare le variabili seguenti per il file dell'app specifico e Windows 10 SDK:

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp.msix"         ## Path to the MSIX App Installer
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gwmi Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. Decomprimere l Windows app nella cartella di staging eseguendo il cmdlet di PowerShell seguente:

    ## Sets the directory to the Windows 10 SDK
    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    
    ## Unpackages the Windows App to the staging folder
    .\makeappx.exe unpack /p "$AppPath" /d "$StagingFolder"
    

Creare e inserire i file PSF necessari

Per applicare azioni correttive all'app Windows, è necessario creare un config.js su file e fornire informazioni sull'utilità di avvio app Windows che ha esito negativo. Se si verificano Windows più app di avvio app in cui si verificano problemi,config.jsfile può essere aggiornato con più voci.

Dopo aver aggiornato ilconfig.js su file, il config.js nel file e i file di correzione PSF di supporto devono quindi essere spostati nella radice del pacchetto dell'app Windows.

  1. Aprire Visual Studio Code (VS Code) o qualsiasi altro editor di testo.

  2. Creare un nuovo file selezionando il menu File nella parte superiore del VS Code, selezionando Nuovo file dal menu a discesa.

  3. Salvare il file comeconfig.js in , selezionando il menu File nella parte superiore della finestra VS Code, selezionando Salva dal menu a discesa. Nella finestra Salva con nome passare alla directory di staging dell'app Windows (C:\PSF\Staging\PSFSampleApp) e impostare Nome file su config.json . Fare clic sul pulsante Salva.

  4. Copiare il codice seguente nella nuovaconfig.js file.

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "workingDirectory": ""
            }
        ],
        "processes": [
            {
                "executable": ""
            }
        ]
    }
    
  5. Aprire il file appxManifest Windows di gestione temporanea dell'app che si trova nella cartella di staging dell'app Windows (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) usando VS Code o un altro editor di testo.

    <Applications>
        <Application Id="PSFSAMPLE" Executable="VFS\ProgramFilesX64\PS Sample App\PSFSample.exe" EntryPoint="Windows.FullTrustApplication">
        <uap:VisualElements BackgroundColor="transparent" DisplayName="PSFSample" Square150x150Logo="Assets\StoreLogo.png" Square44x44Logo="Assets\StoreLogo.png" Description="PSFSample">
            <uap:DefaultTile Wide310x150Logo="Assets\StoreLogo.png" Square310x310Logo="Assets\StoreLogo.png" Square71x71Logo="Assets\StoreLogo.png" />
        </uap:VisualElements>
        </Application>
    </Applications>
    
  6. Copiare il valore nel campo ID che si trova nel file AppxManifest.xml che si trova in nel campo ID applicazioniconfig.jsPackage.Applications.Application file. Immagine che circonda il percorso dell'ID all'interno del file AppxManifest.

  7. Copiare il percorso relativo al pacchetto dal campo Eseguibile che si trova nel file AppxManifest.xml disponibile in nel campo Eseguibile applicazioni nellaconfig.jsPackage.Applications.Application su file. Immagine che circonda il percorso del file eseguibile all'interno del file AppxManifest.

  8. Copiare il percorso padre relativo al pacchetto dal campo Eseguibile disponibile nel file AppxManifest.xml che si trova in nel campo Directory di lavoro applicazioni nellaconfig.jsPackage.Applications.Application sul file. Immagine che circonda il percorso della directory di lavoro all'interno del file AppxManifest.

  9. Copiare il nome dell'eseguibile dal campo Eseguibile disponibile nel file AppxManifest.xml disponibile in nel campo Eseguibile dei processiconfig.jsPackage.Applications.Application file. Immagine che circonda il percorso del file eseguibile del processo all'interno del file AppxManifest.

  10. Salvare il file config.jsaggiornato.

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "workingDirectory": "VFS/ProgramFilesX64/PS Sample App/"
            }
        ],
        "processes": [
            {
            "executable": "PSFSample"
            }
        ]
    }
    
  11. Copiare i tre file seguenti da Package Support Framework in base all'architettura eseguibile dell'applicazione nella radice dell'app Windows di gestione delle fasi. I file seguenti si trovano all'interno di .\Microsoft.PackageSupportFramework. \bin.

    Applicazione (x64) Applicazione (x86)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Aggiornare AppxManifest

Dopo aver creato e aggiornato il config.js su file, il AppxManifest.xml dell'app Windows deve essere aggiornato per ogni icona di avvio app Windows inclusa nell'config.js in. Le applicazioni di AppxManifest devono ora avere come destinazione ilPSFLauncher.exe associato all'architettura delle applicazioni.

  1. Aprire Esplora file e passare alla cartella App MSIX con gestione temporanea (C:\PSF\Staging\PSFSampleApp).

  2. Fare clic con il pulsanteAppxManifest.xml e selezionare Apri con Code dal menu a discesa (facoltativamente, è possibile aprire con un altro editor di testo).

  3. Aggiornare il AppxManifest.xml file con le informazioni seguenti:

    <Package ...>
    ...
    <Applications>
        <Application Id="PSFSample"
                    Executable="PSFLauncher32.exe"
                    EntryPoint="Windows.FullTrustApplication">
        ...
        </Application>
    </Applications>
    </Package>
    

Creare nuovamente il pacchetto dell'applicazione

Tutte le correzioni sono state applicate, ora l'app Windows può essere nuovamente in pacchetto in un file MSIX e firmata usando un certificato di firma del codice.

  1. Aprire una finestra di PowerShell amministrativa.

  2. Impostare le variabili seguenti:

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp_Updated.msix" ## Path to the MSIX App Installer
    $CodeSigningCert  = "C:\PSF\Cert\CodeSigningCertificate.pfx"     ## Path to your code signing certificate
    $CodeSigningPass  = "<Password>"                                 ## Password used by the code signing certificate
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gwmi Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. Repack the Windows App from the staging folder by running the following PowerShell cmdlet ::Repack the Windows App from the staging folder by running the following PowerShell cmdlet:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Firmare l Windows App eseguendo il cmdlet di PowerShell seguente:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath