1; Helper defines
2!define PRODUCT_NAME "Scorched3D"
3!define PRODUCT_VERSION "43.3d"
4!define PRODUCT_PUBLISHER "Scorched"
5!define PRODUCT_WEB_SITE "http://www.scorched3d.co.uk"
6!define PRODUCT_DONATE_WEB_SITE "https://www.paypal.com/xclick/business=donations%40scorched3d.co.uk&item_name=Scorched3D&no_note=1&tax=0&currency_code=GBP"
7!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
8!define PRODUCT_UNINST_ROOT_KEY "HKLM"
9
10RequestExecutionLevel admin
11
12SetCompressor lzma
13
14; MUI 1.67 compatible ------
15!include "MUI.nsh"
16!include "scripts\FileAssociation.nsh"
17
18; MUI Settings
19!define MUI_ABORTWARNING
20!define MUI_ICON "data\images\tank2.ico"
21!define MUI_UNICON "data\images\tank2.ico"
22
23; Welcome page
24!insertmacro MUI_PAGE_WELCOME
25; License page
26!insertmacro MUI_PAGE_LICENSE "COPYING"
27; Directory page
28!insertmacro MUI_PAGE_DIRECTORY
29; Instfiles page
30!insertmacro MUI_PAGE_INSTFILES
31; Finish page
32!insertmacro MUI_PAGE_FINISH
33
34; Uninstaller pages
35!insertmacro MUI_UNPAGE_INSTFILES
36
37; Language files
38!insertmacro MUI_LANGUAGE "English"
39!insertmacro MUI_LANGUAGE "Russian"
40
41; Reserve files
42!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
43!insertmacro MUI_RESERVEFILE_LANGDLL
44
45; MUI end ------
46
47Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
48OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
49InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
50ShowInstDetails show
51ShowUnInstDetails show
52
53Function .onInit
54	;Language selection dialog
55	Push ""
56	Push ${LANG_ENGLISH}
57	Push English
58	Push ${LANG_RUSSIAN}
59	Push Russian
60	Push A ; A means auto count languages
61	       ; for the auto count to work the first empty push (Push "") must remain
62	LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
63
64	Pop $LANGUAGE
65	StrCmp $LANGUAGE "cancel" 0 +2
66		Abort
67
68  ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
69  StrCmp $R0 "" done
70
71  MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(^Name) is already installed, do you wish to re-install?" IDOK done
72  Abort
73done:
74
75FunctionEnd
76
77Section "MainSection" SEC01
78  SetOutPath "$INSTDIR"
79  SetOverwrite try
80
81  RMDir /r "$INSTDIR\data"
82
83  File /r /x ".svn" /x "*.db" "data"
84  File /r /x ".svn" /x "*.db" "documentation"
85  File "*.dll"
86  File "*.manifest"
87  File "README"
88  File "CHANGELOG"
89  File "Release\scorched.exe"
90  File "Release\scorchedc.exe"
91  File "Release\scorcheds.exe"
92
93  ${registerExtension} "$INSTDIR\scorchedc.exe" ".s3l" "Scorched3D_Launch"
94
95  FileOpen $9 "$INSTDIR\data\lang\language.ini" w
96  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
97    FileWrite $9 "EN"
98  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
99    FileWrite $9 "RU"
100  FileClose $9
101SectionEnd
102
103Section -AdditionalIcons
104  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
105  WriteIniStr "$INSTDIR\${PRODUCT_NAME}-docs.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}\wiki"
106  WriteIniStr "$INSTDIR\${PRODUCT_NAME}-donate.url" "InternetShortcut" "URL" "${PRODUCT_DONATE_WEB_SITE}"
107
108  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
109
110  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall Scorched3D.lnk" "$INSTDIR\uninst.exe"
111  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Scorched3D.lnk" "$INSTDIR\scorched.exe" "" "$INSTDIR\data\images\tank2.ico"
112  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Scorched3D Documentation.lnk" "$INSTDIR\${PRODUCT_NAME}-docs.url" "" "$INSTDIR\data\images\tank2.ico"
113  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Scorched3D Homepage.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\data\images\tank2.ico"
114  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Scorched3D Donations.lnk" "$INSTDIR\${PRODUCT_NAME}-donate.url" "" "$INSTDIR\data\images\tank2.ico"
115SectionEnd
116
117Section -Post
118  WriteUninstaller "$INSTDIR\uninst.exe"
119  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
120  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
121  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
122  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
123  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
124SectionEnd
125
126Function un.onUninstSuccess
127  HideWindow
128  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
129FunctionEnd
130
131Var DEL_USER
132Function un.onInit
133  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES remove
134  Abort
135remove:
136
137  StrCpy $DEL_USER "FALSE"
138  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to remove all $(^Name) user data.  Warning: this includes STATS, saved games, mods etc?" IDNO nodel
139  StrCpy $DEL_USER "TRUE";
140nodel:
141FunctionEnd
142
143Section Uninstall
144
145  RMDir /r "$INSTDIR\data"
146  RMDir /r "$INSTDIR\documentation"
147  RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
148
149  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
150  SetAutoClose true
151
152  ${unregisterExtension} ".s3l" "Scorched3D_Launch"
153
154  StrCmp $DEL_USER "FALSE" nodel
155  RMDir /r "$INSTDIR\.${PRODUCT_NAME}"
156  RMDir /r "$PROFILE\.${PRODUCT_NAME}"
157nodel:
158
159  Delete "$INSTDIR\*.*"
160  RMDir "$INSTDIR"
161
162SectionEnd
163