Domanda

Ho un PRQ che installa MS SQL Oggetti di gestione condivisa . Ho una condizione che installa il PRQ se questa chiave di registro non esiste

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

funziona bene fino a quando un utente ha installato SMO con un codice prodotto diverso: ciò accade al nostro team di Dev tutto il tempo in cui installiscono SQL2008. L'installatore Inizia il PRQ esiste con un errore.

Ho bisogno di una condizione migliore. Quello che mi piacerebbe fare è: Se (versione <= w.x.y.z || Nessuna versione trovata) Quindi installare PRQ

Nel InstallShield Prerequisite Editor dice

.

Le seguenti condizioni devono essere soddisfatte per il prerequisito da eseguire. Qui puoi definire i file e le chiavi del registro che il prerequisito lo farà Cerca per determinare se dovrebbe essere eseguito. Se non ci sono Condizioni, il prerequisito funzionerà sempre.

Questo è d'accordo con le mie conclusioni - le condizioni sono eed insieme. C'è qualche salsa non pubblicata per o negare le condizioni nell'XML? Sono irritato in questo momento perché cerca di eseguire un PRQ se la versione nel registro è

<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" è 'una voce del registro ha un valore di versione specificato " Confronto="2" I dati sul sistema di destinazione sono inferiori a dati specificati

Domanda laterale: c'è un posto dove sono elencati i tipi e i confronti?

Questo tipo di confronto non ha un confronto da confronto da "I dati sul sistema di destinazione sono meno di dati specificati o non esiste '. Come è ora, se la chiave esiste in una versione più bassa funziona - ma se la chiave non esiste (I.e. SMO non è installato) il PRQ non è installato.

C'è un modo per fare questo lavoro? Il "file con una determinata versione esiste" ha una versione se la versione del file è inferiore alla versione specificata sopra (o il file non viene trovato sull'opzione del sistema di destinazione). Ma non funzionerà per controllare un file installato da SMO - l'utente potrebbe averlo installato su un po 'di guida diverso da C:.

Spero che mi manchi qualcosa. Cosa faresti?

È stato utile?

Soluzione

Quello che in genere non è usare cose astratte come le voci arp per rilevare la dipendenza.Vado per la dipendenza stessa.Se hai bisogno di una DLL, quindi guarda per vedere se la DLL è lì invece di preoccuparti di rilevare qualcosa che avrebbe dovuto installare la DLL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top