パッケージ サポート フレームワークを使用してスクリプトを実行するRun scripts with the Package Support Framework

スクリプトを使用すると、IT 担当者は、MSIX を使用してパッケージ化した後に、アプリケーションをユーザーの環境に合わせて動的にカスタマイズできます。Scripts enable IT Pros to customize an application dynamically to the user's environment after it is packaged using MSIX. たとえば、スクリプトを使用してデータベースを構成したり、VPN を設定したり、共有ドライブをマウントしたり、ライセンスチェックを動的に実行したりすることができます。For example, you can use scripts to configure your database, set up a VPN, mount a shared drive, or perform a license check dynamically. スクリプトを使用すると、柔軟性が向上します。Scripts provide a lot of flexibility. これらは、コンピューターまたはサーバーの構成に基づいて、レジストリキーを変更したり、ファイルの変更を実行したりすることがあります。They may change registry keys or perform file modifications based on the machine or server configuration.

Package Support Framework (PSF) を使用して、パッケージ化されたアプリケーションの実行可能ファイルが実行される前に1つの PowerShell スクリプトを実行し、アプリケーションの実行可能ファイルの実行後に1つの PowerShell スクリプトを実行してクリーンアップすることができます。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. アプリケーションマニフェストで定義されている各アプリケーション実行可能ファイルには、独自のスクリプトを含めることができます。Each application executable defined in the application manifest can have its own scripts. スクリプトは、最初のアプリの起動時にのみ実行されるように構成できます。また、PowerShell ウィンドウを表示せずに、ユーザーがスクリプトを誤って終了しないように構成することもできます。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. 次に示すように、スクリプトの実行方法を構成するためのオプションが他にもあります。There are other options to configure the way scripts can run, shown below.

前提条件Prerequisites

スクリプトの実行を有効にするには、PowerShell 実行ポリシーを RemoteSignedに設定する必要があります。To enable scripts to run, you need to set the PowerShell execution policy to RemoteSigned. これを行うには、次のコマンドを実行します。You can do this by running this command:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

実行ポリシーは、64ビットの PowerShell 実行可能ファイルと32ビットの PowerShell 実行可能ファイルの両方に対して設定する必要があります。The execution policy needs to be set for both the 64-bit PowerShell executable and the 32-bit PowerShell executable. 必ず PowerShell の各バージョンを開いて、上記のコマンドのいずれかを実行してください。Make sure to open each version of PowerShell and run one of the commands shown above.

各実行可能ファイルの場所を次に示します。Here are the locations of each executable.

  • 64 ビット コンピューター:64-bit computer:
    • 64ビット実行可能ファイル:%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe64-bit executable: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
    • 32ビット実行可能ファイル:%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe32-bit executable: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 32 ビット コンピューターの場合:32-bit computer:
    • 32ビット実行可能ファイル:%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe32-bit executable: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

PowerShell 実行ポリシーの詳細については、こちらの記事を参照してください。For more information about PowerShell execution policies, see this article.

パッケージに StartingScriptWrapper ファイルも含めて、実行可能ファイルと同じフォルダーに配置してください。Make sure to also include the StartingScriptWrapper.ps1 file in your package and place it in the same folder as your executable. このファイルは、 PSF NuGet パッケージからコピーできます。You can copy this file from the PSF NuGet package.

スクリプトを有効にするEnable scripts

パッケージ化された各アプリケーション実行可能ファイルに対して実行するスクリプトを指定するには、構成の json ファイルを変更する必要があります。To specify what scripts will run for each packaged application executable, you need to modify the config.json file. パッケージ化されたアプリケーションの実行前にスクリプトを実行するように PSF に指示するには、startScriptという構成項目を追加します。To tell PSF to run a script before the execution of the packaged application, add a configuration item called startScript. パッケージアプリケーションの終了後にスクリプトを実行するように PSF に指示するには、endScriptという構成項目を追加します。To tell PSF to run a script after the packaged application finishes add a configuration item called endScript.

構成項目のスクリプトを作成Script configuration items

スクリプトで使用できる構成項目を次に示します。The following are the configuration items available for the scripts. 終了スクリプトは、waitForScriptToFinish および stopOnScriptError 構成項目を無視します。The ending script ignores the waitForScriptToFinish and stopOnScriptError configuration items.

キー名Key name [値の型]Value type 必須/省略可能Required? 既定値Default 説明Description
scriptPath stringstring はいYes N/AN/A 名前と拡張子を含むスクリプトへのパス。The path to the script including the name and extension. パスは、指定されている場合、アプリケーションの作業ディレクトリに対する相対パスです。それ以外の場合は、パッケージのルートディレクトリから開始されます。The path is relative to the application's working directory if specified, otherwise, it starts at the root directory of the package.
scriptArguments stringstring いいえNo emptyempty 空白で区切られた引数リスト。Space delimited argument list. この形式は、PowerShell スクリプト呼び出しの場合と同じです。The format is the same for a PowerShell script call. この文字列は、有効な PowerShell .exe 呼び出しを行うために scriptPath に追加されます。This string gets appended to scriptPath to make a valid PowerShell.exe call.
runInVirtualEnvironment booleanboolean いいえNo truetrue パッケージアプリケーションが実行されているのと同じ仮想環境でスクリプトを実行するかどうかを指定します。Specifies whether the script should run in the same virtual environment that the packaged application runs in.
runOnce booleanboolean いいえNo truetrue スクリプトをユーザーごと、バージョンごとに1回実行するかどうかを指定します。Specifies whether the script should run once per user, per version.
showWindow booleanboolean いいえNo falsefalse PowerShell ウィンドウを表示するかどうかを指定します。Specifies whether the PowerShell window is shown.
stopOnScriptError booleanboolean いいえNo falsefalse 開始スクリプトが失敗した場合にアプリケーションを終了するかどうかを指定します。Specifies whether to exit the application if the starting script fails.
waitForScriptToFinish booleanboolean いいえNo truetrue 開始スクリプトが終了するまでパッケージアプリケーションが待機する必要があるかどうかを指定します。Specifies whether the packaged application should wait for the starting script to finish before starting.
timeout DWORDDWORD いいえNo INFINITEINFINITE スクリプトの実行が許可される期間。How long the script will be allowed to execute. 時間が経過すると、スクリプトは停止します。When the time elapses, the script will be stopped.

注意

サンプルアプリケーションの stopOnScriptError: truewaitForScriptToFinish: false の設定はサポートされていません。Setting stopOnScriptError: true and waitForScriptToFinish: false for the sample application is not supported. これらの構成項目の両方を設定した場合、PSF はエラー ERROR_BAD_CONFIGURATION を返します。If you set both of these configuration items, PSF will return the error ERROR_BAD_CONFIGURATION.

サンプル構成Sample configuration

2つの異なるアプリケーション実行可能ファイルを使用したサンプル構成を次に示します。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)
  ]
}