Pregunta

En Windows Server 2003 Standard Edition, un cliente instaló .NET 3.5 SP 1. Cada vez que ejecutamos nuestro instalador creado con InstallShield 2009, el instalador se queja de que la máquina de destino no tiene la dependencia de .NET 3.5 SP 1. El cliente ha desinstalado y reinstalado .NET 3.5 SP 1 un par de veces, reiniciando cada vez, pero nuestro instalador nunca lo detecta. El instalador, por cierto, funciona bien en cualquier otro lugar.

Para probar, ejecutamos con éxito una de nuestras aplicaciones compiladas con .NET 3.5 SP 1 (usa LINQ) pero no tiene un instalador. No hay problemas allí, por lo que estamos seguros de que está instalado el Framework correcto. Sospechamos que hay algo en el registro de esta máquina que simplemente no satisfará la lógica de dependencia de InstallShield 2009. ¿Qué hacemos a continuación?

¿Fue útil?

Solución

¿Está utilizando los requisitos previos de http://kb.acresso.com /selfservice/viewContent.do?externalID=Q200284 o algo más? Si los requisitos previos, es fácil abrirlos en el editor de requisitos previos para identificar qué claves o archivos de registro verifican.

Otros consejos

¿Cómo está configurado su instalador para detectar .net 3.5 sp1? Michael tiene razón en que IS buscará su versión de .net 3.5 sp1 y buscará esa entrada de registro. Puede configurar una clave más 'genérica' para buscar en el editor de requisitos previos.

Una forma más es que puede verificar el .Net Framework. Si su proyecto installshield es compatible con Installscript, entonces, a través de un script, lo archivará.

mediante el uso de DOTNETFRAMEWORKINSTALLED esta es una constante predefinida que se utiliza para representar un valor que una o más funciones integradas pasan o devuelven. No se puede cambiar el valor de una constante predefinida.

y REGDB_KEYPATH_DOTNET_30 Esta es una constante predefinida cuyo valor es la ubicación del registro (sin incluir la clave raíz) de la clave del registro para la versión 3.0 de .NET Framework. Se define de la siguiente manera:

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

No puede cambiar el valor de una constante predefinida. Puede usar esta constante para especificar una clave al llamar a una función relacionada con el registro general. Esta constante predefinida también es compatible cuando se utiliza la función Es .

por ejemplo:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top