2012-03-19 139 views
1

我想在先决条件检查过程中创建一个WIX安装程序,我想查看系统上安装的RAM数量。如果小于1 GB,它应该向用户显示消息表示“系统上的RAM数量少于本产品所需的最小数量,您是否仍想继续安装?” 显示的消息框中有两个按钮(是和否)。如果用户单击是,我继续安装,如果用户单击否,我将只显示完成对话框或中止安装。我怎样才能做到这一点?检查WIX安装程序中的RAM

+0

我认为这不是安装程序问题。像“1GB”内存的要求通常是B.S.由市场驱动的绒毛,与实际工程需求无关。此外,安装后RAM的数量可能会发生变化,所以最好在运行时由应用程序处理(如果有的话)。 – 2012-03-19 13:28:16

回答

6

Windows Installer将系统RAM数量设置为PhysicalMemory property。通常这个属性被用作launch condition,它会停止安装并向用户显示一条消息。

启动条件不允许用户继续。所以如果这不是一个选项,解决方案是使用custom action。您的自定义操作可以检查PhysicalMemory并在不足时显示自定义消息框。根据用户的回答,自定义操作可以返回0继续或1602停止。

+0

嗨,你可以帮我解释一下上面解释的示例代码。我不知道如何显示自定义消息框并从中返回值并解释安装程序中的值。 – 2012-03-19 12:26:39

+1

我会给你一个+1提PhysicalMemory属性,但不需要自定义操作。这是SpawnDialog的用途。 – 2012-03-19 12:50:25

4

自定义操作不需要实现您的要求。您可以创建一个Windows Installer对话框,并将其插入到另外两个对话框(例如WelcomeDlg和VerifyReadyDlg)之间,以基于PhysicalMemory属性进行有条件调用。

这里的ControlEvents和条件是什么样子的WelcomeDlg:

SpawnDialog NotEnoughMemoryDlg PhysicalMemory < X NewDialog VerifyReadyDlg 1

然后创建一个对话框,看起来像一个mesage箱,并调用它NotEnoughMemoryDlg。为EndDialog的Yes按钮设置一个ControlEvent返回1.为没有按钮的ControlEvent指定EndDialog Exit 1.

如果系统有足够的内存,它将跳过对自定义对话框的调用。如果系统没有足够的内存,它会调用对话框。如果用户点击是,它会返回并进入下一个控制事件,该事件将您带到VerifyReadyDlg。如果用户单击否,它将返回一个取消消息并调用安装完成取消对话框。

我真的不这样做在维克斯多UI的工作(我主要使用InstallShield但底层MSI概念是相同的),所以我真的不能给你“做”的代码。特别是因为我不知道你目前的WiX UI代码是什么样的。 (您使用的是WiXUI扩展?)