封裝指令清單架構中的宏
宏是動態評估的指令清單值。 您可以在封裝指令清單架構中某些屬性的值中使用宏。 這類屬性的範例包括 uap11:CurrentDirectoryPath 和 uap11:Parameters。
Syntax
宏是以 格式 $(macro_name)
表示。
- 該語法會展開至下方 [ 展開至] 數據行中的值。
- 針對屬性值中的單
$
一字元,請使用逸出序列$$
。
巨集名稱 | 展開至 |
---|---|
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