Makro dalam skema manifes paket
Makro adalah nilai manifes yang dievaluasi secara dinamis. Anda dapat menggunakan makro dalam nilai beberapa atribut dalam skema manifes paket. Contoh atribut tersebut adalah uap11:CurrentDirectoryPath dan uap11:Parameters.
Sintaks
Makro dinyatakan dalam formulir $(macro_name)
.
- Sintaks itu meluas ke nilai dalam kolom Perluas ke di bawah ini.
- Untuk satu
$
karakter dalam nilai atribut, gunakan urutan$$
escape .
Nama makro | Perluas ke |
---|---|
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() |
Contoh skenario
Dalam skenario contoh hipotetis ini, saya telah membuat aplikasi kemasan (ditulis dalam Python) bernama MyPackagedPythonApp.py
. Untuk menjalankannya, saya memerlukan hal berikut dalam manifes saya:
<Application...Executable="python.exe" uap10:TrustLevel="mediumIL" uap10:RuntimeBehavior="packagedClassicApp" uap10:Parameters="-m MyPackagedPythonApp.py --default=1">
Konfigurasi tersebut menyebabkan perintah ini dijalankan:
"C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc\python.exe" -m MyPackagedPythonApp.py --default=1
Tetapi perintah itu gagal jika folder saat ini tidak terjadi adalah C:\Program Files\WindowsApps\MyApp_1.2.3.4_x64__1234567890abc
.
Jadi saya mungkin mencoba menentukan file saya .py
dengan nama file absolut, seperti ini:
"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
Tapi saya, sebagai pengembang, tidak tahu apakah paket akan diinstal ke jalur itu. Mungkin drive pengguna penuh, sehingga paket berakhir pada drive Q. Dan jalur berubah setiap kali saya menabrak versi paket saya. Jadi di sinilah makro datang untuk menyelamatkan.
Saya menentukan file saya .py
dengan menggunakan makro untuk jalur (yang akan dievaluasi saat runtime) ke lokasi paket, seperti ini:
<Application...Executable="python.exe" uap10:TrustLevel="mediumIL" uap10:RuntimeBehavior="packagedClassicApp" uap10:Parameters="-m $(package.effectivePath)\MyPackagedPythonApp.py --defcon=1">
Sekarang, pada runtime, perintah dijalankan seperti yang saya harapkan. Tetapi Windows telah secara dinamis mengisi jalur yang tepat (sekali lagi, pada runtime), seperti ini:
"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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk