次の方法で共有


Package Support Framework を使用してスクリプトを実行してアプリケーション ショートカットを作成する

このドキュメントでは、 MSIX パッケージ ツールContoso Expense WPF アプリケーションを使用してスクリプトを実行するパッケージ サポート フレームワーク (PSF) を使用してアプリケーション ショートカットを作成する方法について説明します。

Contoso の経費

考え方は、PSF スクリプトを使用して、パッケージ内で使用できるアプリケーション ショートカットをユーザーのデスクトップにコピーすることです。

留意すべき点がいくつかあります。

  1. ショートカットが絶対に必要な場合にのみ、ショートカットを作成します。 目標は、ユーザーのデスクトップを乱雑にしないことです。
  2. ショートカットの作成時に MSIX アプリケーション パスを指定できるように、ショートカットを作成する前に MSIX アプリケーションをインストールする必要があります。
  3. 同時に、MSIX アプリケーション パスは、インストール フォルダーに指定されたバージョン番号を取得すると変更される可能性があります。 Contoso Expenses のインストール パスの例:

C:\Program Files\WindowsApps\ContosoExpenses_1.0.0.0_x86__3z09h3y28h0qg

アプリケーションが更新されるたびにアプリケーションショートカットを変更する必要を回避するには、 AppExecutionAlias をポイントしてショートカットを作成します。 AppExecutionAlias を使用すると、アプリケーション マニフェストのエイリアス セッションで定義された値を使用してアプリケーションを起動できるため、完全なアプリケーション パスを指定する必要はありません。 そのため、ショートカットを作成する前に、アプリケーション マニフェストでエイリアスを定義します。 それ以外の場合、Windows エクスプローラーはエイリアスを認識せず、ショートカットを作成できません。

アプリケーションエイリアスを作成する

[ パッケージ情報 ] メニュー項目をクリックし、UI の下部にある [ ファイルを開く] をクリックして、アプリケーション マニフェストを編集します。

msix マニフェストを開く

エイリアスの作成に使用される名前空間を次のように含めてください。

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

uap3desktopを IgnorableNamespaces 要素に含めます。

IgnorableNamespaces="uap uap3 desktop rescap build"

</uap:VisualElements> 要素の後にアプリケーションの実行エイリアスを含めます。

  <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>

マニフェストに従って変更を加えます。

エイリアスを作成する

マニフェスト ファイルを保存して閉じます

MSIX パッケージ ツールに戻り、 新しいパッケージを生成します。 パッケージが作成されたら、 パッケージをインストール し、エイリアスを使用してアプリケーションを起動します。たとえば、Win + R キーを押して contosoexpenses と入力します。

エイリアスを使用して起動する

エイリアスが作成されたので、次の手順に進むことができます。

アプリケーション ショートカットを作成する

次のように、エイリアス contosoexpenses.exeを使用して、ユーザー設定のフォルダーに新しいアプリケーション ショートカットを作成します。

新しいアプリのショートカット

Contoso Expenses のショートカットに名前を付けます。

新しいアプリのショートカットの作成が完了する

既定では、ショートカットは汎用アイコンになります。

汎用アプリのショートカット

ショートカットの変更は簡単ですが、ここでの課題は、バージョン番号を持ち、将来の更新で変更される可能性がある完全なアプリケーション パスを使用しないようにすることです。 これを解決する 1 つの方法は、パッケージから MSIX アプリケーションで使用される %appdata% にアイコンをコピーすることです。つまり、バージョン番号のない %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ フォルダーです。

ここでは、アプリケーションのショートカットを変更するには、アイコンをそのフォルダーに手動でコピーする必要があります。 これは後で PSF スクリプトを使用して自動化されます。

appdata ショートカット

これで、ショートカット アイコンを %localappdata% パスに変更できるようになりました。

新しいパス ショートカット

引き続きショートカット プロパティを使用して、targetstart in の値をそれぞれ %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe%localappdata%\Microsoft\WindowsApps に変更します。

新規値ショートカット

ショートカットが機能するようになりました。次の手順は、パッケージに追加し、作成プロセスを自動化することです。

新しいショートカット

PSF ファイルを取得する

PSF Github リポジトリから PSFBinaries.zip をダウンロードします。

GitHub リリースからの psf

アプリケーションが 32 ビットまたは 64 ビットかどうかに応じて、必要な 32 ビットまたは 64 ビットのファイルをパッケージ ディレクトリのルートに抽出します。 ガイドとして次の表を使用します。

アプリケーション実行可能ファイルは x64 です アプリケーション実行可能ファイルは x86 です
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

パッケージに PSF ファイルを含める

MSIX パッケージ 化ツールを使用して Contoso Expense を編集します。

GitHub edit mpt からの psf

[ パッケージ ファイル ] メニュー項目をクリックし、[ パッケージ ] フォルダーの右ボタンをクリックし、[ファイルの追加] を選択します。 ..:

GitHub add psf ファイルからの psf

ここでの ContosoExpense ビルドは 32 ビットであるため、PSF 32 ビットの必須ファイルが追加されました。 パッケージのコンテンツは次のようになります。

GitHubのpsfがファイルを追加しました

PSF のパッケージ マニフェストを更新する

[ パッケージ情報 ] メニュー項目をクリックし、UI の下部にある [ ファイルを開く] をクリックして、アプリケーション マニフェストを編集します。

github 編集マニフェストからの psf

この手順では、アプリケーション エントリ ポイント (ContosoExpenses\ContosoExpenses.exe) by the PSFLauncher32.exeを変更する必要があります。

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

マニフェスト ファイルを保存して閉じます

config.json ファイルを作成する

MSIX パッケージ ツールに戻り、[パッケージ ファイル] をクリックし、[パッケージ] フォルダーを選択し、次の内容の新しい config.json ファイルを追加します。

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

👀 アプリケーション ID がマニフェストと同じであることを確認します。

config.json ファイルは、次のようにパッケージ ルートに作成する必要があります。

github の psf

config.json ファイルは、createshortcut.ps1スクリプトが最初のアプリケーションの初期化で 1 回だけ実行されるように指定するために使用されています。 作業ディレクトリContosoExpenses に設定されているため、(後で作成される) createshortcut.ps1 スクリプトと StartingScriptWrapper.ps1 スクリプト (PSF ファイルから) を ContosoExpenses フォルダーに追加する必要があります。

PowerShell スクリプトを作成する

次の内容で createshortcut.ps1 スクリプトを作成します。

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

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

createshortcut.ps1 スクリプトは、以前に作成した "Contoso Expenses.lnk" ショートカットをコピーし、パッケージ内で使用できるユーザー デスクトップにコピーします。 2 番目の手順では、contoso.icon を MSIX APPDATA フォルダー (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming) にコピーします。

次の手順では、次のファイルをパッケージの ContosoExpenses フォルダーにコピーします。

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

最後に、アプリケーション パッケージの新しいバージョンを 作成 して インストール します。 最初の アプリケーションの初期化中に、 createshortcut.ps1 スクリプトが実行され、ユーザー Desktop に Contoso Expense ショートカット が作成されます。