6

特定のコンポーネントが選択されている場合にユーザーに追加情報の入力を求めたいのですが、特定のコンポーネントが選択されていることを確認する方法がよくわかりません。http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.13.2はどういうわけか関連しているようですが、セクションはコンポーネントのグループであるという印象を受けました...

アンダースからの助けを借りて、私はこれが機能します:

!include MUI.nsh
!include nsDialogs.nsh
!include LogicLib.nsh
!include sections.nsh

Name A
InstProgressFlags smooth colored
LicenseBkColor /windows
OutFile A.exe
InstallDir $PROGRAMFILES\A

Var Dialog

Section "A" SEC_A
SectionEnd
Section "B" SEC_B
SectionEnd

!insertmacro MUI_PAGE_COMPONENTS
Page custom getA setA # {{{
!insertmacro MUI_PAGE_DIRECTORY # {{{ install
Function getA

   ${Unless} ${SectionIsSelected} ${SEC_A}
      Abort
   ${EndUnless}

   nsDialogs::Create 1018
   Pop $Dialog

   ${If} $Dialog == error
      Abort
   ${EndIf}

   ${NSD_CreateLabel} 0 0 100% 12u "Test"

   nsDialogs::Show
FunctionEnd
Function setA
   MessageBox MB_OK "clicked?"
FunctionEnd
# }}}
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
4

1 に答える 1

9

すべてのセクション(名前付き)は、コンポーネントページのチェックボックスとして表示されます。(セクショングループを使用してツリーレイアウトを形成できますが、実行可能コードが含まれているのは実際のセクションのみです)

sections.nsh設定を操作するための便利なヘルパーマクロが含まれており、使用するlogiclib.nsh場合は${If} ${SectionIsSelected} ${MYSECTION}...

于 2013-02-21T20:18:25.547 に答える