パッケージ マニフェスト スキーマ内のマクロ
マクロは、動的に評価されるマニフェスト値です。 マクロは、パッケージ マニフェスト スキーマの一部の属性の値で使用できます。 このような属性の例としては、 uap11:CurrentDirectoryPath と uap11: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