Framework di supporto del pacchetto - Correzione della directory di lavoro

Analisi

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

L'uso di Package Support Framework (PSF), i miglioramenti possono essere apportati al pacchetto app Windows per risolvere questo problema. Prima di tutto, è necessario identificare gli errori e i percorsi di directory richiesti dall'app.

Acquisire l'errore dell'app Windows

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 filtro include 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 esplora Windows e passare alla cartella SysInternals Process Monitor estratta
  3. Fare doppio clic sul file SysInternals Process Monitor (procmon.exe), avviando l'app.
  4. Se richiesto dall'interfaccia utente, selezionare il pulsante .
  5. Nella finestra Filtro monitoraggio processo selezionare il primo menu a discesa etichettato con 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). Example of the Process Monitor Filter Windows with App Name
  9. Fare clic sul pulsante Aggiungi.
  10. Nella finestra Filtro monitoraggio processo selezionare il primo menu a discesa con etichetta Nome processo.
  11. Selezionare Risultato dal menu a discesa.
  12. Nel menu a discesa successivo selezionarlo e selezionarlo non è dal menu a discesa.
  13. Nel tipo di campo di testo: SUCCESS. Example of the Process Monitor Filter Windows with Result
  14. Fare clic sul pulsante Aggiungi.
  15. Selezionare il pulsante Ok .
  16. avviare l'app Windows, attivare l'errore e chiudere l'app Windows.

Esaminare i log degli errori dell'app Windows

Dopo aver acquisito i processi Windows App, i risultati dovranno essere esaminati per identificare se l'errore è correlato alla directory di lavoro.

  1. Esaminare i risultati di SysInternals Process Monitor, cercando errori descritti nella tabella precedente.
  2. Se i risultati mostrano un risultato "Name Not Found", con i dettagli "Accesso desiderato: ..." per l'app specifica destinata a una directory all'esterno dell'articolo "C:\Programmi\WindowsApps\...\" (come illustrato nell'immagine seguente), è stato identificato correttamente un errore correlato alla directory di lavoro, usare l'articolo Supporto PSF - Accesso al filesystem per indicazioni su come applicare la correzione PSF all'app. Displays the error message witnessed in the SysInternals Process Monitor for failure to write to directory.

Risoluzione

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

Per risolvere il problema correlato alla Windows App che fa riferimento a una directory di lavoro non corretta, è necessario seguire i quattro passaggi seguenti:

  1. Eseguire la fase dell'app Windows in una directory locale
  2. Creare i file PSF richiesti e config.json
  3. Aggiornare il file app appxManifest Windows
  4. Ripacchetto e firmare l'app Windows

I passaggi precedenti forniscono indicazioni sull'estrazione del contenuto dell'app Windows in una directory a fasi locale, inserendo i file di correzione PSF nella directory Windows app in fase, configurando il launcher dell'applicazione per puntare al launcher PSF, quindi configurando il file PSF config.json per reindirizzare il launcher PSF all'app che specifica la directory di lavoro.

Scaricare e installare gli strumenti necessari

Questo processo illustra il recupero di e l'utilizzo degli strumenti seguenti:

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

Di seguito verranno fornite indicazioni dettagliate sul download e l'installazione degli strumenti necessari.

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

  2. Scaricare il framework di supporto pacchetti usando Nuget eseguendo quanto segue da una finestra di PowerShell amministrativa:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Scaricare e installare l'Windows 10 Sviluppo software 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:
      • strumenti di firma Windows SDK per app desktop
      • Windows SDK per le app C++ UWP
      • Windwos SDK per la localizzazione di app UWP
    5. Selezionare il pulsante Installa.
    6. Selezionare il pulsante Ok .

Eseguire la fase dell'app Windows

Eseguendo la gestione temporanea dell'app Windows, verrà estratto /decomprimendo il contenuto dell'app Windows in una directory locale. Una volta che l'app Windows è stata decompressa nel percorso di gestione temporanea, i file di correzione PSF possono essere inseriti correggendo eventuali esperienze indesiderate.

  1. Aprire una finestra di PowerShell amministrativa.

  2. Impostare le variabili seguenti destinate al file di app specifico e Windows 10 versione dell'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'app Windows nella cartella di gestione temporanea 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 file PSF necessari

Per applicare azioni correttive all'app Windows, è necessario creare un file config.json e fornire informazioni sul Windows Avvio app che ha esito negativo. Se sono presenti più Windows utilità di avvio delle app che riscontrano problemi, il file config.json può essere aggiornato con più voci.

Dopo aver aggiornato il file config.json, il file config.json e il supporto dei file di correzione PSF 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 come config.json, 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 Windows Gestione temporanea app (C:\PSF\Staging\PSFSampleApp) e impostare il nome file come config.json. Fare clic sul pulsante Salva.

  4. Copiare il codice seguente nel file config.json appena creato.

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "workingDirectory": ""
            }
        ],
        "processes": [
            {
                "executable": ""
            }
        ]
    }
    
  5. Aprire il file App AppxManifest in fase Windows situato nella cartella di gestione temporanea 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 Package.Applications.Application nel campo ID applicazioni nel file config.json . Image circling the location of the ID within the AppxManifest file.

  7. Copiare il percorso relativo del pacchetto dal campo Eseguibile che si trova nel file AppxManifest.xml che si trova nel Package.Applications.Application campo Eseguibile applicazioni nel file config.json. Image circling the location of the executable within the AppxManifest file.

  8. Copiare il percorso padre relativo al pacchetto dal campo Eseguibile che si trova nel file AppxManifest.xml che si trova nel Package.Applications.Application campo Applications WorkingDirectory nel file config.json . Image circling the location of the working directory within the AppxManifest file.

  9. Copiare il nome eseguibile dal campo Eseguibile che si trova nel file AppxManifest.xml che si trova nel Package.Applications.Application campo Elabora eseguibile nel file config.json . Image circling the location of the process executable within the AppxManifest file.

  10. Salvare il file config.json aggiornato.

    {
        "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 in fasi. I file seguenti si trovano all'interno di .\Microsoft.PackageSupportFramework.< Versione>\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 file config.json, è necessario aggiornare laAppxManifest.xmldell'app di Windows per ogni Windows Avvio app incluso nel file config.json. Le applicazioni di AppxManifest devono ora essere destinate alle PSFLauncher.exe associate all'architettura delle applicazioni.

  1. Aprire Esplora file e passare alla cartella App MSIX in fase (C:\PSF\Staging\PSFSampleApp).

  2. Fare clic con il pulsante destro del mouse su AppxManifest.xmle scegliere Apri con codice dal menu a discesa (Facoltativamente, è possibile aprire con un altro editor di testo).

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

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

Ri-pacchetto dell'applicazione

Tutte le correzioni sono state applicate, ora l'app Windows può essere riconfezionata in un MSIX e firmato 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. Ricomprimere l'app Windows dalla cartella di gestione temporanea eseguendo il cmdlet di PowerShell seguente:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Firmare l'app Windows 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