4

5つのコンポーネントを持つNSISモダンUI2スクリプトが動作しています。それらの1つはメインアプリケーションであり、4つのヘルパーアプリケーションがあります。アプリケーションの性質上、他のアプリケーションを実行する必要はありません。したがって、これらはすべてオプションのインストールです。これにはメインアプリケーションが含まれます。

終了ページで、メインアプリケーションを開始するオプションがあります。

!define MUI_FINISHPAGE_RUN "$INSTDIR\MyProgram.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Start the main program"

それが前に行く限り

!insertmacro MUI_PAGE_FINISH

指図。ただし、ユーザーがメインアプリケーションをインストールしない場合は、チェックボックスを表示(または少なくとも有効)にしたくありません。

最初の2行をの中に入れてみましたSection MainSectionが、それまでにUIが既に作成されているため、ボックスが表示されません。

常に有効にするのではなく、インストールされている場合は実行され、MessageBoxそうでない場合は表示される関数を指すようにします。

これを行う方法はありますか?

4

1 に答える 1

8

これらのMUI定義はコンパイル時に使用されるため、実行時にチェックボックスを変更する必要があります。

!include LogicLib.nsh
!include MUI2.nsh
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$instdir\Maybe.exe"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ModifyRunCheckbox
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Section "Maybe" SID_MAYBE
; File "Maybe.exe"
SectionEnd

Function ModifyRunCheckbox
${IfNot} ${SectionIsSelected} ${SID_MAYBE} ; You could also check if the file exists...
    SendMessage $mui.FinishPage.Run ${BM_SETCHECK} ${BST_UNCHECKED} 0
    EnableWindow $mui.FinishPage.Run 0 ; Or ShowWindow $mui.FinishPage.Run 0
${EndIf}
FunctionEnd
于 2012-12-02T14:14:43.810 に答える