2011-11-23 13 views
9

¿hay alguna forma de mostrar un cuadro de mensaje debido a alguna condición pero continuar la instalación?Wix: mostrar el cuadro de mensaje condicional sin cancelar

Me gustaría informar al usuario sobre la cantidad recomendada de RAM si tiene menos.

Si uso

<Condition Message="For running $(var.ProductName), 4GB of physical memory are recommended."> 
    <![CDATA[PhysicalMemory > 3500]]> 
</Condition> 

la instalación no se realiza correctamente en máquinas con menos de 4 GB de RAM.

¿Cómo puedo evitar esto?

Gracias por su ayuda!

Respuesta

10

Gracias a la respuesta de Cosmin Pîrvu he encontrado la siguiente solución con custom actions a trabajar para mí, quiero compartir con ustedes:

<Custom Action="PhysicalMemoryWarning" After="InstallInitialize" /> 
<CustomAction Id="PhysicalMemoryWarning" Script="vbscript"> 
    <![CDATA[ 
    If session.Property("PhysicalMemory") < 3500 Then 
    MsgBox("For running $(var.ProductName), 4GB of physical memory are recommended.") 
    End If 
    ]]> 
</CustomAction> 
+6

Sería bueno usar también session.Message - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx - en lugar de MsgBox. Esto ayudará a mantener la ventana de crianza y el enfoque correcto. –

+0

¡Muchas gracias por su pista! Bajo Win7 nos encontramos con frecuencia con el problema de que el MsgBox aparecía "detrás" de la ventana del instalador real. Si te entiendo correctamente, esto se puede solucionar usando 'session.Message'? (Tengo que admitir que todavía no entiendo completamente la documentación con la que vinculó:?) –

+1

Correcto, si usa session.Message, se criará correctamente para que no vaya detrás de la ventana principal de MSI. La API de VB a la que se vinculó es solo una envoltura alrededor de MsiProcessMessage - http://msdn.microsoft.com/en-us/library/windows/desktop/aa370354(v=vs.85).aspx - y su vínculo Ver también es útil - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371614(v=vs.85).aspx –

2

Windows Installer no ofrece soporte directo para esto. Pero puede usar un simple custom action. Puede ser un archivo EXE, DLL, VBScript, JavaScript, etc.

+0

Gracias por la aclaración. He agregado una respuesta que contiene la acción personalizada para resolver mi problema. –

Cuestiones relacionadas