Sintaks Pernyataan Bersyarah
Bagian ini menguraikan sintaks pernyataan bersyarat yang digunakan oleh fungsiMsiEvaluateCondition dan tindakan tabel urutan. Untuk informasi selengkapnya, lihat, Contoh Sintaks Pernyataan Bersyarah.
Ringkasan Sintaks Pernyataan Bersyarah
Tabel ini dan daftar berikut ini meringkas sintaks untuk digunakan dalam ekspresi bersyarah.
Benda | Sintaksis |
---|---|
nilai | simbol | literal | Integer |
operator perbandingan | < | > | <= | >= | = | <> |
istilah | nilai | nilai operator perbandingan nilai | ( ekspresi )| |
Faktor Boolean | istilah | istilah TIDAK |
Istilah Boolean | Faktor Boolean | Istilah AND faktor Boolean |
Ekspresi | Istilah Boolean | Ekspresi ATAU istilah Boolean |
lambang | properti | %environment-variabel | $component-tindakan | ?component-state | &tindakan fitur | !feature-state |
Nama simbol dan nilai peka huruf besar/kecil.
Nama variabel lingkungan tidak peka huruf besar/kecil.
Teks harfiah harus diapit di antara tanda kutip ("teks").
Nota
Teks literal yang berisi tanda kutip tidak dapat digunakan dalam pernyataan kondisional karena tidak ada karakter escape untuk tanda kutip di dalam teks harfiah. Untuk melakukan perbandingan dengan teks harfiah yang berisi tanda kutip, teks harfiah harus dimasukkan ke dalam properti. Misalnya, untuk memverifikasi bahwa properti SERVERNAME tidak berisi tanda kutip apa pun, tentukan properti yang disebut QUOTES dalam tabel Properti dengan nilai " dan ubah kondisi menjadi NOT SERVERNAME><QUOTES.
Nilai properti yang tidak ada diperlakukan sebagai string kosong.
Nilai numerik titik mengambang tidak didukung.
Operator dan prioritas sama seperti dalam bahasa DASAR dan SQL.
Operator aritmatika tidak didukung.
Tanda kurung dapat digunakan untuk mengambil alih prioritas operator.
Operator tidak peka huruf besar/kecil.
Untuk perbandingan string, tilde "~" yang diawali ke operator melakukan perbandingan yang tidak peka huruf besar/kecil.
Perbandingan bilangan bulat dengan string atau nilai properti yang tidak dapat dikonversi ke bilangan bulat selalu msiEvaluateConditionFalse, kecuali untuk operator perbandingan "<>", yang mengembalikan msiEvaluateConditionTrue.
Awalan Akses
Tabel berikut ini memperlihatkan awalan yang akan digunakan untuk mengakses berbagai informasi sistem dan alat penginstal untuk digunakan dalam ekspresi bersyariah.
Jenis simbol | Awalan | Nilai |
---|---|---|
Properti penginstal | (tidak ada) | Nilai properti (properti) tabel. |
Variabel lingkungan | % | Nilai variabel lingkungan. |
Kunci tabel komponen | $ | Status tindakan komponen. |
Kunci tabel komponen | ? | Status komponen yang diinstal. |
Kunci tabel fitur | & | Status tindakan fitur. |
Kunci tabel fitur | ! | Status fitur yang diinstal. |
Operator Logis
Tabel berikut ini memperlihatkan operator logis dalam ekspresi kondisional, dalam urutan prioritas tinggi hingga rendah.
Operator | Arti |
---|---|
Tidak | Operator unary awalan; menginversi status istilah berikut. |
Dan | TRUE jika kedua istilah tersebut TRUE. |
Atau | TRUE jika salah satu atau kedua istilah adalah TRUE. |
Xor | TRUE jika keduanya tetapi tidak keduanya adalah TRUE. |
Eqv | TRUE jika kedua istilah tersebut TRUE atau kedua istilah tersebut FALSE. |
Imp | TRUE jika istilah kiri FALSE atau istilah kanan adalah TRUE. |
Operator Komparatif
Tabel berikut ini memperlihatkan operator perbandingan yang digunakan dalam ekspresi bersyariah. Operator perbandingan ini hanya dapat terjadi di antara dua nilai.
Operator | Arti |
---|---|
= | TRUE jika nilai kiri sama dengan nilai kanan. |
<> | TRUE jika nilai kiri tidak sama dengan nilai kanan. |
> | TRUE jika nilai kiri lebih besar dari nilai kanan. |
>= | TRUE jika nilai kiri lebih besar dari atau sama dengan nilai kanan. |
< | TRUE jika nilai kiri kurang dari nilai kanan. |
<= | TRUE jika nilai kiri kurang dari atau sama dengan nilai kanan. |
Operator Substring
Tabel berikut ini memperlihatkan operator substring yang digunakan dalam ekspresi bersyarat. Operator substring dapat terjadi di antara dua nilai string.
Operator | Arti |
---|---|
>< | TRUE jika string kiri berisi string kanan. |
<< | TRUE jika string kiri dimulai dengan string kanan. |
>> | TRUE jika string kiri berakhir dengan string kanan. |
Operator Numerik Bitwise
Tabel berikut menunjukkan operator numerik bitwise dalam ekspresi bersyar. Operator ini dapat terjadi di antara dua nilai bilangan bulat.
Operator | Arti |
---|---|
>< | Bitwise DAN, TRUE jika bilangan bulat kiri dan kanan memiliki kesamaan bit. |
<< | True jika 16-bit tinggi bilangan bulat kiri sama dengan bilangan bulat kanan. |
>> | True jika 16-bit rendah bilangan bulat kiri sama dengan bilangan bulat kanan. |
Nilai Status Fitur dan Komponen
Tabel berikut menunjukkan di mana valid untuk menggunakan simbol operator fitur dan komponen.
> status <operator | Jika sintaks ini valid |
---|---|
tindakan $component | Dalam tabel Kondisi, dan dalam urutan tabel, setelah tindakan CostFinalize. |
&tindakan fitur | Dalam tabel Kondisi, dan dalam urutan tabel, setelah tindakan CostFinalize. |
!feature-state | Dalam tabel Kondisi, dan dalam urutan tabel, setelah tindakan CostFinalize. |
?component-state | Dalam tabel Kondisi, dan dalam urutan tabel, setelah tindakan CostFinalize. |
Tabel berikut ini memperlihatkan nilai status fitur dan komponen yang digunakan dalam ekspresi kondisional. Status ini tidak diatur hingga MsiSetInstallLevel dipanggil, baik secara langsung atau oleh tindakan CostFinalize.
Negara | Nilai | Arti |
---|---|---|
INSTALLSTATE_UNKNOWN | -1 | Tidak ada tindakan yang akan diambil pada fitur atau komponen. |
INSTALLSTATE_ADVERTISED | 1 | Fitur yang diiklankan. Status ini tidak tersedia untuk komponen. |
INSTALLSTATE_ABSENT | 2 | Fitur atau komponen tidak ada. |
INSTALLSTATE_LOCAL | 3 | Fitur atau komponen pada komputer lokal. |
INSTALLSTATE_SOURCE | 4 | Fitur atau komponen berjalan dari sumber. |
Misalnya, ekspresi kondisional "&MyFeature=3" mengevaluasi ke True hanya jika MyFeature berubah dari statusnya saat ini ke status diinstal di komputer lokal, INSTALLSTATE_LOCAL.
Perhatikan bahwa Anda tidak boleh bergantung pada kondisi $Component 1=3 untuk memeriksa apakah Component1 diinstal secara lokal di komputer. Ini dapat gagal jika Component1 diinstal oleh lebih dari satu produk. Setelah Component1 diinstal secara lokal oleh Product1, alat penginstal mengevaluasi kondisi $Component 1=3 sebagai False selama penginstalan Product2. Ini karena alat penginstal menentukan versi komponen menggunakan jalur kunci komponen dan menandai komponen untuk penginstalan jika versinya lebih besar dari atau sama dengan komponen yang diinstal.
Perhatikan bahwa alat penginstal tidak akan melakukan perbandingan langsung dari jenis data Versi dalam pernyataan bersyarat. Misalnya, Anda tidak dapat menggunakan operator komparatif untuk membandingkan versi seperti "01.10" dan "1.010" dalam pernyataan bersyarkat. Sebagai gantinya, gunakan metode yang valid untuk mencari versi, seperti yang dijelaskan dalam Mencari Aplikasi, File, Entri Registri, atau Entri File .ini, lalu atur properti.
Topik terkait
-
Menggunakan Properti dalam Pernyataan Bersyarah