2011-04-20 14 views
12

Oye, tengo una MSI, construida con WiX, que intenta especificar una condición de inicio que se satisface solo cuando IIS está instalado. Esta condición no funciona como se desea en WS2008 x64. Funciona en mi máquina con Windows 7 x64.WIX MSI que tiene una condición de inicio para pre-solicitud de IIS, falla en WS2008

La propiedad:

<!-- This is used later in a Launch condition. --> 
<!-- see http://learn.iis.net/page.aspx/135/discover-installed-components/ --> 
<Property Id="IIS7" Value="#0"> 
    <RegistrySearch Id="IIS7W3SVC" 
        Type="raw" 
        Root="HKLM" 
        Key="SOFTWARE\Microsoft\InetStp\Components" 
        Name="W3SVC" /> 
</Property> 

La condición:

<Condition Message="Cannot install. You must install IIS before installing this product."> 
    NOT IIS56 = "#0" OR NOT IIS7 = "#0" 
</Condition> 

(también hay una propiedad para IIS6, pero que debería ser irrelevante aquí).

Un usuario informa que está viendo este mensaje de "no se puede instalar". También dice que IIS está instalado y funcionando.

¿WS2008 tiene una clave de registro diferente para la presencia de IIS?
¿Cuál es el mecanismo preferido para determinar si IIS está presente?

Esto es WIX 3.5. No estoy seguro de la versión exacta de WS2008.

Puede ser similar a the issue described here. Esa pregunta no está resuelta.

ideas?

Respuesta

30

¿Por qué no usar simplemente las extensiones Wix IIS e IISMAJORVERSION e IISMINORVERSION?

ellos Utilizamos y sé que trabajan en cada versión de Windows que hemos utilizado de XP a 2008R2

<!-- Reference WixIIsExtension in project and pull in property by ref --> 
    <PropertyRef Id="IISMAJORVERSION"/> 
    <Condition Message="Install requires IIS 6 or 7."> 
    <![CDATA[Installed OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6" OR IISMAJORVERSION = "#7"))]]> 
    </Condition> 
+2

+1. @ Chee, estás reinventando la rueda con ese enfoque. –

+0

Obtuve ese enfoque de un post de Wix Board en algún lado. Funcionó por un tiempo. – Cheeso

+0

Solo como una nota al margen. Cuando eliminé el rol de IIS, sigo recibiendo ISSMajorversion, por lo que no es 100% seguro para verificar si el IIS está instalado. – uli78

-2

WIX 3.5 no está apoyando para comprobar la versión de IIS para IIS 7.0 y superior.

Le sugiero que llame a una acción personalizada para verificar la versión de IIS y luego realice acciones sobre esa base.

RegistryKey regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\InetStp"); 
if (regKey != null) 
{ 
string IISVersion = Convert.ToString(regKey.GetValue("MajorVersion")) + "." + Convert.ToString(regKey.GetValue("MinorVersion")); 
} 

Luego, sobre la base de regKey puede establecer las variables.

+0

Esto no es cierto, han tenido compatibilidad con IIS 7.5 durante meses, tal vez más cerca de un año. –

+0

@Rob: ¿puede por favor publicar el código para el mismo? –

+0

Agregué un fragmento a mi respuesta anterior –

Cuestiones relacionadas