Koşullu Deyim Söz Dizimi
Bu bölümde, MsiEvaluateCondition işlevi tarafından kullanılan koşullu deyimlerin söz dizimi ve sıralı tablolareylemi açıklanmaktadır. Daha fazla bilgi için bkz. Koşullu Deyim Sözdizimi Örnekleri.
Koşullu Deyim Söz Diziminin Özeti
Bu tablo ve aşağıdaki liste, koşullu ifadelerde kullanılacak söz dizimini özetler.
Madde | Sözdizimi |
---|---|
değer | simgesi | değişmez değer | tam sayı |
karşılaştırma işleci | < | > | <= | >= | = | <> |
terim | değer | değer karşılaştırma işleci değeri | ( ifade )| |
Boole faktörü | terim | DEĞİl terim |
Boole terimi | Boole faktörü | Boole-factor AND terimi |
ifade | Boole terimi | Boole terimi VEYA ifadesi |
sembol | özellik | %environment-variable | $component eylemi | ?component-state | &özellik eylemi | !feature-state |
Simge adları ve değerleri büyük/küçük harfe duyarlıdır.
Ortam değişkeni adları büyük/küçük harfe duyarlı değildir.
Değişmez değer metni tırnak işaretleri ("metin") arasına alınmalıdır.
Not
Değişmez değer metin içinde tırnak işaretleri için kaçış karakteri olmadığından, koşullu deyimlerde tırnak işaretleri içeren değişmez metin kullanılamaz. Tırnak işareti içeren değişmez metinle karşılaştırma yapmak için, değişmez değer metni bir özelliğe yerleştirilmelidir. Örneğin, SERVERNAME özelliğinin herhangi bir tırnak işareti içermediğini doğrulamak için, Özelliği tablosunda " değeriyle QUOTES adlı bir özellik tanımlayın ve koşulu NOT SERVERNAME><QUOTES olarak değiştirin.
Var olmayan özellik değerleri boş dizeler olarak değerlendirilir.
Kayan nokta sayısal değerleri desteklenmez.
İşleçler ve öncelik, BASIC ve SQL dillerindekiyle aynıdır.
Aritmetik işleçler desteklenmez.
Parantezler işleç önceliğini geçersiz kılmak için kullanılabilir.
İşleçler büyük/küçük harfe duyarlı değildir.
Dize karşılaştırmaları için işlecine ön ekli bir "~" tilde büyük/küçük harfe duyarlı olmayan bir karşılaştırma gerçekleştirir.
Tamsayıya dönüştürülemeyen bir dize veya özellik değeri ile tamsayı karşılaştırması, msiEvaluateConditionFalse , "<>" karşılaştırma işleci dışında msiEvaluateConditionTruedöndürür.
Erişim Ön Ekleri
Aşağıdaki tabloda, koşullu ifadelerde kullanılmak üzere çeşitli sistem ve yükleyici bilgilerine erişmek için kullanılacak ön ekler gösterilmektedir.
Simge türü | Önek | Değer |
---|---|---|
Yükleyici özelliği | (yok) | Property (Property) tablosunun değeri. |
Ortam değişkeni | % | Ortam değişkeninin değeri. |
Bileşen tablo anahtarı | $ | Bileşenin eylem durumu. |
Bileşen tablo anahtarı | ? | Bileşenin yüklü durumu. |
Özellik tablosu anahtarı | & | Özelliğin eylem durumu. |
Özellik tablosu anahtarı | ! | Özelliğin yüklü durumu. |
Mantıksal İşleçler
Aşağıdaki tabloda, koşullu ifadelerdeki mantıksal işleçler, yüksek-en düşük önceliğe göre gösterilmiştir.
Operatör | Anlam |
---|---|
Değil | Ön ek birli işleç; aşağıdaki terimin durumunu tersine çevirir. |
Ve | Her iki terim de TRUE ise TRUE. |
Veya | İki terimden biri veya her ikisi de DOĞRU ise TRUE. |
Xor | Her iki terim de DOĞRU ise, ancak her ikisi de DOĞRU değilse TRUE. |
Eqv | Her iki terim de DOĞRU ise veya her iki terim de YANLIŞ ise DOĞRU. |
Imp | Sol terim YANLIŞ ise DOĞRU veya doğru terim DOĞRU ise DOĞRU. |
Karşılaştırmalı İşleçler
Aşağıdaki tabloda, koşullu ifadelerde kullanılan karşılaştırma işleçleri gösterilmektedir. Bu karşılaştırma işleçleri yalnızca iki değer arasında oluşabilir.
Operatör | Anlam |
---|---|
= | Sol değer sağ değere eşitse DOĞRU. |
<> | Sol değer sağ değere eşit değilse DOĞRU. |
> | Sol değer sağ değerden büyükse DOĞRU. |
>= | Sol değer sağ değerden büyük veya buna eşitse DOĞRU. |
< | Sol değer sağ değerden küçükse DOĞRU. |
<= | Sol değer sağ değerden küçük veya buna eşitse DOĞRU. |
Alt Dize İşleçleri
Aşağıdaki tabloda, koşullu ifadelerde kullanılan alt dize işleçleri gösterilmektedir. Alt dize işleçleri iki dize değeri arasında oluşabilir.
Operatör | Anlam |
---|---|
>< | Sol dize doğru dizeyi içeriyorsa TRUE. |
<< | Sol dize doğru dizeyle başlıyorsa TRUE. |
>> | Sol dize doğru dizeyle bitiyorsa TRUE. |
Bit Düzeyinde Sayısal İşleçler
Aşağıdaki tabloda, koşullu ifadelerdeki bit düzeyinde sayısal işleçler gösterilmektedir. Bu işleçler iki tamsayı değeri arasında oluşabilir.
Operatör | Anlam |
---|---|
>< | Bit düzeyinde VE, sol ve sağ tamsayıların ortak bitleri varsa DOĞRU. |
<< | Sol tamsayının yüksek 16 biti sağ tamsayıya eşitse True. |
>> | Sol tamsayının düşük 16 biti sağ tamsayıya eşitse True. |
Özellik ve Bileşen Durum Değerleri
Aşağıdaki tabloda özellik ve bileşen işleci simgelerini kullanmanın geçerli olduğu yer gösterilmektedir.
İşleç <durumu> | Bu söz dizimlerinin geçerli olduğu yer |
---|---|
$component eylemi | Koşulu tablosunda ve dizisinde, CostFinalize eyleminden sonra tabloları. |
özellik eylemini & | Koşulu tablosunda ve dizisinde, CostFinalize eyleminden sonra tabloları. |
!feature-state | Koşulu tablosunda ve dizisinde, CostFinalize eyleminden sonra tabloları. |
?component-state | Koşulu tablosunda ve dizisinde, CostFinalize eyleminden sonra tabloları. |
Aşağıdaki tabloda, koşullu ifadelerde kullanılan özellik ve bileşen durumu değerleri gösterilmektedir. Bu durumlar, MsiSetInstallLevel doğrudan veya CostFinalize eylemi tarafından çağrılana kadar ayarlanmaz.
Devlet | Değer | Anlam |
---|---|---|
INSTALLSTATE_UNKNOWN | -1 | Özellik veya bileşen üzerinde hiçbir işlem yapılmaz. |
INSTALLSTATE_ADVERTISED | 1 | Tanıtılan özellik. Bu durum bileşenler için kullanılamaz. |
INSTALLSTATE_ABSENT | 2 | Özellik veya bileşen yok. |
INSTALLSTATE_LOCAL | 3 | Yerel bilgisayardaki özellik veya bileşen. |
INSTALLSTATE_SOURCE | 4 | Özellik veya bileşen kaynaktan çalıştırılır. |
Örneğin, "&MyFeature=3" koşullu ifadesi, yalnızca MyFeature geçerli durumundan yerel bilgisayarda yüklenme durumuna (INSTALLSTATE_LOCAL) değişiyorsa True olarak değerlendirilir.
Component1'in bilgisayarda yerel olarak yüklü olup olmadığını denetlemek için $Component 1=3 koşuluna bağlı olmaması gerektiğini unutmayın. Component1 birden fazla ürün tarafından yüklenirse bu başarısız olabilir. Bileşen1, Product1 tarafından yerel olarak yüklendikten sonra yükleyici, Product2 yüklemesi sırasında $Component 1=3 koşulunu False olarak değerlendirir. Bunun nedeni, yükleyicinin bileşenin anahtar yolunu kullanarak bileşenin sürümünü belirlemesi ve sürümü yüklü bileşenden büyük veya ona eşitse bileşeni yükleme için işaretler.
Yükleyicinin koşullu deyimlerde Sürüm veri türünün doğrudan karşılaştırmalarını yapmayacağını unutmayın. Örneğin, koşullu deyimdeki "01.10" ve "1.010" gibi sürümleri karşılaştırmak için karşılaştırmalı işleçler kullanamazsınız. Bunun yerine, Varolan Uygulamaları, Dosyaları, Kayıt Defteri Girdilerini veya .ini Dosya Girdileriniarama bölümünde açıklandığı gibi bir sürümü aramak için geçerli bir yöntem kullanın ve ardından bir özellik ayarlayın.
İlgili konular