Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta seção descreve a sintaxe das instruções condicionais usadas pela funçãoMsiEvaluateConditione pelas tabelas de sequência de de ação. Para obter mais informações, consulte Exemplos de sintaxe de instrução condicional.
Resumo da sintaxe da declaração condicional
Esta tabela e a lista a seguir resumem a sintaxe a ser usada em expressões condicionais.
| Número | Sintaxe |
|---|---|
| valor | símbolo | literal | inteiro |
| operador de comparação | < | > | <= | >= | = | <> |
| vigência | valor | valor do operador de comparação de valores | ( expressão )| |
| Fator booleano | termo | NÃO termo |
| Termo booleano | Fator booleano | Fator booleano E prazo |
| expressão | Booleano-termo | Termo booleano OU expressão |
| símbolo | propriedade | %environment-variável | $component-ação | ?estado-componente | &feature-action | !feature-state |
Os nomes e valores dos símbolos diferenciam maiúsculas de minúsculas.
Os nomes das variáveis de ambiente não diferenciam maiúsculas de minúsculas.
O texto literal deve ser colocado entre aspas ("texto").
Observação
O texto literal contendo aspas não pode ser usado em instruções condicionais porque não há nenhum caractere de escape para aspas dentro do texto literal. Para fazer uma comparação com o texto literal que contém aspas, o texto literal deve ser colocado em uma propriedade. Por exemplo, para verificar se a propriedade SERVERNAME não contém aspas, defina uma propriedade chamada QUOTES na tabela Property com um valor de " e altere a condição para NOT SERVERNAME><QUOTES.
Valores de propriedade inexistentes são tratados como cadeias de caracteres vazias.
Não há suporte para valores numéricos de ponto flutuante.
Os operadores e a precedência são os mesmos das linguagens BASIC e SQL.
Operadores aritméticos não são suportados.
Parênteses podem ser usados para substituir a precedência do operador.
Os operadores não diferenciam maiúsculas de minúsculas.
Para comparações de cadeia de caracteres, um til "~" prefixado ao operador executa uma comparação que não diferencia maiúsculas de minúsculas.
A comparação de um inteiro com uma cadeia de caracteres ou valor de propriedade que não pode ser convertido em um inteiro é sempre msiEvaluateConditionFalse, exceto para o operador de comparação "<>", que retorna msiEvaluateConditionTrue.
Prefixos de acesso
A tabela a seguir mostra os prefixos a serem usados para acessar várias informações do sistema e do instalador para uso em expressões condicionais.
| Tipo de símbolo | Prefixo | Valor |
|---|---|---|
| Propriedade do instalador | (nenhum) | Valor da propriedade (Propriedadetabela ). |
| Variável de ambiente | % | Valor da variável ambiente. |
| Chave da tabela de componentes | $ | Estado de ação do componente. |
| Chave da tabela de componentes | ? | Estado de instalação do componente. |
| Tecla da tabela de recursos | & | Estado de ação do recurso. |
| Tecla da tabela de recursos | ! | Estado instalado do recurso. |
Operadores lógicos
A tabela a seguir mostra os operadores lógicos em expressões condicionais, em ordem de precedência de alta para baixa.
| Operador | Significado |
|---|---|
| Não | Prefixo operador unário; inverte o estado do termo seguinte. |
| e ainda | TRUE se ambos os termos forem TRUE. |
| Ou | TRUE se um ou ambos os termos forem VERDADEIROS. |
| Xor | TRUE se um dos termos, mas não ambos, forem VERDADEIROS. |
| Eqv | TRUE se ambos os termos forem TRUE ou ambos os termos forem FALSE. |
| Imp | VERDADEIRO se o termo esquerdo for FALSO ou o termo direito for VERDADEIRO. |
Operadores comparativos
A tabela a seguir mostra os operadores de comparação usados em expressões condicionais. Esses operadores de comparação só podem ocorrer entre dois valores.
| Operador | Significado |
|---|---|
| = | TRUE se o valor esquerdo for igual ao valor direito. |
| <> | TRUE se o valor esquerdo não for igual ao valor direito. |
| > | TRUE se o valor esquerdo for maior que o valor direito. |
| >= | TRUE se o valor esquerdo for maior ou igual ao valor direito. |
| < | TRUE se o valor esquerdo for menor que o valor direito. |
| <= | TRUE se o valor esquerdo for menor ou igual ao valor direito. |
Operadores de substring
A tabela a seguir mostra os operadores de substring usados em expressões condicionais. Os operadores de substring podem ocorrer entre dois valores de cadeia de caracteres.
| Operador | Significado |
|---|---|
| >< | TRUE se a cadeia de caracteres esquerda contiver a cadeia de caracteres direita. |
| << | TRUE se a cadeia de caracteres esquerda começar com a cadeia de caracteres direita. |
| >> | TRUE se a cadeia de caracteres esquerda termina com a cadeia de caracteres direita. |
Operadores numéricos bitwise
A tabela a seguir mostra os operadores numéricos bit a bit em expressões condicionais. Esses operadores podem ocorrer entre dois valores inteiros.
| Operador | Significado |
|---|---|
| >< | Bitwise E, TRUE se os inteiros esquerdo e direito tiverem quaisquer bits em comum. |
| << | True se os 16 bits altos do inteiro esquerdo forem iguais ao inteiro direito. |
| >> | True se os 16 bits baixos do inteiro esquerdo forem iguais ao inteiro direito. |
Valores de estado do recurso e do componente
A tabela a seguir mostra onde é válido usar os símbolos do operador de recurso e componente.
| Operador <estado> | Onde esta sintaxe é válida |
|---|---|
| $component-acção | Na tabela Condition e na sequência tabelas, após o CostFinalize ação. |
| &recurso-ação | Na tabela Condition e na sequência tabelas, após o CostFinalize ação. |
| !estado-recurso | Na tabela Condition e na sequência tabelas, após o CostFinalize ação. |
| ?estado-componente | Na tabela Condition e na sequência tabelas, após o CostFinalize ação. |
A tabela a seguir mostra os valores de estado de recurso e componente usados em expressões condicionais. Esses estados não são definidos até que MsiSetInstallLevel seja chamado, diretamente ou pela ação CostFinalize.
| Estado | Valor | Significado |
|---|---|---|
| INSTALLSTATE_UNKNOWN | -1 | Nenhuma ação a ser tomada no recurso ou componente. |
| INSTALLSTATE_ADVERTISED | 1 | Recurso anunciado. Este estado não está disponível para componentes. |
| INSTALLSTATE_ABSENT | 2 | Recurso ou componente não está presente. |
| INSTALLSTATE_LOCAL | 3 | Recurso ou componente no computador local. |
| INSTALLSTATE_SOURCE | 4 | Recurso ou componente executado a partir da origem. |
Por exemplo, a expressão condicional "&MyFeature=3" é avaliada como True somente se MyFeature estiver mudando de seu estado atual para o estado de instalação no computador local, INSTALLSTATE_LOCAL.
Observe que você não deve depender da condição $Component 1=3 para verificar se o Component1 está instalado localmente no computador. Isso pode falhar se o Component1 for instalado por mais de um produto. Após o Component1 ter sido instalado localmente pelo Product1, o instalador avalia a condição $Component 1=3 como False durante a instalação do Product2. Isso ocorre porque o instalador determina a versão do componente usando o caminho de chave do componente e marca o componente para instalação se sua versão for maior ou igual ao componente instalado.
Observe que o instalador não fará comparações diretas do tipo de dados Versão em instruções condicionais. Por exemplo, você não pode usar operadores comparativos para comparar versões como "01.10" e "1.010" em uma instrução condicional. Em vez disso, use um método válido para procurar uma versão, como descrito em Procurando por aplicativos existentes, arquivos, entradas do Registro ou entradas de arquivo .inie, em seguida, defina uma propriedade.
Tópicos relacionados