Pregunta

Tengo un PRQ que instala MS SQL, objetos de administración compartida . Tengo una condición que instala el PRQ si esta clave de registro no existe

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

Esto funciona bien hasta que un usuario tiene SMO instalado con un código de producto diferente: esto le sucede a nuestro equipo de dev todo el tiempo cuando instalan SQL2008. El instalador que inicia el PRQ existe con un error.

Necesito una mejor condición. Lo que me gustaría hacer es: If (versión <= w.x.y.z || No se encontró ninguna versión) Luego instale PRQ

en el editor de requisitos previos installshield dice

Se deben cumplir las siguientes condiciones para que se ejecute el requisito previo. Aquí puede definir archivos y claves de registro que el requisito previo será Busque determinar si se debe ejecutar. Si no hay Condiciones, el requisito previo siempre se ejecutará.

Esto está de acuerdo con mis hallazgos: las condiciones se encuentran juntas. ¿Hay alguna salsa no publicada para o o negar las condiciones en el XML? Estoy molestado en este momento porque busco ejecutar un PRQ si la versión en el registro es

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

Type="32" es 'Una entrada de registro tiene un valor de versión específico' Comparación="2" es 'Los datos en el sistema de destino son menores de los datos especificados'

Pregunta del lado: ¿Hay un lugar donde se enumeran los tipos y comparaciones?

Este tipo de comparación no tiene una comparación con los datos de estado en el sistema de destino es menor que los datos especificados o no existen '. Como ahora, si la clave existe en una versión más baja, las cosas funcionan, pero si la tecla no existe (i.e. SMO no está instalada), el PRQ no está instalado.

¿Hay alguna manera de hacer este trabajo? La condición de 'un archivo con cierta versión existe' tiene A si la versión del archivo es menor que la versión especificada anteriormente (o el archivo no se encuentra en la opción del sistema de destino). Pero no funcionará para revisar un archivo instalado por SMO: el usuario puede haberlo instalado en un poco de unidad que no sea C:.

Espero que me esté perdiendo algo. ¿Qué harías?

¿Fue útil?

Solución

Lo que normalmente hago no es usar cosas abstractas como las entradas ARP para detectar la dependencia.Voy por la dependencia misma.Si necesita una DLL, busque para ver si la DLL está allí, en lugar de preocuparse por detectar algo que debería haber instalado la DLL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top