Pergunta

No Windows Server 2003 Standard Edition, um cliente instalado .NET 3.5 SP 1. Sempre que executar o nosso instalador construído com InstallShield 2009, o instalador reclama que a máquina de destino não tem o .NET 3.5 SP 1 dependência. O cliente tem desinstalado e reinstalado .NET 3.5 SP 1 um par de vezes, reiniciando a cada vez, mas o nosso instalador não detecta-lo. O instalador, aliás, funciona bem em qualquer outro lugar.

Para teste, executamos com sucesso um de nossos aplicativos construídos com .NET 3.5 SP 1 (ele usa LINQ), mas não tem um instalador. Não há problemas, por isso estamos confiantes de que o quadro correto está instalado. Nós suspeitamos que há algo no registro desta máquina que só não vai satisfazer lógica dependência InstallShield 2009 é. O que vamos fazer a seguir?

Foi útil?

Solução

Você está usando os pré-requisitos de http://kb.acresso.com /selfservice/viewContent.do?externalID=Q200284 ou algo mais? Se os pré-requisitos, é fácil para abri-los no editor de pré-requisito para identificar o que chaves do registro ou arquivos que verificar.

Outras dicas

Como é o seu instalador configurado para detectar NET 3.5 SP1. Michael está certo em que é a vontade de olhar para a versão que do da NET 3.5 SP1 e verificar que a entrada Registro. Você pode configurar uma chave mais 'genérico' para procurar no editor de pré-requisito.

Uma mais maneira é lá que você pode verificar o .Net Framework. Se o seu projeto installshield suporta InstallScript, em seguida, por meio de script de arquivar isso.

usando DOTNETFRAMEWORKINSTALLED esta é uma é uma constante predefinida utilizada para representar um valor que é passado para ou devolvidas por um ou mais funções integradas. Você não pode alterar o valor de uma constante predefinida.

e REGDB_KEYPATH_DOTNET_30 esta é uma constante cujo valor pré-definido é o local de registo (não incluindo a chave de raiz) da chave de registo para a versão 3.0 do Framework. Ele é definido da seguinte forma:

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

Você não pode alterar o valor de uma constante predefinida. Você pode usar essa constante para especificar uma chave ao chamar uma função geral de registro relacionadas. Esta constante predefinida também é suportado ao usar o função é.

Por exemplo:

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top