Spouštění skriptů s architekturou podpory balíčků

Skripty umožňují IT specialistům dynamicky přizpůsobit aplikaci v uživatelském prostředí po zabalení pomocí MSIX. Pomocí skriptů můžete například nakonfigurovat databázi, nastavit síť VPN, připojit sdílenou jednotku nebo dynamicky provést kontrolu licence. Skripty poskytují velkou flexibilitu. Mohou změnit klíče registru nebo provádět úpravy souborů na základě konfigurace počítače nebo serveru.

Pomocí rozhraní PSF (Package Support Framework) můžete spustit jeden skript PowerShellu před spuštěním spustitelného souboru zabalené aplikace a jedním skriptem PowerShellu po spuštění spustitelného souboru aplikace k vyčištění. Každý spustitelný soubor aplikace definovaný v manifestu aplikace může mít vlastní skripty. Skript můžete nakonfigurovat tak, aby se spouštěl jenom jednou při prvním spuštění aplikace a bez zobrazení okna PowerShellu, aby uživatelé skript neskončili omylem. Existují další možnosti konfigurace způsobu spouštění skriptů, jak je znázorněno níže.

Požadavky

Pokud chcete povolit spouštění skriptů, musíte nastavit zásady spouštění PowerShellu na RemoteSigned. Můžete to provést spuštěním tohoto příkazu:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Zásady spouštění je potřeba nastavit pro 64bitový spustitelný soubor PowerShellu i 32bitový spustitelný soubor PowerShellu. Nezapomeňte otevřít každou verzi PowerShellu a spustit jeden z výše uvedených příkazů.

Tady jsou umístění každého spustitelného souboru.

  • 64bitový počítač:
    • 64bitový spustitelný soubor: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
    • 32bitový spustitelný soubor: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 32bitový počítač:
    • 32bitový spustitelný soubor: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Další informace o zásadách spouštění PowerShellu najdete v tomto článku.

🚩 Nezapomeňte do balíčku zahrnout také StartingScriptWrapper.ps1 soubor a umístit ho do stejné složky jako spustitelný soubor. Tento soubor můžete zkopírovat z balíčku NuGet PSF nebo z úložiště PSF Na GitHubu.

Povolení skriptů

Pokud chcete určit, které skripty se budou spouštět pro každý spustitelný soubor zabalené aplikace, musíte upravit config.json soubor. Pokud chcete psF oznámit spuštění skriptu před spuštěním zabalené aplikace, přidejte položku konfigurace s názvem startScript. Chcete-li PSF oznámit, že má spustit skript po dokončení zabalené aplikace, musíte přidat položku konfigurace s názvem endScript.

Položky konfigurace skriptu

Níže jsou uvedené položky konfigurace, které jsou pro skripty k dispozici. Koncový skript ignoruje položky konfigurace waitForScriptToFinish a stopOnScriptError.

Název klíče Typ hodnoty Povinné? Výchozí Popis
scriptPath řetězec Ano není k dispozici Cesta ke skriptu, včetně názvu a přípony Cesta je relativní vzhledem k pracovnímu adresáři aplikace, pokud je zadána, jinak začíná od kořenového adresáře balíčku.
scriptArguments řetězec Ne prázdný Seznam argumentů oddělených mezerami Formát je stejný pro volání skriptu PowerShellu. Tento řetězec se připojí k scriptPath, aby vytvořil platné volání PowerShell.exe.
runInVirtualEnvironment Boolean Ne pravda Určuje, jestli se má skript spustit ve stejném virtuálním prostředí, ve kterém běží zabalená aplikace.
runOnce Boolean Ne pravda Určuje, zda se má skript spustit jednou na každého uživatele a pro každou verzi.
showWindow Boolean Ne Nepravda Určuje, jestli se zobrazí okno PowerShellu.
stopOnScriptError Boolean Ne Nepravda Určuje, jestli se má aplikace ukončit, pokud se spouštěcí skript nezdaří.
waitForScriptToFinish Boolean Ne pravda Určuje, jestli má zabalená aplikace před spuštěním čekat na dokončení spouštěcího skriptu.
timeout DWORD Ne NEKONEČNÝ Jak dlouho bude skript povolený ke spuštění. Po uplynutí času se skript zastaví.

Poznámka:

Nastavení stopOnScriptError: true a waitForScriptToFinish: false pro ukázkovou aplikaci se nepodporuje. Pokud nastavíte obě tyto položky konfigurace, nástroj PSF vrátí chybu ERROR_BAD_CONFIGURATION.

Vzorová konfigurace

Tady je ukázková konfigurace pomocí dvou různých spustitelných souborů aplikace.

{
  "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)
  ]
}