Erstellen einer Anwendungsverknüpfung durch Ausführen eines Skripts mithilfe von Package Support Framework

In diesem Dokument wird gezeigt, wie Sie Anwendungsverknüpfungen mithilfe von 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 innerhalb des Pakets verfügbar ist, über die PSF-Skripts auf den Desktop des Benutzers zu kopieren.

Es gibt ein paar Dinge, die Sie beachten sollten:

  1. Erstellen Sie nur eine Verknüpfung, 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 wir den MSIX-Anwendungspfad während der Verknüpfungserstellung angeben können.
  3. Gleichzeitig kann sich der MSIX-Anwendungspfad ändern, sobald er die im Installationsordner angegebene Versionsnummer aufweist. Beispiel für den Installationspfad " Contoso Expenses ":

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" zeigen. Die AppExecutionAlias ermöglicht es, die Anwendung mit dem in der Aliassitzung des Anwendungsmanifests definierten Wert zu starten, sodass der vollständige Anwendungspfad nicht angegeben werden muss. Definieren Sie daher vor dem Erstellen der Verknüpfung den Alias im Anwendungsmanifest. Andernfalls erkennt Windows Explorer den Alias nicht, und es ermöglicht uns nicht, die Verknüpfung zu erstellen.

Erstellen des Anwendungsalias

Klicken Sie auf das Menüelement "Paketinformationen ", und klicken Sie auf " Datei öffnen", die unten auf der Benutzeroberfläche verfügbar ist, um das Anwendungsmanifest zu bearbeiten:

open msix manifest

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

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

Fügen Sie den Wert "uap3 " und "Desktop " in das Element "IgnorableNamespaces " ein:

IgnorableNamespaces="uap uap3 desktop rescap build"

Schließen Sie den Ausführungsalias der Anwendung nach dem <Element "/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:

create alias

Speichern und schließen Sie die Manifestdatei.

Wechseln Sie zurück zum MSIX Packaging Tool, und generieren Sie ein neues Paket. Nachdem das Paket erstellt wurde, installieren Sie das Paket, und starten Sie die Anwendung über den Alias, z. B. durch Drücken von WIN+R und Eingeben von contosoexpenses:

launch using 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 Vorliebe mit dem Alias " contosoexpenses.exe", wie folgt:

new app shortcut

Benennen Sie die Verknüpfung für Contoso-Ausgaben:

new app finish creating shortcut

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

generic app shortcut

Das Ändern der Verknüpfung ist einfach, aber die Herausforderung besteht darin, die Verwendung des vollständigen Anwendungspfads mit der Versionsnummer zu vermeiden und die sich in einem zukünftigen Update ändern kann. Eine Möglichkeit, dies zu lösen, besteht darin, das Symbol aus dem Paket in den Von der MSIX-Anwendung verwendeten %appdata% zu kopieren, d. h. den Ordner "%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ ", der nicht über die Versionsnummer verfügt.

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

appdata shortcut

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

new path shortcut

Nutzen Sie weiterhin die Verknüpfungseigenschaften, nutzen Sie die Werte des Ziels und beginnen Sie in Eigenschaften para %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe e %localappdata%\Microsoft\WindowsApps bzw.

new values shortcut

Da die Verknüpfung nun funktioniert, besteht der nächste Schritt darin, sie dem Paket hinzuzufügen und den Erstellungsprozess zu automatisieren.

new shortcut

Abrufen der PSF-Dateien

Laden Sie die PSFBinaries.zip aus dem PSF Github-Repository herunter.

psf from 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
PSF Startprogramm 64.exe PSF Startprogramm 32.exe
PSFRuntime64.dll PSFRuntime32.dll

Einschließen der PSF-Dateien in das Paket

Bearbeiten Sie die Contoso-Spesenkosten über das MSIX-Verpackungstool :

psf from 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"...:

psf from github add psf files

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

psf from github psf added files

Aktualisieren des Paketmanifests für PSF

Klicken Sie auf das Menüelement "Paketinformationen ", und klicken Sie auf " Datei öffnen", die unten auf der Benutzeroberfläche verfügbar ist, um das Anwendungsmanifest zu bearbeiten:

psf from github edit manifest

In diesem Schritt ist es notwendig, den Einstiegspunkt der Anwendung (ContosoExpenses\ContosoExpenses.exe) durch die PSF Startprogramm 32.exe zu ändern.

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

Speichern und schließen Sie die Manifestdatei.

Erstellen der Datei config.json

Wechseln Sie zurück zum MSIX Packaging Tool, klicken Sie auf "Paketdateien", wählen Sie den Ordner "Paket" aus, und fügen Sie eine neue Datei "config.json" mit dem folgenden 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 Datei config.json muss im Paketstamm wie folgt erstellt werden:

psf from github

Die Datei config.json wird verwendet, um anzugeben, dass das Skript createshortcut.ps1 nur einmal in der ersten Anwendungsinitialisierung ausgeführt werden soll. Da das Arbeitsverzeichnis auf ContosoExpenses festgelegt ist, muss das Skript createshortcut.ps1 (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 das Skript createshortcut.ps1 mit dem folgenden Inhalt:

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

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

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

Der nächste Schritt besteht darin, die folgenden Dateien in den Ordner "ContosoExpenses" des Pakets zu kopieren:

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

Schließlich besteht der letzte Schritt darin, die neue Version des Anwendungspakets zu erstellen und zu installieren . Während der ersten Anwendungsinitialisierung wird das Skript createshortcut.ps1 ausgeführt und erstellt die Contoso-Kostenverknüpfung im Benutzerdesktop.