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 "Scorched3D-${PRODUCT_VERSION}-patch.exe"
49InstallDir "$PROGRAMFILES\Scorched3D"
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 "" 0 done
70  MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "${PRODUCT_NAME} is not already installed, do you wish to patch anyway?" IDOK done
71  Abort
72done:
73
74FunctionEnd
75
76Section "MainSection" SEC01
77  SetOutPath "$INSTDIR"
78  SetOverwrite try
79
80File "/oname=$INSTDIR\.\data\globalmods\apoc\data\landscapes\ambientsoundhelicopter.xml" ".\data\globalmods\apoc\data\landscapes\ambientsoundhelicopter.xml"
81File "/oname=$INSTDIR\.\data\globalmods\apoc\data\modinfo.xml" ".\data\globalmods\apoc\data\modinfo.xml"
82File "/oname=$INSTDIR\.\data\globalmods\none\data\landscapes\boidsbats.xml" ".\data\globalmods\none\data\landscapes\boidsbats.xml"
83File "/oname=$INSTDIR\.\data\globalmods\none\data\landscapes.xml" ".\data\globalmods\none\data\landscapes.xml"
84File "/oname=$INSTDIR\.\data\globalmods\none\data\modinfo.xml" ".\data\globalmods\none\data\modinfo.xml"
85File "/oname=$INSTDIR\.\data\keys.xml" ".\data\keys.xml"
86File "/oname=$INSTDIR\.\scorched.exe" ".\scorched.exe"
87File "/oname=$INSTDIR\.\scorchedc.exe" ".\scorchedc.exe"
88File "/oname=$INSTDIR\.\scorcheds.exe" ".\scorcheds.exe"
89File "/oname=$INSTDIR\.\uninst.exe" ".\uninst.exe"
90
91  ${registerExtension} "$INSTDIR\scorchedc.exe" ".s3l" "Scorched3D_Launch"
92
93  FileOpen $9 "$INSTDIR\data\lang\language.ini" w
94  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
95    FileWrite $9 "EN"
96  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
97    FileWrite $9 "RU"
98  FileClose $9
99SectionEnd
100
101Section -AdditionalIcons
102  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
103  WriteIniStr "$INSTDIR\${PRODUCT_NAME}-docs.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}\wiki"
104  WriteIniStr "$INSTDIR\${PRODUCT_NAME}-donate.url" "InternetShortcut" "URL" "${PRODUCT_DONATE_WEB_SITE}"
105
106  CreateDirectory "$SMPROGRAMS\Scorched3D"
107
108  CreateShortCut "$SMPROGRAMS\Scorched3D\Uninstall Scorched3D.lnk" "$INSTDIR\uninst.exe"
109  CreateShortCut "$SMPROGRAMS\Scorched3D\Scorched3D.lnk" "$INSTDIR\scorched.exe" "" "$INSTDIR\data\images\tank2.ico"
110  CreateShortCut "$SMPROGRAMS\Scorched3D\Scorched3D Documentation.lnk" "$INSTDIR\${PRODUCT_NAME}-docs.url" "" "$INSTDIR\data\images\tank2.ico"
111  CreateShortCut "$SMPROGRAMS\Scorched3D\Scorched3D Homepage.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\data\images\tank2.ico"
112  CreateShortCut "$SMPROGRAMS\Scorched3D\Scorched3D Donations.lnk" "$INSTDIR\${PRODUCT_NAME}-donate.url" "" "$INSTDIR\data\images\tank2.ico"
113SectionEnd
114
115Section -Post
116  WriteUninstaller "$INSTDIR\uninst.exe"
117  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
118  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
119  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
120  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
121  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
122SectionEnd
123
124Function un.onUninstSuccess
125  HideWindow
126  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
127FunctionEnd
128
129Var DEL_USER
130Function un.onInit
131  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES remove
132  Abort
133remove:
134
135  StrCpy $DEL_USER "FALSE"
136  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
137  StrCpy $DEL_USER "TRUE";
138nodel:
139FunctionEnd
140
141Section Uninstall
142
143  RMDir /r "$INSTDIR\data"
144  RMDir /r "$INSTDIR\documentation"
145  RMDir /r "$SMPROGRAMS\Scorched3D"
146
147  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
148  SetAutoClose true
149
150  ${unregisterExtension} ".s3l" "Scorched3D_Launch"
151
152  StrCmp $DEL_USER "FALSE" nodel
153  RMDir /r "$INSTDIR\.scorched3d"
154  RMDir /r "$PROFILE\.scorched3d"
155nodel:
156
157  Delete "$INSTDIR\*.*"
158  RMDir "$INSTDIR"
159
160SectionEnd
161