; bigtest.nsi ; ; This script attempts to test most of the functionality of the NSIS exehead. ;-------------------------------- !ifdef HAVE_UPX !packhdr tmp.dat "upx\upx -9 tmp.dat" !endif !ifdef NOCOMPRESS SetCompress off !endif ;-------------------------------- Name "BigNSISTest" Caption "NSIS Big Test" Icon "..\contrib\Icons\normal-install.ico" OutFile "bigtest.exe" SetDateSave on SetDatablockOptimize on CRCCheck on SilentInstall normal BGGradient 000000 800000 FFFFFF InstallColors FF8080 000030 XPStyle on LicenseText "A license text, make sure it's all there" LicenseData "..\source\exehead\main.c" InstallDir "$PROGRAMFILES\NSISCrap\BigNSISTest" InstallDirRegKey HKLM SOFTWARE\NSISCrap\BigNSISTest "Install_Dir" DirText "Choose a directory to install in to:" ComponentText "This will install the test on your computer. Select which optional things you want installed." CheckBitmap ..\contrib\Icons\checksX.bmp !ifndef NOINSTTYPES ; only if not defined InstType "Most" InstType "Full" InstType "More" InstType "Base" ;InstType /NOCUSTOM ;InstType /COMPONENTSONLYONCUSTOM !endif AutoCloseWindow false ShowInstDetails show ;-------------------------------- Section "" ; empty string makes it hidden, so would starting with - ; write reg crap StrCpy $1 "POOOOOOOOOOOP" DetailPrint "I like to f*ck sheep $1" WriteRegStr HKLM SOFTWARE\NSISCrap\BigNSISTest "Install_Dir" "$INSTDIR" ; write uninstall strings WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "DisplayName" "BigNSISTest (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "UninstallString" '"$INSTDIR\bt-uninst.exe"' SetOutPath $INSTDIR File /a "..\source\exehead\bin2h.exe" CreateDirectory "$INSTDIR\shiz\crap" ; 2 recursively create a directory for fun. WriteUninstaller "bt-uninst.exe" Nop ; for fun SectionEnd Section "TempTest" SectionIn 1 2 3 Start: MessageBox MB_OK "Start:" MessageBox MB_YESNO "Goto Poop" IDYES Poop MessageBox MB_OK "Right before Poop:" Poop: MessageBox MB_OK "Poop:" MessageBox MB_OK "Right after Poop:" MessageBox MB_YESNO "Goto Start:?" IDYES Start SectionEnd SubSection /e SubSection1 Section "Test Registry/INI functions" SectionIn 1 4 3 WriteRegStr HKLM SOFTWARE\NSISCrap\BigNSISTest "StrTest_INSTDIR" "$INSTDIR" WriteRegDword HKLM SOFTWARE\NSISCrap\BigNSISTest "DwordTest_0xDEADBEEF" 0xdeadbeef WriteRegDword HKLM SOFTWARE\NSISCrap\BigNSISTest "DwordTest_123456" 123456 WriteRegDword HKLM SOFTWARE\NSISCrap\BigNSISTest "DwordTest_0123" 0123 WriteRegBin HKLM SOFTWARE\NSISCrap\BigNSISTest "BinTest_deadbeef01f00dbeef" "DEADBEEF01F00DBEEF" StrCpy $8 "$SYSDIR\Poop" WriteINIStr "$INSTDIR\test.ini" "MySection" "Value1" $8 WriteINIStr "$INSTDIR\test.ini" "MySectionShit" "Value1" $8 WriteINIStr "$INSTDIR\test.ini" "MySectionShit" "Value2" $8 WriteINIStr "$INSTDIR\test.ini" "POOPon" "Value1" $8 Call poopTest DeleteINIStr "$INSTDIR\test.ini" "POOPon" "Value1" DeleteINISec "$INSTDIR\test.ini" "MySectionShit" ReadINIStr $1 "$INSTDIR\test.ini" "MySectionShit" "Value1" StrCmp $1 "" INIDelSuccess MessageBox MB_OK "DeleteINISec failed" INIDelSuccess: ClearErrors ReadRegStr $1 HKCR "software\microsoft" shit IfErrors 0 NoError MessageBox MB_OK "could not read from HKCR\software\microsoft\shit" Goto ErrorYay NoError: MessageBox MB_OK "read '$1' from HKCR\software\microsoft\shit" ErrorYay: SectionEnd Section "Test CreateShortCut" SectionIn 1 2 3 Call CSCTest SectionEnd SubSection Sub2 Section "Test Branching" BeginTestSection: SectionIn 1 2 3 SetOutPath $INSTDIR IfFileExists "$INSTDIR\bin2h.c" 0 BranchTest69 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite $INSTDIR\bin2h.c?" IDNO NoOverwrite ; skipped if file doesn't exist BranchTest69: SetOverwrite ifnewer ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS NoOverwrite: File "..\source\exehead\bin2h.c" ; skipped if answered no SetOverwrite try ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to skip the rest of this section?" IDYES EndTestBranch MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to go back to the beginning of this section?" IDYES BeginTestSection MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to hide the installer and wait five seconds?" IDNO NoHide HideWindow Sleep 5000 BringToFront NoHide: MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to call the function 5 times?" IDNO NoRecurse StrCpy $1 "x" LoopPoop: Call myfunc StrCpy $1 "x$1" StrCmp $1 "xxxxxx" 0 LoopPoop NoRecurse: EndTestBranch: SectionEnd SubSectionEnd Section "Test CopyFiles" SectionIn 1 2 3 SetOutPath $INSTDIR\cpdest CopyFiles "$WINDIR\*.ini" "$INSTDIR\cpdest" 0 SectionEnd SubSectionEnd Section "Test Exec functions" CRAPIDX SectionIn 1 2 3 SearchPath $1 notepad.exe MessageBox MB_OK "notepad.exe=$1" Exec '"$1"' ExecShell "open" '"$INSTDIR"' Sleep 500 BringToFront SectionEnd Section "Test ActiveX control registration" SectionIn 2 UnRegDLL "$SYSDIR\spin32.ocx" Sleep 1000 RegDLL "$SYSDIR\spin32.ocx" Sleep 1000 SectionEnd ;-------------------------------- Function "CSCTest" CreateDirectory "$SMPROGRAMS\Big NSIS Test" SetOutPath $INSTDIR ; for working directory CreateShortCut "$SMPROGRAMS\Big NSIS Test\Uninstall BIG NSIS Test.lnk" "$INSTDIR\bt-uninst.exe" ; use defaults for parameters, icon, etc. ; this one will use notepad's icon, start it minimized, and give it a hotkey (of Ctrl+Shift+Q) CreateShortCut "$SMPROGRAMS\Big NSIS Test\bin2h.exe.lnk" "$INSTDIR\bin2h.exe" "" "$WINDIR\notepad.exe" 0 SW_SHOWMINIMIZED CONTROL|SHIFT|Q CreateShortCut "$SMPROGRAMS\Big NSIS Test\TheDir.lnk" "$INSTDIR\" "" "" 0 SW_SHOWMAXIMIZED CONTROL|SHIFT|Z FunctionEnd Function myfunc StrCpy $2 "poop=$1" MessageBox MB_OK "myfunc: $2" FunctionEnd Function poopTest ReadINIStr $1 "$INSTDIR\test.ini" "MySectionShit" "Value1" StrCmp $1 $8 NoFailedMsg MessageBox MB_OK "WriteINIStr failed" NoFailedMsg: FunctionEnd Function .onSelChange SectionGetText ${CRAPIDX} $0 StrCmp $0 "" e SectionSetText ${CRAPIDX} "" Goto e2 e: SectionSetText ${CRAPIDX} "Doop" e2: FunctionEnd ;-------------------------------- ; Uninstaller UninstallText "This will uninstall example2. Hit next to continue." UninstallIcon "..\contrib\Icons\normal-uninstall.ico" Section "Uninstall" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" DeleteRegKey HKLM "SOFTWARE\NSISCrap\BigNSISTest" Delete "$INSTDIR\bin2h.exe" Delete "$INSTDIR\bin2h.c" Delete "$INSTDIR\bt-uninst.exe" Delete "$INSTDIR\test.ini" Delete "$SMPROGRAMS\Big NSIS Test\*.*" RMDir "$SMPROGRAMS\BiG NSIS Test" MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to remove the directory $INSTDIR\cpdest?" IDNO NoDelete Delete "$INSTDIR\cpdest\*.*" RMDir "$INSTDIR\cpdest" ; skipped if no NoDelete: RMDir "$INSTDIR\shiz\crap" RMDir "$INSTDIR\shiz" RMDir "$INSTDIR" IfFileExists "$INSTDIR" 0 NoErrorMsg MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist NoErrorMsg: SectionEnd