次の方法で共有


パッケージ マニフェスト スキーマ内のマクロ

マクロは、動的に評価されるマニフェスト値です。 マクロは、パッケージ マニフェスト スキーマの一部の属性の値で使用できます。 このような属性の例としては、 uap11:CurrentDirectoryPathuap11:Parameters があります

構文

マクロは、 という形式 $(macro_name)で表されます。

  • その構文は、下の [Expands to] 列の値 に展開 されます。
  • 属性値内の 1 文字 $ の場合は、エスケープ シーケンス を使用します $$
マクロ名 に展開します。
env:environmentvariable GetEnvironmentVariable(environmentvariable)
package.currentDirectoryPath GetCurrentDirectory()
package.effectiveExternalPath GetPackagePathByFullName2(...PackagePathType_EffectiveExternal...)
package.effectivePath GetPackagePathByFullName2(...PackagePathType_Effective...)
package.installedPath GetPackagePathByFullName2(...PackagePathType_Install...)
package.machineExternalPath GetPackagePathByFullName2(...PackagePathType_MachineExternal...)
package.mutablePath GetPackagePathByFullName2(...PackagePathType_Mutable...)
package.userExternalPath GetPackagePathByFullName2(...PackagePathType_UserExternal...)
system.path GetSystemDirectory()
windows.path GetWindowsDirectory()

シナリオ例

この仮定のシナリオ例では、 という名前 MyPackagedPythonApp.pyのパッケージ アプリ (Python で記述) を作成しました。 これを実行するには、マニフェストに次のものが必要です。

<Application...Executable="python.exe" uap10:TrustLevel="mediumIL" uap10:RuntimeBehavior="packagedClassicApp" uap10:Parameters="-m MyPackagedPythonApp.py --default=1">

この構成により、次のコマンドが実行されます。

"C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\python.exe" -m MyPackagedPythonApp.py --default=1

ただし、現在のフォルダーが でなければ、そのコマンドは C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc失敗します。

だから私は次のように絶対ファイル名で私の .py ファイルを指定しようとするかもしれません:

"C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\python.exe" -m "C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\MyPackagedPythonApp.py" --default=1

しかし、私は開発者として 、パッケージがその パスにインストールされるかどうかはわかりません。 おそらく、ユーザーのドライブがいっぱいだったため、パッケージはドライブ Q で終わりました。そして、パッケージバージョンをバンプするたびにパスが変わります。 だから、マクロが救助に来る場所です。

次のように、パッケージの .py 場所へのパス (実行時に評価されます) のマクロを使用してファイルを指定します。

<Application...Executable="python.exe" uap10:TrustLevel="mediumIL" uap10:RuntimeBehavior="packagedClassicApp" uap10:Parameters="-m $(package.effectivePath)\MyPackagedPythonApp.py --defcon=1">

現在、実行時に、コマンドは期待どおりに実行されます。 ただし、Windows は次のように、適切なパス (実行時に再び) に動的に入力されています。

"C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\python.exe" -m "C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\MyPackagedPythonApp.py" --default=1