2011-11-23 90 views
9

有没有某种方式显示消息框由于某些条件,但继续安装?Wix:显示有条件的消息框没有取消

我想告诉用户有关RAM的建议数量,如果他少了。

如果我使用

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

安装与小于4GB的RAM机不成功。

我该如何避免这种情况?

感谢您的帮助!

回答

10

由于科斯明Pirvu的答案,我发现custom actions以下解决方案为我工作,我想与大家分享:

<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

也可以使用session.Message - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx - 而不是MsgBox。这将有助于保持窗口父母和正确的重点。 –

+0

非常感谢您的提示!在Win7下,我们经常遇到MsgBox出现在实际安装程序窗口“后面”的问题。如果我理解正确,可以通过使用'session.Message'来解决这个问题? (我不得不承认,我还没有完全理解你链接到的文档:?) –

+1

正确的,如果你使用session.Message,它将被正确地授权,以便它不会落在主MSI窗口后面。我链接到的VB API只是MsiProcessMessage的一个包装 - http://msdn.microsoft.com/en-us/library/windows/desktop/aa370354(v=vs.85).aspx - 它的See Also链接是有用 - http://msdn.microsoft.com/en-us/library/windows/desktop/aa371614(v=vs.85).aspx –

2

Windows Installer不提供对此的直接支持。但你可以使用简单的custom action。它可以是一个EXE,DLL的VBScript,JavaScript的等

+0

感谢澄清。我添加了一个包含解决我的问题的自定义操作的答案。 –