Starten Windows App mit Parametern

Untersuchung

Einige Windows App-Startprogramm im Startmenü erfordern die Verwendung von Parametern, die an die ausführbare Datei übergeben werden müssen, wenn sie die Windows starten. Um dies zu erreichen, müssen wir zuerst das Startfeld identifizieren, das den Parameter erfordert, bevor wir die Windows-App in das Paketunterstützungsframework integrieren.

Identifizieren Windows App Startprogramm Parameteranforderung

  1. Installieren Sie Windows-App auf einem Testcomputer.

  2. Öffnen Sie Windows Startmenü.

  3. Suchen Sie im Startmenü Windows App-Startprogramm, und wählen Sie sie aus.

  4. Wenn die App gestartet wird, gibt es keine Probleme (testen Sie alle zugeordneten Windows App-Startmenüs).

  5. Deinstallieren Sie Windows-App auf dem Testcomputer.

  6. Installieren Sie die Anwendung mithilfe des Win32-Installationsmediums auf Ihrem Testcomputer.

  7. Öffnen Sie Windows Startmenü.

  8. Suchen Sie im Startmenü mit der rechten Maustaste Windows App, und klicken Sie darauf.

  9. Wählen Sie im >> Dropdownmenü Weitere Dateispeicherort öffnen aus.

  10. Klicken Sie mit der rechten Maustaste auf die erste zugeordnete Anwendungsverknüpfung (wiederholen Sie die nächsten drei Schritte für alle zugehörigen Anwendungsverknüpfungen).

  11. Wählen Sie im Dropdownmenü Eigenschaften aus.

  12. Überprüfen Sie den Wert im Textfeld rechts neben Ziel. Wenn nach dem Pfad der Anwendungsdatei ein Parameter aufgeführt ist, wird in dieser App ein Beispiel für das Dateieigenschaftsfenster mit Parameter im Ziel angezeigt.

  13. Zeichnen Sie den Parameterwert für die zukünftige Verwendung auf.

Lösung

Windows Apps leiten bestimmte Verzeichnisse, die mit der Anwendung verknüpft sind, an den Windows App-Containerordner um. Wenn eine Anwendung versucht, in den Windows App-Container zu schreiben, wird ein Fehler ausgelöst, und der Schreibfehler tritt auf.

Führen Sie die folgenden vier Schritte aus, um das Problem zu beheben, dass die Windows-App nicht in den Windows-App-Container schreiben kann:

  1. Stage the Windows App to a local directory (Stufen der Windows-App in ein lokales Verzeichnis)
  2. Erstellen der Config.jsund Injizieren der erforderlichen PSF-Dateien
  3. Aktualisieren der Windows AppxManifest-Datei
  4. Erneutes Packen und Signieren der Windows-App

Die obigen Schritte bieten Anleitungen, indem Sie den Inhalt der Windows-App in ein lokales gestufiges Verzeichnis extrahieren, die PSF-Fixupdateien in das gestufene Windows App-Verzeichnis einjizieren, die Anwendung Startprogramm so konfigurieren, dass sie auf das PSF-Startfeld verweisen, und anschließend das PSF-config.jsin der Datei konfigurieren, um das PSF-Startfeld an die App umzuleiten, die das Arbeitsverzeichnis anknappt.

Herunterladen und Installieren der erforderlichen Tools

Dieser Prozess führt Sie durch den Abruf und die Verwendung der folgenden Tools:

  • NuGet Clienttool
  • Framework zur Paketunterstützung (Package Support Framework, PSF)
  • Windows 10 SDK (neueste Version)
  • SysInternals-Prozessmonitor

Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung zum Herunterladen und Installieren der erforderlichen Tools.

  1. Laden Sie die neueste Version (nicht als Vorschauversion) des NuGet-Clienttools herunter,und speichern Sie dienuget.exe im C:\PSF\nuget Ordner .

  2. Laden Sie das Paketunterstützungsframework mit nuget herunter, indem Sie Folgendes in einem Administrative PowerShell-Fenster ausführen:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Laden Sie das Windows 10 Software Development Toolkit (Win 10 SDK) herunter, und installieren Sie es.

    1. Laden Sie das Win 10 SDK herunter.
    2. Führen Sie denwinsdksetup.exe aus, der im vorherigen Schritt heruntergeladen wurde.
    3. Wählen Sie die Schaltfläche Weiter aus.
    4. Wählen Sie nur die folgenden drei Features für die Installation aus:
      • Windows SDK-Signierungstools für Desktop-Apps
      • Windows SDK für UWP-C++-Apps
      • Windwos SDK für die Lokalisierung von UWP-Apps
    5. Wählen Sie die Schaltfläche Installieren aus.
    6. Wählen Sie die Schaltfläche OK aus.

Stage the Windows App

Durch Staging der Windows-App extrahieren/entpacken wir den Inhalt der Windows-App in ein lokales Verzeichnis. Nachdem die Windows-App am Stagingspeicherort entpackt wurde, können PSF-Fixupdateien eingefügt werden, um unerwünschte Erfahrungen zu korrigieren.

  1. Öffnen Sie ein Administratives PowerShell-Fenster.

  2. Legen Sie die folgenden Variablen für Ihre spezifische App-Datei fest, und Windows 10 SDK-Version:

    $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. Entpacken Sie Windows App in den Stagingordner, indem Sie das folgende PowerShell-Cmdlet ausführen:

    ## 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"
    

Erstellen und Injizieren der erforderlichen PSF-Dateien

Um Korrekturmaßnahmen auf die Windows-App anzuwenden, muss ein config.js in der Datei erstellt und mit Informationen über die fehlerhafte Windows-App Startprogramm bereitgestellt werden. Wenn es mehrere Windows App-Starter gibt, die Probleme haben, kannconfig.jsDatei mit mehreren Einträgen aktualisiert werden.

Nach dem Aktualisieren der config.jsin der Datei müssen dieconfig.jsin der Datei und unterstützende PSF-Fixupdateien in das Stammverzeichnis des Windows App-Pakets verschoben werden.

  1. Öffnen Visual Studio Code (VS Code) oder einen anderen Text-Editor.

  2. Erstellen Sie eine neue Datei, indem Sie das Menü Datei am oberen VS Code und dann im Dropdownmenü Neue Datei auswählen.

  3. Speichern Sie die Datei config.js unter , indem Sie oben im Fenster VS Code datei und dann im Dropdownmenü Speichern auswählen. Navigieren Sie im Fenster Speichern unter zum Windows App Staging-Verzeichnis (C:\PSF\Staging\PSFSampleApp), und legen Sie den Dateinamen auf config.json fest. Wählen Sie die Schaltfläche Speichern aus.

  4. Kopieren Sie den folgenden Code in den neu erstelltenconfig.jsin der Datei .

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Öffnen Sie die gestagte Windows App AppxManifest-Datei im Stagingordner der Windows-App (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml), indem Sie VS Code oder einen anderen Text-Editor verwenden.

    <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. Legen Sie den Wert in derconfig.jsauf den gleichen Wert fest, den Sie im feld Applications.Application.ID derAppxManifest.xmlapplications.id finden.
    Bild, das den Speicherort der ID in der AppxManifest-Datei umkreist.

  7. Legen Sie den Wert in derconfig.jsauf fest, um den relativen Pfad zur Anwendung imApplications.Application.Exeausschneidbaren Feld derAppxManifest.xmlapplications.executable zu verwenden.
    Bild, das den Speicherort der ausführbaren Datei in der AppxManifest-Datei umkreist.

  8. Legen Sie applications.arguments den Wert in derconfig.jsauf fest, um mit dem Argument zu übereinstimmen, das zum Starten der Anwendung verwendet wird. Sehen Sie sich den aufgezeichneten Wert aus dem letzten Schritt des Leitfadens Investigation - Identifying Windows App Startprogramm Parameter Requirement an.

  9. Legen Sie den Wert in derconfig.jsauf fest, um den relativen Ordnerpfad im feldApplications.Application.Exeausschneidbar der Datei applications.workingdirectoryAppxManifest.xml.
    Bild, das den Speicherort des Arbeitsverzeichnisses in der AppxManifest-Datei umkreist.

  10. Speichern Sie den aktualisiertenconfig.jsin der Datei.

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. Kopieren Sie die folgenden vier Dateien aus dem Package Support Framework basierend auf der ausführbaren Anwendungsarchitektur in das Stammverzeichnis der Windows App. Die folgenden Dateien befinden sich im .\Microsoft.PackageSupportFramework. \bin.

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

Aktualisieren von AppxManifest

Nach dem Erstellen und Aktualisieren desconfig.jsin der Datei muss dieAppxManifest.xmlder Windows-App für jede Windows-App Startprogramm aktualisiert werden, die in derconfig.js auf enthalten war. Die Anwendungen von AppxManifest müssen nun auf diePSFLauncher.exe anwendungsarchitektur zugeordneten Anwendungen.

  1. Öffnen Sie den Datei-Explorer, und navigieren Sie zum Ordner Gestagtete MSIX-App (C:\PSF\Staging\PSFSampleApp).

  2. Klicken Sie mit der rechten Maustaste aufAppxManifest.xml, und wählen Sie Öffnen mit-Code aus dem Dropdownmenü aus (optional können Sie mit einem anderen Text-Editor öffnen).

  3. Aktualisieren Sie AppxManifest.xml Datei mit den folgenden Informationen:

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

Erneutes Packen der Anwendung

Alle Korrekturen wurden angewendet, nun kann die Windows-App erneut in eine MSIX gepackt und mit einem Codesignaturzertifikat signiert werden.

  1. Öffnen Sie ein Administratives PowerShell-Fenster.

  2. Legen Sie die folgenden Variablen fest:

    $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. Packen Sie die Windows-App erneut aus dem Stagingordner, indem Sie das folgende PowerShell-Cmdlet ausführen:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Signieren Sie die Windows-App, indem Sie das folgende PowerShell-Cmdlet ausführen:

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