Pergunta

Eu tenho um PRQ que instala MS SQL Objetos de Gerenciamento Compartilhado.Eu tenho uma condição que instala o PRQ se esta chave de registo não existir

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{08ECC740-2B3E-45D7-860C-59B511386286}

Isso funciona bem até que um usuário tem SMO instalado com um diferente código do produto - isso acontece com a nossa equipe de desenvolvimento o tempo todo quando eles instalar o SQL2008.O instalador a PRQ começa a existir com um erro.

Eu preciso de uma melhor condição.O que eu gostaria de fazer é:Se (Versão <= w.x.y.z || a Versão encontrada) Em seguida, instale PRQ

No InstallShield pré-Requisito editor ele diz

As Seguintes condições devem ser atendidas para que o pré-requisito para executar.Aqui você pode definir arquivos e chaves do registro que o pré-requisito será olhar para determinar se ele deve ser executado.Se não há condições, o pré-requisito será sempre executado.

Isto concorda com as minhas conclusões - as condições estão Concatenadas juntos.Há alguns inéditos molho OU ou negar as condições em XML?Eu estou zangada agora, porque olhando para executar um prq se a versão no registro é < o que eu estou a instalar.

<conditions>
    <condition Type="32" Comparison="2" 
       Path="HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion" 
       FileName="Version" ReturnValue="10.1.2531.0">
    </condition>
</conditions>

Tipo="32") é Uma entrada de registo tem um determinado valor de versão' Comparação="2" é "de Dados no sistema de destino é menor do que especificado de dados'

Do lado pergunta:Existe um lugar onde os Tipos e as Comparações são enumerados?

Este tipo de Comparação não tem uma comparação com o estado 'de Dados no sistema de destino é menor que o especificado dados ou não existe'.Como é agora, se a chave existe em uma versão menor que as coisas funcionam - mas, se a chave não existir (por exemplo,SMO não está instalada) o PRQ não está instalado.

Existe uma maneira de fazer este trabalho?O 'Um arquivo com determinados existir uma versão de' condição de não ter um, Se a versão do arquivo é MENOR do QUE a versão especificada acima (ou o arquivo NÃO É ENCONTRADO no sistema de destino) opção.Mas ele não vai funcionar para verificar um arquivo instalado pelo SMO - o usuário pode ter instalado para uma unidade diferente da unidade C:.

Eu estou esperando eu estou faltando alguma coisa.O que você faria?

Foi útil?

Solução

O que eu geralmente faço é não usar coisas abstratas como as entradas ARP para detectar a dependência.Eu vou para a dependência em si.Se você precisa de uma DLL, em seguida, veja se a DLL está lá, em vez de se preocupar com a detecção de algo que deveria ter instalada a DLL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top