2012-03-19 262 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擴展?)