Ausführen von Skripts mit dem Framework zur PaketunterstützungRun scripts with the Package Support Framework

Mithilfe von Skripts können IT-Professionals eine Anwendung dynamisch an die Benutzerumgebung anpassen, nachdem Sie mithilfe von msix gepackt wurde.Scripts enable IT Pros to customize an application dynamically to the user's environment after it is packaged using MSIX. Beispielsweise können Sie Skripts verwenden, um Ihre Datenbank zu konfigurieren, ein VPN einzurichten, ein frei gegebenes Laufwerk zu installieren oder eine Lizenz Überprüfung dynamisch auszuführen.For example, you can use scripts to configure your database, set up a VPN, mount a shared drive, or perform a license check dynamically. Skripts bieten viel Flexibilität.Scripts provide a lot of flexibility. Sie können Registrierungsschlüssel ändern oder Dateiänderungen auf der Grundlage der Computer-oder Serverkonfiguration durchführen.They may change registry keys or perform file modifications based on the machine or server configuration.

Sie können das Paket Unterstützungs Framework (PSF) zum Ausführen eines PowerShell-Skripts verwenden, bevor eine ausführbare Datei der Anwendung ausgeführt wird, und ein PowerShell-Skript, nachdem die ausführbare Datei der Anwendung ausgeführt wurde.You can use the Package Support Framework (PSF) to run one PowerShell script before a packaged application executable runs and one PowerShell script after the application executable runs to clean up. Jede ausführbare Datei der Anwendung, die im Anwendungs Manifest definiert ist, kann eigene Skripts aufweisen.Each application executable defined in the application manifest can have its own scripts. Sie können das Skript so konfigurieren, dass es nur einmal beim ersten Starten der app ausgeführt wird, ohne das PowerShell-Fenster anzuzeigen, damit Benutzer das Skript nicht versehentlich vorzeitig beenden können.You can configure the script to run once only on the first app launch and without showing the PowerShell window so users won't end the script prematurely by mistake. Es gibt weitere Optionen zum Konfigurieren der Art und Weise, wie Skripts ausgeführt werden können, wie unten dargestellt.There are other options to configure the way scripts can run, shown below.

VoraussetzungenPrerequisites

Damit Skripts ausgeführt werden können, müssen Sie die PowerShell-Ausführungs Richtlinie auf festlegen RemoteSigned .To enable scripts to run, you need to set the PowerShell execution policy to RemoteSigned. Führen Sie hierzu den folgenden Befehl aus:You can do this by running this command:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Die Ausführungs Richtlinie muss sowohl für die ausführbare 64-Bit-PowerShell-Datei als auch für die ausführbare 32-Bit-PowerShell festgelegt werden.The execution policy needs to be set for both the 64-bit PowerShell executable and the 32-bit PowerShell executable. Stellen Sie sicher, dass Sie jede Version von PowerShell öffnen und einen der oben gezeigten Befehle ausführen.Make sure to open each version of PowerShell and run one of the commands shown above.

Hier sind die Speicherorte der einzelnen ausführbaren Dateien aufgeführt.Here are the locations of each executable.

  • 64-Bit-Computer:64-bit computer:
    • 64-Bit-ausführbare Datei:% systemroot% \system32\WindowsPowerShell\v1.0\powershell.exe64-bit executable: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
    • 32-Bit-ausführbare Datei:% systemroot% \SysWOW64\WindowsPowerShell\v1.0\powershell.exe32-bit executable: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 32-Bit-Computer:32-bit computer:
    • 32-Bit-ausführbare Datei:% systemroot% \system32\WindowsPowerShell\v1.0\powershell.exe32-bit executable: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Weitere Informationen zu PowerShell-Ausführungsrichtlinien finden Sie in diesem Artikel.For more information about PowerShell execution policies, see this article.

Stellen Sie sicher, dass Sie auch die StartingScriptWrapper.ps1 Datei in das Paket einschließen, und platzieren Sie Sie im gleichen Ordner wie die ausführbare Datei.Make sure to also include the StartingScriptWrapper.ps1 file in your package and place it in the same folder as your executable. Sie können diese Datei aus dem PSF-nuget-Paketkopieren.You can copy this file from the PSF NuGet package.

Aktivieren von SkriptsEnable scripts

Um anzugeben, welche Skripts für jede ausführbare Datei der verpackten Anwendung ausgeführt werden, müssen Sie die config.jsin der Dateiändern.To specify what scripts will run for each packaged application executable, you need to modify the config.json file. Um PSF anzuweisen, vor der Ausführung der Paket Anwendung ein Skript auszuführen, fügen Sie ein Konfigurationselement mit dem Namen hinzu startScript .To tell PSF to run a script before the execution of the packaged application, add a configuration item called startScript. Um PSF mitzuteilen, dass nach Abschluss der Paket Anwendung ein Skript ausgeführt werden soll, fügen Sie ein Konfigurationselement mit dem Namen hinzu endScript .To tell PSF to run a script after the packaged application finishes add a configuration item called endScript.

Skripterstellung für KonfigurationselementeScript configuration items

Im folgenden finden Sie die Konfigurationselemente, die für die Skripts verfügbar sind.The following are the configuration items available for the scripts. Das Endskript ignoriert die waitForScriptToFinish stopOnScriptError Konfigurationselemente und.The ending script ignores the waitForScriptToFinish and stopOnScriptError configuration items.

SchlüsselnameKey name WerttypValue type Erforderlich?Required? StandardDefault BESCHREIBUNGDescription
scriptPath Zeichenfolgestring JaYes N/A Der Pfad des Skripts einschließlich des Namens und der Erweiterung.The path to the script including the name and extension. Der Pfad ist relativ zum Arbeitsverzeichnis der Anwendung, falls angegeben, andernfalls beginnt er im Stammverzeichnis des Pakets.The path is relative to the application's working directory if specified, otherwise, it starts at the root directory of the package.
scriptArguments Zeichenfolgestring NoNo emptyempty Durch Leerzeichen getrennte Argumentliste.Space delimited argument list. Das Format ist für einen PowerShell-Skript-Befehl identisch.The format is the same for a PowerShell script call. Diese Zeichenfolge wird an angehängt, um scriptPath einen gültigen PowerShell.exe aufzurufen.This string gets appended to scriptPath to make a valid PowerShell.exe call.
runInVirtualEnvironment booleanboolean NeinNo truetrue Gibt an, ob das Skript in derselben virtuellen Umgebung ausgeführt werden soll, in der die Paket Anwendung ausgeführt wird.Specifies whether the script should run in the same virtual environment that the packaged application runs in.
runOnce booleanboolean NeinNo truetrue Gibt an, ob das Skript pro Benutzer und pro Version einmal ausgeführt werden soll.Specifies whether the script should run once per user, per version.
showWindow booleanboolean NeinNo falsefalse Gibt an, ob das PowerShell-Fenster angezeigt wird.Specifies whether the PowerShell window is shown.
stopOnScriptError booleanboolean NeinNo falsefalse Gibt an, ob die Anwendung beendet werden soll, wenn das Startskript fehlschlägt.Specifies whether to exit the application if the starting script fails.
waitForScriptToFinish booleanboolean NeinNo truetrue Gibt an, ob die gepackte Anwendung warten soll, bis das Startskript abgeschlossen ist, bevor Sie gestartet wird.Specifies whether the packaged application should wait for the starting script to finish before starting.
timeout DWORDDWORD NoNo INFINITEINFINITE Gibt an, wie lange das Skript ausgeführt werden darf.How long the script will be allowed to execute. Wenn die Zeit abläuft, wird das Skript angehalten.When the time elapses, the script will be stopped.

Hinweis

stopOnScriptError: trueDas Festlegen waitForScriptToFinish: false von und für die Beispielanwendung wird nicht unterstützt.Setting stopOnScriptError: true and waitForScriptToFinish: false for the sample application is not supported. Wenn Sie beide Konfigurationselemente festlegen, gibt PSF den Fehler ERROR_BAD_CONFIGURATION zurück.If you set both of these configuration items, PSF will return the error ERROR_BAD_CONFIGURATION.

BeispielkonfigurationSample configuration

Im folgenden finden Sie eine Beispielkonfiguration mit zwei verschiedenen ausführbaren Anwendungs Dateien.Here is a sample configuration using two different application executables.

{
  "applications": [
    {
      "id": "Sample",
      "executable": "Sample.exe",
      "workingDirectory": "",
      "stopOnScriptError": false,
      "startScript":
      {
        "scriptPath": "RunMePlease.ps1",
        "scriptArguments": "\\\"First argument\\\" secondArgument",
        "runInVirtualEnvironment": true,
        "showWindow": true,
        "waitForScriptToFinish": false
      },
      "endScript":
      {
        "scriptPath": "RunMeAfter.ps1",
        "scriptArguments": "ThisIsMe.txt"
      }
    },
    {
      "id": "CPPSample",
      "executable": "CPPSample.exe",
      "workingDirectory": "",
      "startScript":
      {
        "scriptPath": "CPPStart.ps1",
        "scriptArguments": "ThisIsMe.txt",
        "runInVirtualEnvironment": true
      },
      "endScript":
      {
        "scriptPath": "CPPEnd.ps1",
        "scriptArguments": "ThisIsMe.txt",
        "runOnce": false
      }
    }
  ],
  "processes": [
    ...(taken out for brevity)
  ]
}