nsisを使用してインストーラーを構築しています。インストーラーのディレクトリページダイアログにリソースハッカーを使用して5つのボタンを追加しました。また、私はこれらの関数を定義しました:
!define IDC_BUTTON_CDRIVEPATH 1200
!define IDC_BUTTON_DDRIVEPATH 1201
!define IDC_BUTTON_EDRIVEPATH 1202
!define IDC_BUTTON_FDRIVEPATH 1203
!define IDC_BUTTON_GDRIVEPATH 1204
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\licensefile.txt"
!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
Function DirectoryShow
GetFunctionAddress $R0 DDRIVEPATH
ButtonEvent::AddEventHandler ${IDC_BUTTON_DDRIVEPATH} $R0
FunctionEnd
Function DirectoryPre
GetFunctionAddress $R6 EDRIVEPATH
ButtonEvent::AddEventHandler ${IDC_BUTTON_EDRIVEPATH} $R6
line 1-- GetFunctionAddress $R7 FDRIVEPATH
line 2-- ButtonEvent::AddEventHandler ${IDC_BUTTON_FDRIVEPATH} $R7
line 3-- GetFunctionAddress $R8 GDRIVEPATH
line 4-- ButtonEvent::AddEventHandler ${IDC_BUTTON_GDRIVEPATH} $R8
FunctionEnd
2つのハンドラーFDRIVEPATHとGDRIVEPATHを削除しない場合、つまり行を削除しない場合--LINE 1,2,3,4、then、-------------COMPONENTSに移動するときページをクリックし、[戻る]ボタンを押して[ディレクトリ]ページに戻ると、インストーラーが自動的に終了します。なぜそれが起こっているのか分かりません。助けてください?2日以来それで立ち往生しています。
しかし、2つのハンドラーFDRIVEPATHとGDRIVEPATHを削除すると、つまり行1、2、3、4を削除すると、インストーラーは正しく実行されます。
これらの5つのボタンのすべてのハンドラーが必要です。私はそれらのいずれかを削除したくありません。
以下は私のディレクトリページのダイアログです:---------