Rev 11 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 2 | pmbaty | 1 | !include "MUI2.nsh" | 
| 2 | !include "FileFunc.nsh" | ||
| 3 | |||
| 4 | !define PRODUCT_NAME "Rick Dangerous" | ||
| 5 | !define PUBLISHER "Pierre-Marie Baty" | ||
| 6 | !define PUBLISHER_WEBSITE "http://www.pmbaty.com/rick/" | ||
| 9 | pmbaty | 7 | !define INSTALLER_SRC "Z:\Documents\Mes projets\Rick Dangerous" | 
| 2 | pmbaty | 8 | |
| 9 | Name "${PRODUCT_NAME}" | ||
| 10 | BrandingText "${PRODUCT_NAME} by ${PUBLISHER} - ${PUBLISHER_WEBSITE}" | ||
| 11 | |||
| 12 | SetCompressor lzma | ||
| 13 | RequestExecutionLevel user | ||
| 14 | |||
| 15 | AllowRootDirInstall true | ||
| 16 | InstallDir "$LOCALAPPDATA\${PRODUCT_NAME}" | ||
| 17 | |||
| 18 | !define MUI_ICON "${INSTALLER_SRC}\installer\installer.ico" | ||
| 19 | !define MUI_HEADERIMAGE | ||
| 20 | !define MUI_HEADERIMAGE_BITMAP "${INSTALLER_SRC}\installer\installer.bmp" | ||
| 21 | !define MUI_ABORTWARNING | ||
| 22 | |||
| 23 | !insertmacro MUI_PAGE_LICENSE "${INSTALLER_SRC}\installer\License.txt" | ||
| 24 | !insertmacro MUI_PAGE_DIRECTORY | ||
| 25 | |||
| 26 | Var STR_HAYSTACK | ||
| 27 | Var STR_NEEDLE | ||
| 28 | Var STR_CONTAINS_VAR_1 | ||
| 29 | Var STR_CONTAINS_VAR_2 | ||
| 30 | Var STR_CONTAINS_VAR_3 | ||
| 31 | Var STR_CONTAINS_VAR_4 | ||
| 32 | Var STR_RETURN_VAR | ||
| 33 | |||
| 34 | Function StrContains | ||
| 35 | Exch $STR_NEEDLE | ||
| 36 | Exch 1 | ||
| 37 | Exch $STR_HAYSTACK | ||
| 38 | StrCpy $STR_RETURN_VAR "" | ||
| 39 | StrCpy $STR_CONTAINS_VAR_1 -1 | ||
| 40 | StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE | ||
| 41 | StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK | ||
| 42 | loop: | ||
| 43 | IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1 | ||
| 44 | StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1 | ||
| 45 | StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found | ||
| 46 | StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done | ||
| 47 | Goto loop | ||
| 48 | found: | ||
| 49 | StrCpy $STR_RETURN_VAR $STR_NEEDLE | ||
| 50 | Goto done | ||
| 51 | done: | ||
| 52 | Pop $STR_NEEDLE | ||
| 53 | Exch $STR_RETURN_VAR | ||
| 54 | FunctionEnd | ||
| 55 | !macro _StrContainsConstructor OUT NEEDLE HAYSTACK | ||
| 56 | 		Push `${HAYSTACK}` | ||
| 57 | 		Push `${NEEDLE}` | ||
| 58 | Call StrContains | ||
| 59 | 		Pop `${OUT}` | ||
| 60 | !macroend | ||
| 61 | |||
| 62 | !define StrContains '!insertmacro "_StrContainsConstructor"' | ||
| 63 | |||
| 64 | Function .onVerifyInstDir | ||
| 65 | Push $R0 | ||
| 66 | Push $R1 | ||
| 67 | 		${StrContains} $0 "Program Files" "$INSTDIR" | ||
| 68 | StrCmp $0 "Program Files" pathbad | ||
| 69 | StrCpy $R0 "$INSTDIR" | ||
| 70 | loop: | ||
| 71 | StrLen $R1 "$R0" | ||
| 72 | StrCmp $R1 0 pathbad | ||
| 73 | IfFileExists "$R0" 0 parentLoop | ||
| 74 | 		${GetFileAttributes} "$R0" "DIRECTORY" $R1 | ||
| 75 | StrCmp $R1 0 parentLoop | ||
| 76 | 		${GetFileAttributes} "$R0" "READONLY" $R1 | ||
| 77 | StrCmp $R1 1 pathbad | ||
| 78 | ClearErrors | ||
| 79 | IfFileExists "$R0\.nsis_test_dir" pathgood 0 | ||
| 80 | CreateDirectory "$R0\.nsis_test_dir" | ||
| 81 | IfErrors pathbad 0 | ||
| 82 | RMDir "$R0\.nsis_test_dir" | ||
| 83 | Goto pathgood | ||
| 84 | parentLoop: | ||
| 85 | 		${GetParent} "$R0" "$R0" | ||
| 86 | Goto loop | ||
| 87 | pathbad: | ||
| 88 | Abort | ||
| 89 | pathgood: | ||
| 90 | Pop $R1 | ||
| 91 | Pop $R0 | ||
| 92 | FunctionEnd | ||
| 93 | |||
| 94 | ;!insertmacro MUI_PAGE_COMPONENTS | ||
| 95 | !insertmacro MUI_PAGE_INSTFILES | ||
| 96 | AutoCloseWindow true | ||
| 97 | |||
| 98 | !insertmacro MUI_UNPAGE_CONFIRM | ||
| 99 | !insertmacro MUI_UNPAGE_INSTFILES | ||
| 100 | |||
| 101 | !insertmacro MUI_LANGUAGE "English" | ||
| 102 | !insertmacro MUI_LANGUAGE "French" | ||
| 103 | |||
| 104 | Section "" | ||
| 105 | SetOutPath "$INSTDIR" | ||
| 106 | |||
| 107 | ; deploy our files | ||
| 13 | pmbaty | 108 | 	File /r /x "Rick Dangerous.app" "${INSTALLER_SRC}\sounds" | 
| 2 | pmbaty | 109 | 	File "${INSTALLER_SRC}\${PRODUCT_NAME}.exe" | 
| 9 | pmbaty | 110 | 	File "${INSTALLER_SRC}\SDL2.dll" | 
| 2 | pmbaty | 111 | 	File "${INSTALLER_SRC}\Rick Dangerous Paper Toy.pdf" | 
| 112 | |||
| 113 | ; create Start menu shortcuts | ||
| 114 | 	CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" "" "" "" "" "" "Start a Rick Dangerous game" | ||
| 115 | 	CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" | ||
| 116 | 	CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" "" "" "" "" "" "Start a Rick Dangerous game" | ||
| 117 | 	CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Rick Dangerous Paper Toy.lnk" "$INSTDIR\Rick Dangerous Paper Toy.pdf" "" "" "" "" "" "Build your own Rick Dangerous 3D paper toy!" | ||
| 4 | pmbaty | 118 | 	CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Online Help (incl. how to play).lnk" "http://www.pmbaty.com/rick/" "" "" "" "" "" "Visit the website to learn how to play" | 
| 2 | pmbaty | 119 | |
| 120 | ; create a proper uninstaller | ||
| 121 | WriteUninstaller $INSTDIR\uninstall.exe | ||
| 122 | 	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME}" | ||
| 123 | 	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" "$INSTDIR\${PRODUCT_NAME}.exe,0" | ||
| 124 | 	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" | ||
| 125 | 	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" | ||
| 126 | 	WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "${PUBLISHER}" | ||
| 127 | 	WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoModify" 1 | ||
| 128 | 	WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoRepair" 1 | ||
| 129 | 	${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 | ||
| 130 | IntFmt $0 "0x%08X" $0 | ||
| 131 | 	WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "EstimatedSize" "$0" | ||
| 132 | SectionEnd | ||
| 133 | |||
| 134 | Section "Uninstall" | ||
| 135 | 	Delete "$DESKTOP\${PRODUCT_NAME}.lnk" | ||
| 136 | 	RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}" | ||
| 137 | RMDir /r "$INSTDIR" | ||
| 138 | |||
| 139 | 	DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" | ||
| 140 | SectionEnd |