1

私のインストールでは、新しいカスタム ページを追加しました。MUI_PAGE_INSTFILES の後に来ます。しかし、このカスタム ページの前にはありませんでした。問題は、このカスタム ページを追加した後、それが終了ページに影響を与え、終了ページで戻るボタンが有効になっていることです。無効になる前に (戻るボタンを無効にするためのコーディングは行っていません)。ただし、新しいカスタム ページを追加すると、ページの終了ページで戻るボタンが有効になります。

私は以下のページの順序を持​​っています

!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_PAGE_LICENSE "${Stpath}read me.txt"

!define MUI_PAGE_CUSTOMFUNCTION_PRE wel_pre

!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryPageLeave 

!insertmacro MUI_PAGE_DIRECTORY

!insertmacro MUI_PAGE_INSTFILES

Page custom InstallPageCreate checkinstdir

!define MUI_FINISHPAGE_RUN "$INSTDIR\setupx.exe"

!define MUI_FINISHPAGE_RUN_PARAMETERS ""

!define MUI_PAGE_CUSTOMFUNCTION_PRE welfinish

!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow 

!define MUI_PAGE_CUSTOMFUNCTION_LEAVE myleave

!insertmacro MUI_PAGE_FINISH

行の前にPage custom InstallPageCreate checkinstdirが存在せず、終了ページで戻るボタンが有効になっていませんでした。

そのカスタム ページを追加すると、終了ページに戻るボタンが有効になります。カスタム ページは、特定のコマンド ラインがインストーラーに渡された場合にのみ表示されます。したがって、setup.exe にコマンド ラインが渡されない場合、MUI_PAGE_INSTFILES の後に終了ページが表示されます。ユーザーが [戻る] ボタンをクリックすると、再び MUI_PAGE_INSTFILES が表示され、ファイルがインストール ディレクトリにコピーされます。また、そのカスタム ページが表示される場合、そのページには戻るボタンが無効になっていますが、これは適切です。また、この戻るボタンの無効化がどこで行われたかを知る必要がありますか? マクロ MUI_PAGE_INSTFILES(nsis 組み込みマクロ)で実行されますか?

だから私は終了ページで戻るボタンを無効にする必要があります。助けてください

4

1 に答える 1

3

makensis.exe (CEXEBuild::ProcessPages) には、ページにフラグを設定するコードがいくつかあります。UI.c のコードはこのフラグをチェックします。これをオーバーライドするには、ページ表示コールバック関数を使用します。

Function InstallPageCreate
StartMenu::Init /autoadd "Dummy page"
StartMenu::Show
FunctionEnd

!include MUI2.nsh
!insertmacro MUI_PAGE_INSTFILES
Page custom InstallPageCreate
!define MUI_FINISHPAGE_RUN "$INSTDIR\setupx.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS ""
!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow 
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Function FinishPageShow
GetDlgItem $0 $HWNDPARENT 3
EnableWindow $0 0
FunctionEnd
于 2013-10-28T20:23:20.380 に答える