;-------------------------------- ;Include Modern UI !include "MUI2.nsh" ;SetCompress off ; Useful to disable compression under development SetCompressor /Solid LZMA ; Useful to disable compression under development ; Include FileFunc for command line parsing options !include "FileFunc.nsh" !insertmacro GetParameters !insertmacro GetOptions ;-------------------------------- ;General ;Name and file Name "Numpy super installer" OutFile "@NUMPY_INSTALLER_NAME@" ;Default installation folder InstallDir "$TEMP" ;-------------------------------- ;Interface Settings !define MUI_ABORTWARNING ;-------------------------------- ;Pages ;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" ;!insertmacro MUI_PAGE_COMPONENTS ;!insertmacro MUI_PAGE_DIRECTORY ;!insertmacro MUI_PAGE_INSTFILES ;!insertmacro MUI_UNPAGE_CONFIRM ;!insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;Component Sections !include 'Sections.nsh' !include LogicLib.nsh Var HasSSE2 Var HasSSE3 Var CPUSSE Var option_arch Function .onInit ; Get parameters var /GLOBAL cmdLineParams Push $R0 ${GetParameters} $cmdLineParams ; XXX; How to get a console output help ? GUI seems useless when using ; command line help... ; ; /? param (help) ; ClearErrors ; ${GetOptions} $cmdLineParams '/?' $R0 ; IfErrors +3 0 ; MessageBox MB_OK "list all command line options here!" ; Abort Pop $R0 ; Initialise options StrCpy $option_arch 'native' ; Parse Parameters Push $R0 Call parseParameters Pop $R0 FunctionEnd Section "Core" SecCore ;SectionIn RO SetOutPath "$INSTDIR" ;Create uninstaller ;WriteUninstaller "$INSTDIR\Uninstall.exe" DetailPrint "Install dir for actual installers is $INSTDIR" StrCpy $CPUSSE "0" CpuCaps::hasSSE2 Pop $0 StrCpy $HasSSE2 $0 CpuCaps::hasSSE3 Pop $0 StrCpy $HasSSE3 $0 ; Debug StrCmp $HasSSE2 "Y" include_sse2 no_include_sse2 include_sse2: DetailPrint '"Target CPU handles SSE2"' StrCpy $CPUSSE "2" goto done_sse2 no_include_sse2: DetailPrint '"Target CPU does NOT handle SSE2"' goto done_sse2 done_sse2: StrCmp $HasSSE3 "Y" include_sse3 no_include_sse3 include_sse3: DetailPrint '"Target CPU handles SSE3"' StrCpy $CPUSSE "3" goto done_sse3 no_include_sse3: DetailPrint '"Target CPU does NOT handle SSE3"' goto done_sse3 done_sse3: ClearErrors ${Switch} $option_arch ${Case} "native" DetailPrint '"native install (arch value: $option_arch)"' ${Break} ${Case} "nosse" DetailPrint '"nosse install (arch value: $option_arch)"' StrCpy $CPUSSE "0" ${Break} ${Case} "sse2" DetailPrint '"sse2 install (arch value: $option_arch)"' StrCpy $CPUSSE "2" ${Break} ${Case} "sse3" DetailPrint '"sse3 install (arch value: $option_arch)"' StrCpy $CPUSSE "3" ${Break} ${Default} MessageBox MB_OK "option /arch $option_arch not understood: only native, nosse, and sse3 are valid." Abort ${Break} ${EndSwitch} ; Install files conditionaly on detected cpu ${Switch} $CPUSSE ${Case} "3" DetailPrint '"Install SSE 3"' File "binaries\@SSE3_BINARY@" ExecWait '"$INSTDIR\@SSE3_BINARY@"' ${Break} ${Case} "2" DetailPrint '"Install SSE 2"' File "binaries\@SSE2_BINARY@" ExecWait '"$INSTDIR\@SSE2_BINARY@"' ${Break} ${Default} DetailPrint '"Install NO SSE"' File "binaries\@NOSSE_BINARY@" ExecWait '"$INSTDIR\@NOSSE_BINARY@"' ${Break} ${EndSwitch} ; Handle errors when executing installers IfErrors error no_error error: messageBox MB_OK "Executing numpy installer failed" goto done no_error: goto done done: SectionEnd Function parseParameters ; /arch option ${GetOptions} $cmdLineParams '/arch' $R0 IfErrors +2 0 StrCpy $option_arch $R0 FunctionEnd