Darkvater@6494: !define APPNAME "OpenTTD" ; Define application name rubidium@8404: !define APPVERSION "0.6.0" ; Define application version rubidium@9357: !define INSTALLERVERSION 45 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!! Darkvater@6494: Darkvater@6494: !define APPURLLINK "http://www.openttd.org" rubidium@9357: !define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}" Darkvater@6494: !define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X Darkvater@6494: Darkvater@6495: !define MUI_ICON "..\..\..\media\openttd.ico" Darkvater@6495: !define MUI_UNICON "..\..\..\media\openttd.ico" darkvater@1215: !define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp" darkvater@1215: !define MUI_HEADERIMAGE darkvater@1215: !define MUI_HEADERIMAGE_BITMAP "top.bmp" truelight@0: truelight@0: BrandingText "OpenTTD Installer" darkvater@1215: SetCompressor LZMA truelight@0: truelight@0: ; Version Info truelight@0: Var AddWinPrePopulate Darkvater@6494: VIProductVersion "${APPVERSIONINTERNAL}" truelight@0: VIAddVersionKey "ProductName" "OpenTTD Installer" truelight@0: VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}" truelight@0: VIAddVersionKey "CompanyName" "OpenTTD Developers" truelight@0: VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}" truelight@0: VIAddVersionKey "ProductVersion" "${APPVERSION}" truelight@0: VIAddVersionKey "InternalName" "InstOpenTTD" truelight@0: VIAddVersionKey "FileVersion" "${APPVERSION}" truelight@0: VIAddVersionKey "LegalCopyright" " " truelight@0: ; Main Install settings truelight@0: Name "${APPNAMEANDVERSION}" truelight@0: truelight@0: ; NOTE: Keep trailing backslash! truelight@0: InstallDir "$PROGRAMFILES\OpenTTD\" truelight@0: InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder" darkvater@801: OutFile "openttd-${APPVERSION}-win32.exe" darkvater@1215: CRCCheck force truelight@0: truelight@0: ShowInstDetails show truelight@0: ShowUninstDetails show truelight@0: truelight@0: Var SHORTCUTS truelight@0: Var CDDRIVE truelight@0: truelight@0: ; Modern interface settings truelight@0: !include "MUI.nsh" truelight@0: truelight@0: !define MUI_ABORTWARNING truelight@0: truelight@0: !insertmacro MUI_PAGE_WELCOME truelight@0: Darkvater@6494: !define MUI_LICENSEPAGE_RADIOBUTTONS Darkvater@6494: !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "I &accept this agreement" Darkvater@6494: !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "I &do not accept this agreement" darkvater@1215: !insertmacro MUI_PAGE_LICENSE "..\..\..\COPYING" truelight@0: truelight@0: !insertmacro MUI_PAGE_COMPONENTS truelight@0: Darkvater@6494: ;--------------------------------- Darkvater@6494: ; Custom page for finding TTDLX CD Darkvater@6494: Page custom SelectCDEnter SelectCDExit ": TTD folder" truelight@0: truelight@0: !insertmacro MUI_PAGE_DIRECTORY truelight@0: truelight@0: ;Start Menu Folder Page Configuration truelight@0: !define MUI_STARTMENUPAGE_DEFAULTFOLDER $SHORTCUTS truelight@0: !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKEY_LOCAL_MACHINE" truelight@0: !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" truelight@0: !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Shortcut Folder" truelight@0: truelight@0: !insertmacro MUI_PAGE_STARTMENU "OpenTTD" $SHORTCUTS truelight@0: truelight@0: !insertmacro MUI_PAGE_INSTFILES truelight@0: Darkvater@6494: ;----------------------------------------------------- Darkvater@6494: ; New custom page to show UNICODE and MSLU information Darkvater@6494: Page custom ShowWarningsPage Darkvater@6494: Darkvater@6494: !define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe" Darkvater@6496: !define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for latest news, FAQs and downloads" Darkvater@6494: !define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}" truelight@0: !define MUI_FINISHPAGE_NOREBOOTSUPPORT truelight@0: !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt" Darkvater@1821: !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED rubidium@7241: !define MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT DisableBack truelight@0: truelight@0: !insertmacro MUI_PAGE_FINISH truelight@0: !insertmacro MUI_UNPAGE_CONFIRM truelight@0: !insertmacro MUI_UNPAGE_INSTFILES truelight@0: truelight@0: ; Set languages (first is default language) truelight@0: !insertmacro MUI_LANGUAGE "English" truelight@0: !insertmacro MUI_RESERVEFILE_LANGDLL truelight@0: Darkvater@6494: ;-------------------------------------------------------------- Darkvater@6494: ; (Core) OpenTTD install section. Copies all internal game data truelight@0: Section "!OpenTTD" Section1 Darkvater@6494: ; Overwrite files by default, but don't complain on failure truelight@0: SetOverwrite try truelight@0: Darkvater@6494: ; Define root variable relative to installer truelight@0: !define PATH_ROOT "..\..\..\" truelight@0: truelight@0: ; Copy language files Darkvater@6494: SetOutPath "$INSTDIR\lang\" Darkvater@6495: File ${PATH_ROOT}bin\lang\*.lng Darkvater@6495: File ${PATH_ROOT}src\lang\english.txt truelight@0: truelight@0: ; Copy data files truelight@0: SetOutPath "$INSTDIR\data\" Darkvater@6495: File ${PATH_ROOT}bin\data\*.grf Darkvater@6495: File ${PATH_ROOT}bin\data\opntitle.dat Darkvater@6494: ; Copy scenario files (don't choke if they don't exist) darkvater@1157: SetOutPath "$INSTDIR\scenario\" Darkvater@6495: File /nonfatal ${PATH_ROOT}bin\scenario\*.scn truelight@0: Darkvater@6496: ; Copy heightmap files (don't choke if they don't exist) Darkvater@6496: SetOutPath "$INSTDIR\scenario\heightmap\" Darkvater@6496: File /nonfatal ${PATH_ROOT}bin\scenario\heightmap\*.* Darkvater@6496: truelight@0: ; Copy the rest of the stuff truelight@0: SetOutPath "$INSTDIR\" truelight@0: Darkvater@6494: ; Copy text files Darkvater@6494: File ${PATH_ROOT}changelog.txt Darkvater@6494: File ${PATH_ROOT}COPYING Darkvater@6494: File ${PATH_ROOT}readme.txt Darkvater@6494: File ${PATH_ROOT}known-bugs.txt truelight@0: truelight@0: ; Copy executable Darkvater@6495: File /oname=openttd.exe ${PATH_ROOT}objs\Win32\Release\openttd.exe Darkvater@6495: File ${PATH_ROOT}objs\strgen\strgen.exe truelight@0: truelight@0: Darkvater@6494: ; Delete old files from the main dir. they are now placed in data/ and lang/ truelight@0: Delete "$INSTDIR\*.lng" truelight@0: Delete "$INSTDIR\*.grf" truelight@0: Delete "$INSTDIR\sample.cat" truelight@0: Delete "$INSTDIR\ttd.exe" truelight@0: truelight@0: Darkvater@6494: ; Create the Registry Entries Darkvater@6494: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Comments" "Visit ${APPURLLINK}" darkvater@1215: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayIcon" "$INSTDIR\openttd.exe,0" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayName" "OpenTTD ${APPVERSION}" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayVersion" "${APPVERSION}" Darkvater@6494: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "HelpLink" "${APPURLLINK}" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder" "$INSTDIR" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Publisher" "OpenTTD" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Shortcut Folder" "$SHORTCUTS" truelight@0: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString" "$INSTDIR\uninstall.exe" Darkvater@6494: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "URLInfoAbout" "${APPURLLINK}" Darkvater@6494: ; This key sets the Version DWORD that new installers will check against truelight@0: WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" ${INSTALLERVERSION} truelight@0: truelight@0: !insertmacro MUI_STARTMENU_WRITE_BEGIN "OpenTTD" truelight@0: CreateShortCut "$DESKTOP\OpenTTD.lnk" "$INSTDIR\openttd.exe" truelight@0: CreateDirectory "$SMPROGRAMS\$SHORTCUTS" truelight@0: CreateShortCut "$SMPROGRAMS\$SHORTCUTS\OpenTTD.lnk" "$INSTDIR\openttd.exe" truelight@0: CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Uninstall.lnk" "$INSTDIR\uninstall.exe" truelight@0: CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Readme.lnk" "$INSTDIR\Readme.txt" truelight@0: CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Changelog.lnk" "$INSTDIR\Changelog.txt" darkvater@801: CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Known-bugs.lnk" "$INSTDIR\known-bugs.txt" truelight@0: !insertmacro MUI_STARTMENU_WRITE_END truelight@0: SectionEnd truelight@0: Darkvater@6494: ;---------------------------------------------------------------------------------- Darkvater@6494: ; TTDLX files install section. Copies all needed TTDLX files from CD or install dir truelight@0: Section "Copy Game Graphics" Section2 Darkvater@6494: ; Let's copy the files with size approximation truelight@0: SetOutPath "$INSTDIR\gm" Darkvater@6494: CopyFiles "$CDDRIVE\gm\*.gm" "$INSTDIR\gm\" 1028 truelight@0: SetOutPath "$INSTDIR\data\" truelight@0: CopyFiles "$CDDRIVE\sample.cat" "$INSTDIR\data\sample.cat" 1566 Darkvater@6494: ; Copy Windows files truelight@0: CopyFiles "$CDDRIVE\trg1r.grf" "$INSTDIR\data\trg1r.grf" 2365 truelight@0: CopyFiles "$CDDRIVE\trgcr.grf" "$INSTDIR\data\trgcr.grf" 260 truelight@0: CopyFiles "$CDDRIVE\trghr.grf" "$INSTDIR\data\trghr.grf" 400 truelight@0: CopyFiles "$CDDRIVE\trgir.grf" "$INSTDIR\data\trgir.grf" 334 truelight@0: CopyFiles "$CDDRIVE\trgtr.grf" "$INSTDIR\data\trgtr.grf" 546 darkvater@1215: ; Copy DOS files darkvater@1215: CopyFiles "$CDDRIVE\trg1.grf" "$INSTDIR\data\trg1.grf" 2365 darkvater@1215: CopyFiles "$CDDRIVE\trgc.grf" "$INSTDIR\data\trgc.grf" 260 darkvater@1215: CopyFiles "$CDDRIVE\trgh.grf" "$INSTDIR\data\trgh.grf" 400 darkvater@1215: CopyFiles "$CDDRIVE\trgi.grf" "$INSTDIR\data\trgi.grf" 334 darkvater@1215: CopyFiles "$CDDRIVE\trgt.grf" "$INSTDIR\data\trgt.grf" 546 truelight@0: SetOutPath "$INSTDIR\" truelight@0: SectionEnd truelight@0: Darkvater@6494: ;------------------------------------------- Darkvater@6494: ; Install the uninstaller (option is hidden) truelight@0: Section -FinishSection truelight@0: WriteUninstaller "$INSTDIR\uninstall.exe" truelight@0: SectionEnd truelight@0: truelight@0: ; Modern install component descriptions truelight@0: !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN truelight@0: !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "OpenTTD is a fully functional clone of TTD and is very playable." Darkvater@6494: !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Copies the game graphics. Requires TTD (for Windows)." truelight@0: !insertmacro MUI_FUNCTION_DESCRIPTION_END truelight@0: Darkvater@6494: ;----------------------------------------------- Darkvater@6494: ; Uninstall section, deletes all installed files Darkvater@6494: Section "Uninstall" Darkvater@6494: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@6494: "Remove the save game folders located at $\"$INSTDIR\save?$\"$\n \ Darkvater@6494: If you choose Yes, your saved games will be deleted." \ Darkvater@6494: IDYES RemoveSavedGames IDNO NoRemoveSavedGames truelight@0: RemoveSavedGames: Darkvater@6494: Delete "$INSTDIR\save\autosave\*" Darkvater@6494: RMDir "$INSTDIR\save\autosave" Darkvater@6494: Delete "$INSTDIR\save\*" Darkvater@6494: RMDir "$INSTDIR\save" truelight@0: NoRemoveSavedGames: truelight@0: Darkvater@6494: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@6494: "Remove the scenario folders located at $\"$INSTDIR\scenario?$\"$\n \ Darkvater@6494: If you choose Yes, your scenarios will be deleted." \ Darkvater@6494: IDYES RemoveScen IDNO NoRemoveScen darkvater@31: RemoveScen: Darkvater@6496: Delete "$INSTDIR\scenario\heightmap*" Darkvater@6496: RMDir "$INSTDIR\scenario\heightmap" Darkvater@6494: Delete "$INSTDIR\scenario\*" Darkvater@6494: RMDir "$INSTDIR\scenario" darkvater@31: NoRemoveScen: darkvater@31: Darkvater@6494: ; Remove from registry... truelight@0: !insertmacro MUI_STARTMENU_GETFOLDER "OpenTTD" $SHORTCUTS truelight@0: ReadRegStr $SHORTCUTS HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Shortcut Folder" truelight@0: truelight@0: DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" truelight@0: truelight@0: ; Delete self truelight@0: Delete "$INSTDIR\uninstall.exe" truelight@0: truelight@0: ; Delete Shortcuts truelight@0: Delete "$DESKTOP\OpenTTD.lnk" truelight@0: Delete "$SMPROGRAMS\$SHORTCUTS\OpenTTD.lnk" truelight@0: Delete "$SMPROGRAMS\$SHORTCUTS\Uninstall.lnk" truelight@0: Delete "$SMPROGRAMS\$SHORTCUTS\Readme.lnk" truelight@0: Delete "$SMPROGRAMS\$SHORTCUTS\Changelog.lnk" darkvater@801: Delete "$SMPROGRAMS\$SHORTCUTS\Known-bugs.lnk" truelight@0: truelight@0: ; Clean up OpenTTD dir truelight@0: Delete "$INSTDIR\changelog.txt" truelight@0: Delete "$INSTDIR\readme.txt" darkvater@801: Delete "$INSTDIR\known-bugs.txt" truelight@0: Delete "$INSTDIR\openttd.exe" truelight@0: Delete "$INSTDIR\strgen.exe" darkvater@250: Delete "$INSTDIR\COPYING" truelight@0: Delete "$INSTDIR\INSTALL.LOG" truelight@0: Delete "$INSTDIR\crash.log" truelight@0: Delete "$INSTDIR\openttd.cfg" darkvater@1166: Delete "$INSTDIR\hs.dat" Darkvater@1841: Delete "$INSTDIR\cached_sprites.*" darkvater@801: Delete "$INSTDIR\save\autosave\network*.tmp" ; temporary network file truelight@0: truelight@0: ; Data files truelight@0: Delete "$INSTDIR\data\opntitle.dat" Darkvater@6494: Darkvater@6494: Delete "$INSTDIR\data\2ccmap.grf" Darkvater@6494: Delete "$INSTDIR\data\airports.grf" Darkvater@6494: Delete "$INSTDIR\data\autorail.grf" Darkvater@6494: Delete "$INSTDIR\data\canalsw.grf" Darkvater@6494: Delete "$INSTDIR\data\dosdummy.grf" Darkvater@6494: Delete "$INSTDIR\data\elrailsw.grf" Darkvater@2946: Delete "$INSTDIR\data\nsignalsw.grf" truelight@0: Delete "$INSTDIR\data\openttd.grf" Darkvater@6495: Delete "$INSTDIR\data\roadstops.grf" darkvater@250: Delete "$INSTDIR\data\trkfoundw.grf" Darkvater@6494: darkvater@1215: Delete "$INSTDIR\data\sample.cat" Darkvater@6494: ; Windows Data files truelight@0: Delete "$INSTDIR\data\trg1r.grf" truelight@0: Delete "$INSTDIR\data\trghr.grf" truelight@0: Delete "$INSTDIR\data\trgtr.grf" truelight@0: Delete "$INSTDIR\data\trgcr.grf" truelight@0: Delete "$INSTDIR\data\trgir.grf" darkvater@1215: ; Dos Data files darkvater@1215: Delete "$INSTDIR\data\trg1.grf" darkvater@1215: Delete "$INSTDIR\data\trgh.grf" darkvater@1215: Delete "$INSTDIR\data\trgt.grf" darkvater@1215: Delete "$INSTDIR\data\trgc.grf" darkvater@1215: Delete "$INSTDIR\data\trgi.grf" truelight@0: Darkvater@6494: ; Music truelight@0: Delete "$INSTDIR\gm\*.gm" truelight@0: Darkvater@6494: ; Language files truelight@0: Delete "$INSTDIR\lang\*.lng" truelight@0: Delete "$INSTDIR\lang\english.txt" truelight@0: truelight@0: ; Remove remaining directories truelight@0: RMDir "$SMPROGRAMS\$SHORTCUTS\Extras\" truelight@0: RMDir "$SMPROGRAMS\$SHORTCUTS" truelight@0: RMDir "$INSTDIR\gm" truelight@0: RMDir "$INSTDIR\lang" truelight@0: RMDir "$INSTDIR\data" truelight@0: RMDir "$INSTDIR" Darkvater@6494: truelight@0: SectionEnd truelight@0: Darkvater@6494: ;------------------------------------------------------------ Darkvater@6494: ; Custom page function to find the TTDLX CD/install location Darkvater@6494: Function SelectCDEnter truelight@0: SectionGetFlags ${Section2} $0 darkvater@801: IntOp $1 $0 & 0x80 ; bit 7 set by upgrade, no need to copy files Darkvater@6494: IntCmp $1 1 DoneCD ; Upgrade doesn't need copy files darkvater@1215: truelight@0: IntOp $0 $0 & 1 truelight@0: IntCmp $0 1 NoAbort Darkvater@6494: Abort truelight@0: NoAbort: truelight@0: truelight@0: GetTempFileName $R0 truelight@0: !insertmacro MUI_HEADER_TEXT "Locate TTD" "Setup needs the location of Transport Tycoon Deluxe in order to continue." Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "CDFinder.ini" "CDFinder" Darkvater@6494: truelight@0: ClearErrors Darkvater@6494: ; Now, let's populate $CDDRIVE Darkvater@6494: ReadRegStr $R0 HKLM "SOFTWARE\Fish Technology Group\Transport Tycoon Deluxe" "HDPath" truelight@0: IfErrors NoTTD Darkvater@6494: StrCmp $CDDRIVE "" 0 Populated Darkvater@6494: StrCpy $CDDRIVE $R0 Darkvater@6494: Populated: Darkvater@6494: StrCpy $AddWinPrePopulate "Setup has detected your TTD folder. Don't change the folder. Simply press Next." truelight@0: Goto TruFinish truelight@0: NoTTD: Darkvater@6494: StrCpy $AddWinPrePopulate "Setup couldn't find TTD. Please enter the path where the graphics files from TTD are stored and press Next to continue." truelight@0: TruFinish: truelight@0: ClearErrors Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 2" "State" $CDDRIVE ; TTDLX path Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 3" "Text" $AddWinPrePopulate ; Caption darkvater@801: DoneCD: Darkvater@6494: ; Initialize the dialog *AFTER* we've changed the text otherwise we won't see the changes Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CDFinder" Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_SHOW truelight@0: FunctionEnd truelight@0: Darkvater@6494: ;---------------------------------------------------------------- Darkvater@6494: ; Custom page function when 'next' is selected for the TTDLX path Darkvater@6494: Function SelectCDExit Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_READ $CDDRIVE "CDFinder" "Field 2" "State" Darkvater@6494: ; If trg1r.grf does not exist at the path, retry with DOS version Darkvater@6494: IfFileExists $CDDRIVE\trg1r.grf "" DosCD Darkvater@6494: IfFileExists $CDDRIVE\trgir.grf "" NoCD Darkvater@6494: IfFileExists $CDDRIVE\sample.cat hasCD NoCD Darkvater@6494: DosCD: Darkvater@6494: IfFileExists $CDDRIVE\TRG1.GRF "" NoCD Darkvater@6494: IfFileExists $CDDRIVE\TRGI.GRF "" NoCD Darkvater@6494: IfFileExists $CDDRIVE\SAMPLE.CAT hasCD NoCD truelight@0: NoCD: Darkvater@6494: MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!" Darkvater@6494: Abort truelight@0: hasCD: truelight@0: FunctionEnd truelight@0: rubidium@7241: ;---------------------------------------------------------------------------------- rubidium@7241: ; Disable the "Back" button on finish page if the installer is run on Win9x systems rubidium@7241: Function DisableBack rubidium@7241: Call GetWindowsVersion rubidium@7241: Pop $R0 rubidium@7241: StrCmp $R0 "win9x" 0 WinNT rubidium@7241: !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "BackEnabled" "0" rubidium@7241: WinNT: rubidium@7241: ClearErrors rubidium@7241: FunctionEnd rubidium@7241: rubidium@7241: ;---------------------------------------------------------------------------------- rubidium@7241: ; Custom page function to show notices for running OpenTTD (only for win32 systems) Darkvater@6494: ; We have extracted this custom page as Notice in the .onInit function Darkvater@6494: Function ShowWarningsPage rubidium@7241: Call GetWindowsVersion rubidium@7241: Pop $R0 rubidium@7241: ; Don't show the UNICODE notice if the installer is run on Win9x systems rubidium@7241: StrCmp $R0 "win9x" 0 WinNT rubidium@7241: Abort rubidium@7241: WinNT: Darkvater@6494: !insertmacro MUI_HEADER_TEXT "Installation Complete" "Important notices for OpenTTD usage." Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "notice.ini" "Notice" Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Notice" Darkvater@6494: ClearErrors Darkvater@6494: !insertmacro MUI_INSTALLOPTIONS_SHOW Darkvater@6494: FunctionEnd Darkvater@6494: Darkvater@6494: ;------------------------------------------------------------------------------- Darkvater@6494: ; Determine windows version, returns "win9x" if Win9x/Me or "winnt" on the stack Darkvater@6494: Function GetWindowsVersion Darkvater@6494: ClearErrors Darkvater@6494: StrCpy $R0 "winnt" Darkvater@6494: Darkvater@6494: ReadRegStr $R1 HKLM "SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion" CurrentVersion Darkvater@6494: IfErrors 0 WinNT Darkvater@6494: StrCpy $R0 "win9x" Darkvater@6494: WinNT: Darkvater@6494: ClearErrors Darkvater@6494: Push $R0 Darkvater@6494: FunctionEnd truelight@0: truelight@0: Var OLDVERSION truelight@0: Var UninstallString truelight@0: Darkvater@6494: ;----------------------------------------------------------------------------------- Darkvater@6494: ; NSIS Initialize function, determin if we are going to install/upgrade or uninstall truelight@0: Function .onInit truelight@0: StrCpy $SHORTCUTS "OpenTTD" truelight@0: truelight@0: SectionSetFlags 0 17 truelight@0: Darkvater@6494: ; Starts Setup - let's look for an older version of OpenTTD truelight@0: ReadRegDWORD $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" truelight@0: truelight@0: IfErrors ShowWelcomeMessage ShowUpgradeMessage truelight@0: ShowWelcomeMessage: truelight@0: ReadRegStr $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" Darkvater@6494: ; In the event someone still has OpenTTD 0.1, this will detect that (that installer used a string instead of dword entry) truelight@0: IfErrors FinishCallback truelight@0: truelight@0: ShowUpgradeMessage: truelight@0: IntCmp ${INSTALLERVERSION} $R8 VersionsAreEqual InstallerIsOlder WelcomeToSetup truelight@0: WelcomeToSetup: Darkvater@6494: ; An older version was found. Let's let the user know there's an upgrade that will take place. truelight@0: ReadRegStr $OLDVERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayVersion" Darkvater@6494: ; Gets the older version then displays it in a message box Darkvater@6494: MessageBox MB_OK|MB_ICONINFORMATION \ Darkvater@6494: "Welcome to ${APPNAMEANDVERSION} Setup.$\n \ Darkvater@6494: This will allow you to upgrade from version $OLDVERSION." darkvater@801: SectionSetFlags ${Section2} 0x80 ; set bit 7 truelight@0: Goto FinishCallback truelight@0: truelight@0: VersionsAreEqual: truelight@0: ReadRegStr $UninstallString HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString" truelight@0: IfFileExists "$UninstallString" "" FinishCallback Darkvater@6494: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@6494: "Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n \ Darkvater@6494: Are you trying to uninstall it?" \ Darkvater@6494: IDYES DoUninstall IDNO FinishCallback Darkvater@6494: DoUninstall: ; You have the same version as this installer. This allows you to uninstall. truelight@0: Exec "$UninstallString" truelight@0: Quit truelight@0: truelight@0: InstallerIsOlder: Darkvater@6494: MessageBox MB_OK|MB_ICONSTOP \ Darkvater@6494: "You have a newer version of ${APPNAME}.$\n \ Darkvater@6494: Setup will now exit." truelight@0: Quit truelight@0: truelight@0: FinishCallback: truelight@0: ClearErrors truelight@0: FunctionEnd truelight@0: ; eof truelight@0: