2011-11-23 8 views
9

c'è un modo per mostrare una finestra di messaggio a causa di alcune condizioni ma continua l'installazione?Wix: Mostra finestra di messaggio condizionale senza annullare

Vorrei informare l'utente sulla quantità consigliata di RAM se ha meno.

Se uso

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

l'installazione non riesce su macchine con meno di 4 GB di RAM.

Come posso evitare questo?

Grazie per il vostro aiuto!

risposta

10

Grazie alla risposta di Cosmin Pirvu ho trovato la seguente soluzione con custom actions a lavorare per me, voglio condividere con voi:

<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

Sarebbe bene usare anche session.Message - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx - invece di MsgBox. Ciò contribuirà a mantenere la parenting delle finestre e la messa a fuoco corretta. –

+0

Mille grazie per il tuo suggerimento! Sotto Win7 abbiamo incontrato spesso il problema che MsgBox appariva "dietro" la finestra di installazione vera e propria. Se ti capisco correttamente, questo potrebbe essere risolto usando 'session.Message'? (Devo ammettere che non riesco ancora a comprendere completamente la documentazione a cui sei collegato:?) –

+1

Esatto, se usi session.Message, sarà genitoriale correttamente in modo che non rimanga dietro la finestra MSI principale. L'API VB che ho collegato è solo un wrapper su MsiProcessMessage - http://msdn.microsoft.com/en-us/library/windows/desktop/aa370354(v=vs.85).aspx - e il suo collegamento See Also è utile - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371614(v=vs.85).aspx –

2

Windows Installer non offre supporto diretto per questo. Ma puoi usare un semplice custom action. Può essere un file EXE, DLL, VBScript, JavaScript, ecc

+0

Grazie per il una precisazione. Ho aggiunto una risposta contenente l'azione personalizzata per risolvere il mio problema. –

Problemi correlati