ユーザーがインストールするコンポーネントを選択できるようにする非常に単純な NSIS スクリプトがありますが、何も選択していない場合は「コンポーネントを選択してください」と言う方法が必要です。
スクリプトは次のとおりです。
# Based on the one-section example
# http://nsis.sourceforge.net/Examples/one-section.nsi
!include "sections.nsh"
Name "Humira & You"
OutFile "Humira & You - September 2012.exe"
RequestExecutionLevel user
Page components
Page instfiles
Section /o "Rheumatoid Arthritis" P1
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Rheumatoid Arthritis.msi"
SectionEnd
Section /o "Psoriatic Arthritis" P2
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Psoriatic Arthritis.msi"
SectionEnd
Section /o "Ankylosing Spondylitis" P3
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Ankylosing Spondylitis.msi"
SectionEnd
Section /o "Axial Spondyloarthritis" P4
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Axial Spondyloarthritis.msi"
SectionEnd
Section ; Hidden section that runs the show
DetailPrint "Installing selected application..."
SetDetailsPrint none
ExecWait '"msiexec" /i "$pluginsdir\Setup.msi"'
SetDetailsPrint lastused
SectionEnd
Function .onInit
Initpluginsdir ; Make sure $pluginsdir exists
StrCpy $1 ${P2} ;The default
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${P1}
!insertmacro RadioButton ${P2}
!insertmacro RadioButton ${P3}
!insertmacro RadioButton ${P4}
!insertmacro EndRadioButtons
FunctionEnd
私は周りを見回して、この例に出くわしましたhttp://nsis.sourceforge.net/Useful_InstallOptions_and_MUI_macros#Macro:_CHECKBOXCHECKER、しかしそれは私が望むものに対して過度に複雑に思えます。NSIS で言う方法はありません:
if ($1.selectedIndex > -1) {
// continue
} else {
MessageBox.Show("Please select");
}
ありがとう、グレッグ。