Sintaks Pernyataan Bersyarah

Bagian ini menguraikan sintaks pernyataan bersyarat yang digunakan oleh fungsi MsiEvaluateCondition dan tabel urutan tindakan. 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.

Item Sintaks
value simbol | literal | Integer
operator perbandingan < | > | <= | >= | = | <>
istilah nilai | nilai operator perbandingan nilai | ( ekspresi )|
Faktor Boolean istilah | ISTILAH NOT
Istilah Boolean Faktor Boolean | Istilah DAN faktor Boolean
expression Istilah Boolean | Ekspresi OR istilah Boolean
simbol properti | %environment-variable | $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").

    Catatan

    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 Value
Properti penginstal (tidak ada) Nilai tabel properti (Properti).
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 Makna
Not 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 Makna
= 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 Makna
>< 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 Makna
>< 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 tabel urutan, setelah tindakan CostFinalize.
&tindakan fitur Dalam tabel Kondisi, dan dalam tabel urutan, setelah tindakan CostFinalize.
!feature-state Dalam tabel Kondisi, dan dalam tabel urutan, setelah tindakan CostFinalize.
?component-state Dalam tabel Kondisi, dan dalam tabel urutan, setelah tindakan CostFinalize.

 

Tabel berikut ini memperlihatkan nilai status fitur dan komponen yang digunakan dalam ekspresi kondisional. Status ini tidak diatur sampai MsiSetInstallLevel dipanggil, baik secara langsung atau oleh tindakan CostFinalize.

Provinsi Value Makna
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 yang ada, lalu atur properti.

Menggunakan Properti dalam Pernyataan Bersyarah