2

3つのセクションがあるNSISスクリプトを作成したい

  • セクションメイン
  • セクションマイナー
  • セクション共有

共有は非表示であり、メインまたはマイナーがチェックされている場合はインストールされます。インストーラーを起動すると、すべてのセクション(メイン、マイナー)がチェックされます。

これで、セクションを定義できるようになります(サイレントインストールの場合)。メインまたはマイナーまたは両方をインストールするために、何を変更する必要がありますか?

4

2 に答える 2

3
Name "Test"
Outfile "Test.exe"
;RequestExecutionLevel ?

!include "Sections.nsh"
!include "LogicLib.nsh"
!include "FileFunc.nsh" ;For GetOptions

Page Components "" "" EnforceSectionDependencies
Page InstFiles

Section /o "Main" SID_MAIN
DetailPrint Main
SectionEnd

Section /o "Minor" SID_MINOR
DetailPrint Minor
SectionEnd

Section "" SID_SHARED
DetailPrint Shared
SectionEnd

!macro CheckSectionSwitch sw sid
${GetOptions} $0 '${sw}' $9
${IfNot} ${Errors}
    StrCpy $1 1
    !insertmacro SelectSection ${sid}
${EndIf}
!macroend

Function .onInit
${GetParameters} $0
StrCpy $1 0 ;Any section swithes?
ClearErrors
!insertmacro CheckSectionSwitch '/Main' ${SID_MAIN}
!insertmacro CheckSectionSwitch '/Minor' ${SID_MINOR}

${If} $1 = 0
    ;Set defaults
    !insertmacro SelectSection ${SID_MAIN}
    !insertmacro SelectSection ${SID_MINOR}
${EndIf}

call EnforceSectionDependencies
FunctionEnd

Function EnforceSectionDependencies
!insertmacro UnselectSection ${SID_SHARED}
${If} ${SectionIsSelected} ${SID_MAIN}
${OrIf} ${SectionIsSelected} ${SID_MINOR}
    !insertmacro SelectSection ${SID_SHARED}
${EndIf}
FunctionEnd
于 2012-06-18T16:50:26.170 に答える
0

セクションの選択を変更するには、ドキュメントのセクション管理部分、特にSectionSetFlagsを確認する必要があります。

また、SubSections&InstTypesの例を使用しながら、セクションの選択を制御する方法が役立つ場合もあります。

于 2012-06-18T10:52:48.083 に答える