Question

J'ai un prq qui installe des objets de gestion partagés partagés MS SQL . J'ai une condition qui installe le prq si cette clé de registre n'existe pas

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

Cela fonctionne bien jusqu'à ce qu'un utilisateur ait SMO installé avec un code de produit différent - cela arrive à notre équipe DEV tout le temps lorsqu'il installe SQL2008. L'installateur Le prq commence existe avec une erreur.

J'ai besoin d'une meilleure condition. Ce que j'aimerais faire, c'est: Si (version <= w.x.y.z || Aucune version trouvée) Puis installez prq

dans l'éditeur InstallShield Prérequis Il dit

Les conditions suivantes doivent être respectées pour que la condition préalable soit exécutée. Ici vous pouvez définir des fichiers et des clés de registre que la prérequis sera Cherchez pour déterminer si cela devrait être exécuté. S'il n'y a pas conditions, la condition préalable fonctionnera toujours.

Cela convient avec mes conclusions - les conditions sont andrées ensemble. Y a-t-il une sauce non publiée à ou ou négier des conditions dans le XML? Je suis vexé en ce moment car je cherche à exécuter un prq si la version du registre est

<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" est 'une entrée de registre a une valeur de version spécifiée' Comparaison="2" "Les données sur le système cible sont inférieures à des données spécifiées '

Question latérale: Y a-t-il un endroit où les types et les comparaisons sont énumérés?

Ce type de comparaison ne compare pas la comparaison des données d'état sur le système cible est inférieure à celle des données spécifiées ou n'existe pas '. Comme c'est maintenant, si la clé existe à une version inférieure, les choses fonctionnent - mais si la clé n'existe pas (c'est-à-dire que le SMO n'est pas installé), le prq n'est pas installé.

Y a-t-il un moyen de faire ce travail? Le «fichier avec une certaine version exist» ait une condition si la version du fichier est inférieure à la version spécifiée ci-dessus (ou que le fichier n'est pas trouvé sur l'option Système cible). Mais cela ne fonctionnera pas pour vérifier un fichier installé par SMO - l'utilisateur peut l'avoir installé sur un lecteur autre que c :.

J'espère que je manque quelque chose. Que feriez-vous?

Était-ce utile?

La solution

Ce que je fais généralement, c'est pas utiliser des objets abstraits comme des entrées ARP pour détecter la dépendance.Je vais pour la dépendance elle-même.Si vous avez besoin d'une DLL, cherchez ensuite si la DLL est là au lieu de vous inquiéter de détecter quelque chose qui aurait dû installer la DLL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top