Erstellen einer Anwendungsverknüpfung durch Ausführen eines Skripts mithilfe des Paketunterstützungsframework

In diesem Dokument wird gezeigt, wie Sie Anwendungsverknüpfungen mithilfe des Package Support Framework (PSF) erstellen, die Skripts über das MSIX Packaging Tool und die Contoso Expense WPF-Anwendung ausführen.

contoso expenses

Die Idee besteht darin, die Anwendungsverknüpfung, die im Paket verfügbar ist, über die PSF-Skripts auf den Desktop des Benutzers zu kopieren.

Es gibt einige Dinge zu beachten:

  1. Erstellen Sie eine Verknüpfung nur, wenn sie unbedingt erforderlich sind. Ziel ist es, den Desktop des Benutzers nicht zu überladen.
  2. Die MSIX-Anwendung muss vor dem Erstellen der Verknüpfung installiert werden, damit der MSIX-Anwendungspfad während der Erstellung der Verknüpfung angegeben werden kann.
  3. Gleichzeitig kann sich der MSIX-Anwendungspfad ändern, sobald die Versionsnummer im Installationsordner angegeben ist. Beispiel für den Contoso Expenses-Installationspfad:

C:\Programme\WindowsApps\ContosoExpenses_ 1.0.0.0 _x86__3z09h3y28h0qg

Um zu vermeiden, dass die Anwendungsverknüpfung bei jeder Aktualisierung der Anwendung geändert werden muss, erstellen Sie die Verknüpfung, indem Sie auf AppExecutionAlias verweisen. AppExecutionAlias ermöglicht es ihm, die Anwendung mit dem Wert zu starten, der in der Aliassitzung des Anwendungsmanifests definiert ist, sodass der vollständige Anwendungspfad nicht angegeben werden muss. Definieren Sie daher vor dem Erstellen der Verknüpfung den Alias im Anwendungsmanifest. Andernfalls Windows Explorer den Alias nicht und ermöglicht es uns nicht, die Verknüpfung zu erstellen.

Erstellen des Anwendungsalias

Klicken Sie auf das Menüelement Paketinformationen und dann auf Open File(Datei öffnen), das unten auf der Benutzeroberfläche verfügbar ist, um das Anwendungsmanifest zu bearbeiten:

Öffnen des msix-Manifests

Schließen Sie die folgenden Namespaces ein, die zum Erstellen des Alias verwendet werden:

xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" 

Schließen Sie den Wert uap3 und desktop in das IgnorableNamespaces-Element ein:

IgnorableNamespaces="uap uap3 desktop rescap build"

Schließen Sie den Ausführungsalias der Anwendung nach dem</uap:VisualElements> ein:

  <Extensions>
    <uap3:Extension Category="windows.appExecutionAlias"   
                    Executable="ContosoExpenses\ContosoExpenses.exe"
                    EntryPoint="Windows.FullTrustApplication">
      <uap3:AppExecutionAlias>
        <desktop:ExecutionAlias Alias="contosoexpenses.exe" />
        </uap3:AppExecutionAlias>
      </uap3:Extension>
  </Extensions>

Folgt dem Manifest mit den Änderungen:

Alias erstellen

Speichern und schließen Sie die Manifestdatei.

Wechseln Sie zurück zum MSIX Packaging Tool, und generieren Sie ein neues Paket. Sobald das Paket erstellt wurde, installieren Sie das Paket, und starten Sie die Anwendung über den Alias, indem Sie beispielsweise Win+R drücken und contosoexpenses eingeben:

Starten mit alias

Nachdem der Alias erstellt wurde, können Sie mit den nächsten Schritten fortfahren.

Erstellen der Anwendungsverknüpfung

Erstellen Sie eine neue Anwendungsverknüpfung in einem Ordner Ihrer Wahl, indem Sie den Alias contosoexpenses.exe verwenden:

Neue App-Verknüpfung

Benennen Sie die Verknüpfung für Contoso Expenses:

Die Erstellung der Verknüpfung für die neue App ist abgeschlossen.

Standardmäßig ist die Verknüpfung ein generisches Symbol:

Generische App-Verknüpfung

Das Ändern der Verknüpfung ist einfach, aber die Herausforderung besteht darin, die Verwendung des vollständigen Anwendungspfads mit der Versionsnummer zu vermeiden, der sich in einem zukünftigen Update ändern kann. Eine Möglichkeit, dies zu beheben, besteht im Kopieren des Symbols aus dem Paket in den von der MSIX-Anwendung verwendeten %appdata%, d. h. in den Ordner %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming, _ der keine Versionsnummer auftrat.

Zum Ändern der Anwendungsverknüpfung ist es vorerst erforderlich, das Symbol manuell in diesen Ordner zu kopieren. Dies wird später mithilfe von PSF-Skripts automatisiert.

AppData-Verknüpfung

Jetzt ist es möglich, das Verknüpfungssymbol in den Pfad %localappdata% zu ändern:

Verknüpfung für neuen Pfad

Ändern Sie in den Verknüpfungseigenschaften die Werte des Ziels, und beginnen Sie in den Eigenschaften unter %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe e %localappdata%\Microsoft\WindowsApps:

Verknüpfung für neue Werte

Nachdem die Verknüpfung nun funktioniert, besteht der nächste Schritt im Hinzufügen zum Paket und Automatisieren des Erstellungsprozesses.

Neue Verknüpfung

Herunterladen der PSF-Dateien

Laden Sie diePSFBinaries.zip aus dem PSF-GitHub-Repository herunter.

psf aus GitHub-Releases

Extrahieren Sie die erforderlichen 32-Bit- oder 64-Bit-Dateien in das Stammverzeichnis Ihres Paketverzeichnisses, je nachdem, ob ihre Anwendung 32 oder 64 Bit ist. Orientieren Sie sich an der folgenden Tabelle.

Ausführbare Anwendung ist x64 Ausführbare Anwendung ist x86
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

Fügen Sie die PSF-Dateien in das Paket ein.

Bearbeiten Sie contoso expense through MSIX Packaging Tool (Contoso-Ausgaben über das MSIX Packaging Tool):

psf von github edit mpt

Klicken Sie auf das Menüelement Paketdateien, klicken Sie mit der rechten Schaltfläche im Ordner Paket, und wählen Sie Datei hinzufügen... aus:

psf aus GitHub: Hinzufügen von PSF-Dateien

Da der ContosoExpense-Build hier 32-Bit ist, wurden die erforderlichen PSF-32-Bit-Dateien hinzugefügt. Ihr Paketinhalt sollte nun in etwa wie hier aussehen:

Psf aus github psf hinzugefügte Dateien

Aktualisieren des Paketmanifests für PSF

Klicken Sie auf das Menüelement Paketinformationen und dann auf Open File(Datei öffnen), das unten auf der Benutzeroberfläche verfügbar ist, um das Anwendungsmanifest zu bearbeiten:

psf aus github edit manifest

In diesem Schritt ist es erforderlich, den Anwendungseinstiegspunkt (application entry point, ContosoExpenses\ContosoExpenses.exe) durch die PSFLauncher32.exe.

 <Application Id="App" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication">

Speichern und schließen Sie die Manifestdatei.

Erstellen der config.jsin der Datei

Wechseln Sie zurück zum MSIX Packaging Tool, klicken Sie auf Paketdateien, wählen Sie den Ordner Paket aus, und fügen Sie config.jsdatei mit folgendem Inhalt hinzu.

{
  "applications": [
    {
      "id": "App",
      "executable": "ContosoExpenses\\ContosoExpenses.exe",
      "workingDirectory": "ContosoExpenses\\",
      "startScript":
      {
        "scriptPath": "createshortcut.ps1",
        "runInVirtualEnvironment": false,
        "waitForScriptToFinish": true,
        "showWindow": false,
        "runOnce": true
      }
    }
  ]
}

👀 Beachten Sie, dass die Anwendungs-ID im Manifest identisch ist:

Die config.jsdatei muss wie folgt im Paketstamm erstellt werden:

psf von GitHub

Der config.js datei wird verwendet, um anzugeben, dass das createshortcut.ps1-Skript bei der ersten Anwendungsin initialisierung nur einmal ausgeführt werden soll. Da das Arbeitsverzeichnis auf ContosoExpenses festgelegt ist, müssen das createshortcut.ps1-Skript (das später erstellt wird) und das StartingScriptWrapper.ps1-Skript (aus PSF-Dateien) dem Ordner ContosoExpenses hinzugefügt werden.

Erstellen des PowerShell-Skripts

Erstellen Sie createshortcut.ps1 Skript mit folgendem Inhalt:

Copy-Item "Contoso Expenses.lnk" "$env:USERPROFILE\desktop\Contoso Expenses.lnk"

Copy-Item "contoso.ico" $env:APPDATA\contoso.ico

Das createshortcut.ps1-Skript kopiert die zuvor erstellte Verknüpfung "Contoso Expenses.lnk", die im Paket verfügbar ist, auf den Benutzerdesktop. Die zweite Anweisung kopiert contoso.icon in den MSIX APPDATA-Ordner (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming ) ).

Im nächsten Schritt kopieren Sie die folgenden Dateien in den Ordner ContosoExpenses des Pakets:

  • Contoso Expenses.lnk
  • Contoso.ico
  • StartingScriptWrapper.ps1
  • createshortcut.ps1

Schließlich besteht der letzte Schritt im Erstellen und Installieren der neuen Version des Anwendungspakets. Während der ersten Anwendungsin initialisierung wird dascreateshortcut.ps1ausgeführt, und es wird die Verknüpfung Contoso Expense im Benutzerdesktop erstellt.