0

Auf Windows Server 2003 Standard Edition installierte ein Kunde .NET 3.5 SP 1. Wenn wir unser mit InstallShield 2009 erstelltes Installationsprogramm ausführen, beschwert sich das Installationsprogramm darüber, dass der Zielcomputer nicht über die .NET 3.5 SP 1-Abhängigkeit verfügt. Der Kunde hat .NET 3.5 SP 1 mehrmals deinstalliert und erneut installiert, wobei er jedes Mal neu gestartet wurde, aber unser Installationsprogramm erkennt es nie. Der Installateur funktioniert übrigens überall anders.Warum erkennt InstallShield 2009 .NET 3.5 SP 1 nicht?

Zum Testen haben wir erfolgreich eine unserer Apps ausgeführt, die mit .NET 3.5 SP 1 erstellt wurde (es verwendet LINQ), verfügt jedoch nicht über ein Installationsprogramm. Keine Probleme dort, also sind wir sicher, dass das richtige Framework installiert ist. Wir vermuten, dass sich in der Registry dieses Rechners etwas befindet, das die Abhängigkeitslogik von InstallShield 2009 nicht erfüllt. Was machen wir als Nächstes?

Antwort

1

Verwenden Sie die Voraussetzungen von http://kb.acresso.com/selfservice/viewContent.do?externalID=Q200284 oder etwas anderes? Wenn die Voraussetzungen erfüllt sind, können Sie diese einfach im Voraussetzungs-Editor öffnen, um zu ermitteln, welche Registrierungsschlüssel oder Dateien sie prüfen.

+0

Diese Schlüssel vorhanden sind, so nehmen wir das Problem oben mit Installshield. – flipdoubt

0

Wie ist Ihr Installer konfiguriert, um .net 3.5 SP1 zu erkennen. Michael hat recht damit, dass IS nach seiner Version von .net 3.5 sp1 sucht und nach diesem Registrierungseintrag sucht. Sie können einen "generischen" Schlüssel konfigurieren, nach dem im vorausgesetzten Editor gesucht werden soll.

+0

Was ist der "generische" Schlüssel? – flipdoubt

0

Ein weiterer Weg ist, dass Sie das .Net Framework überprüfen können. Wenn Ihr installshield-Projekt Installscript unterstützt, archivieren Sie dieses Skript.

mit DOTNETFRAMEWORKINSTALLED Dies ist eine vordefinierte Konstante, die zur Darstellung eines Werts verwendet wird, der an eine oder mehrere integrierte Funktionen übergeben oder zurückgegeben wird. Sie können den Wert einer vordefinierten Konstante nicht ändern.

und REGDB_KEYPATH_DOTNET_30 Dies ist eine vordefinierte Konstante, deren Wert der Registrierungsspeicherort (ohne den Stammschlüssel) des Registrierungsschlüssels für Version 3.0 von .NET Framework ist. Es ist wie folgt definiert:

** Software \ Microsoft \ NET Framework \ Setup \ NDP \ v3.0 **

Sie können nicht den Wert einer vordefinierten Konstante ändern. Sie können diese Konstante verwenden, um beim Aufrufen einer allgemeinen registrierungsbezogenen Funktion einen Schlüssel anzugeben. Diese vordefinierte Konstante wird auch bei Verwendung der Funktion Is unterstützt.

zum Beispiel:

function BOOL DetectDotNet20() 
     BOOL bStatus; 
     STRING PROGRAM; 
     NUMBER nWait; 
    begin 
     bStatus = Is(DOTNETFRAMEWORKINSTALLED, REGDB_KEYPATH_DOTNET_20); 
     if (bStatus) then 
      MessageBox("Dotnet 2.0 is present on the system.", INFORMATION); 
      bStatus = TRUE; 
     else 
      MessageBox("Dotnet 2.0 is not present on the system.", INFORMATION); 
     endif; 
     return bStatus; 
    end;