0

В Windows Server 2003 Standard Edition клиент установил .NET 3.5 SP 1. Всякий раз, когда мы запускаем наш установщик, созданный с помощью InstallShield 2009, установщик жалуется, что на целевом компьютере нет зависимости .NET 3.5 SP 1. Клиент удалил и переустановил .NET 3.5 SP 1 пару раз, перезагружая каждый раз, но наш установщик никогда не обнаруживает его. Установщик, кстати, отлично работает везде.Почему InstallShield 2009 не обнаружит .NET 3.5 SP 1?

Чтобы проверить, мы успешно выполнили одно из наших приложений, созданное с помощью .NET 3.5 SP 1 (оно использует LINQ), но не имеет установщика. Там нет проблем, поэтому мы уверены, что установлен правильный Framework. Мы подозреваем, что в реестре этой машины есть что-то, что не будет удовлетворять логике зависимостей InstallShield 2009. Что мы делаем дальше?

ответ

1

Вы используете предварительные условия от http://kb.acresso.com/selfservice/viewContent.do?externalID=Q200284 или что-то еще? Если необходимые условия, их легко открыть в редакторе предварительных условий, чтобы определить, какие ключи реестра или файлы они проверяют.

+0

Эти ключи присутствуют, поэтому мы берем вопрос с InstallShield. – flipdoubt

0

Как ваш установщик настроен на обнаружение .net 3.5 sp1. Майкл прав в том, что IS будет искать его версию .net 3.5 sp1 и проверять эту запись в реестре. Вы можете настроить более «общий» ключ для поиска в редакторе предварительных условий.

+0

Чем больше "generic" key? – flipdoubt

0

Еще один способ - проверить .Net Framework. Если ваш проект installshield поддерживает Installscript, то через скрипт вы его архивируете.

с помощью DOTNETFRAMEWORKINSTALLED Это предопределенная константа, используемая для представления значения, которое передается или возвращается одной или несколькими встроенными функциями. Вы не можете изменить значение предопределенной константы.

и REGDB_KEYPATH_DOTNET_30 это предопределенная константа, значение которой является местом реестра (не включая коренной ключ) ключа реестра для версии 3.0 .NET Framework. Она определяется следующим образом:

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

Вы не можете изменить значение предопределенной константы. Вы можете использовать эту константу для указания ключа при вызове общей функции, связанной с реестром. Эта предопределенная константа также поддерживается при использовании функции Is.

, например:

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;