2009-12-28 127 views
3

我的第一頁包含2個單選按鈕:1個用於安裝,其他用於升級。根據用戶的選擇,我必須顯示用於安裝或升級的自定義頁面。我怎樣才能做到這一點?NSIS-如何動態顯示特定的自定義頁面?

+0

只需添加另一種方法,不使用'RelGotoPage'功能。 – VonC 2009-12-28 13:12:43

回答

2

如果在創建回調函數的自定義頁面調用abort,頁面會被跳過:

Function MyPage 
${If} $somevar == "something" 
Abort 
${EndIf} 
;Show page with nsDialogs or InstallOptions here... 
FunctionEnd 

page custom MyPage 
1

我還沒有直接測試過(我會很快,因爲我的NSIS腳本將需要該功能),但也許the function RelGotoPage可以做你所需要的。

該函數使NSIS從當前頁面轉到相對指定的頁面。
使用它僅在:

  • 正常功能,
  • 的 「.onUserAbort」 回調函數(W/O MUI)或
  • !define MUI_CUSTOMFUNCTION_ABORT 「功能」(W/MUI)

此功能還允許InstallOptionsInstallOptionsEx使用其功能,以便您可以選擇哪些控件將取代默認的NSIS按鈕。


注:this thread提出了不同的方法:

你應該嘗試從,因爲當用戶點擊返回按鈕,他們仍然會被顯示在頁面上,使用RelGotoPage避免。
如果某個條件被設置爲跳過它們,則應該在頁面的預定義函數和自定義頁面的show函數中調用Abort

因此,通過根據您的按鈕設置適當的變量,您可以跳過不想顯示的頁面,然後停在相關頁面。

見NSIS手冊Callback section

每個內置頁有三個回調函數:預功能,展示創造功能和休假功能。

  • 在創建頁面右側前預函數被調用,
  • 顯示功能是正確的它被創建後,它顯示之前和
  • 右後留功能被稱爲所謂的用戶已經按下了下一個按鈕並且在頁面離開之前。

和:

  • 預功能允許您跳過使用中止的頁面。
  • 該顯示功能允許您使用CreateFontSetCtlColorsSendMessage等調整頁面的用戶界面。
  • 離開功能允許您強制用戶使用中止保持當前頁面。
相關問題