Darkvater@5453: !define APPNAME "OpenTTD" ; Define application name rubidium@5474: !define APPVERSION "0.5.1" ; Define application version rubidium@5478: !define INSTALLERVERSION 30 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!! Darkvater@5453: Darkvater@5453: !define APPURLLINK "http://www.openttd.org" Darkvater@5453: !define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}" Darkvater@5453: !define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X Darkvater@5453: darkvater@1215: !define MUI_ICON "..\..\..\openttd.ico" darkvater@1215: !define MUI_UNICON "..\..\..\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@5453: 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@5453: !define MUI_LICENSEPAGE_RADIOBUTTONS Darkvater@5453: !insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "I &accept this agreement" Darkvater@5453: !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@5453: ;--------------------------------- Darkvater@5453: ; Custom page for finding TTDLX CD Darkvater@5453: 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@5453: ;----------------------------------------------------- Darkvater@5453: ; New custom page to show UNICODE and MSLU information Darkvater@5453: Page custom ShowWarningsPage Darkvater@5453: Darkvater@5453: !define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe" Darkvater@5457: !define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for latest news, FAQs and downloads" Darkvater@5453: !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 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@5453: ;-------------------------------------------------------------- Darkvater@5453: ; (Core) OpenTTD install section. Copies all internal game data truelight@0: Section "!OpenTTD" Section1 Darkvater@5453: ; Overwrite files by default, but don't complain on failure truelight@0: SetOverwrite try truelight@0: truelight@0: ; Make savegame folder truelight@0: SetOutPath "$INSTDIR\save" Darkvater@5453: ; Define root variable relative to installer truelight@0: !define PATH_ROOT "..\..\..\" truelight@0: truelight@0: ; Copy language files Darkvater@5453: SetOutPath "$INSTDIR\lang\" Darkvater@5453: File ${PATH_ROOT}lang\*.lng Darkvater@5453: File ${PATH_ROOT}lang\english.txt truelight@0: truelight@0: ; Copy data files truelight@0: SetOutPath "$INSTDIR\data\" darkvater@1166: File ${PATH_ROOT}data\*.grf darkvater@1166: File ${PATH_ROOT}data\opntitle.dat Darkvater@5453: ; Copy scenario files (don't choke if they don't exist) darkvater@1157: SetOutPath "$INSTDIR\scenario\" Darkvater@5453: File /nonfatal ${PATH_ROOT}scenario\*.scn truelight@0: Darkvater@5457: ; Copy heightmap files (don't choke if they don't exist) Darkvater@5457: SetOutPath "$INSTDIR\scenario\heightmap\" Darkvater@5457: File /nonfatal ${PATH_ROOT}scenario\heightmap\*.* Darkvater@5457: truelight@0: ; Copy the rest of the stuff truelight@0: SetOutPath "$INSTDIR\" truelight@0: Darkvater@5453: ; Copy text files Darkvater@5453: File ${PATH_ROOT}changelog.txt Darkvater@5453: File ${PATH_ROOT}COPYING Darkvater@5453: File ${PATH_ROOT}readme.txt Darkvater@5453: File ${PATH_ROOT}known-bugs.txt truelight@0: truelight@0: ; Copy executable Darkvater@5453: File /oname=openttd.exe ${PATH_ROOT}Release\openttd.exe darkvater@1157: File ${PATH_ROOT}strgen\Debug\strgen.exe truelight@0: truelight@0: Darkvater@5453: ; 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@5453: ; Create the Registry Entries Darkvater@5453: 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@5453: 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@5453: WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "URLInfoAbout" "${APPURLLINK}" Darkvater@5453: ; 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@5453: ;---------------------------------------------------------------------------------- Darkvater@5453: ; TTDLX files install section. Copies all needed TTDLX files from CD or install dir truelight@0: Section "Copy Game Graphics" Section2 Darkvater@5453: ; Let's copy the files with size approximation truelight@0: SetOutPath "$INSTDIR\gm" Darkvater@5453: CopyFiles "$CDDRIVE\gm\*.gm" "$INSTDIR\gm\" 1028 truelight@0: SetOutPath "$INSTDIR\data\" truelight@0: CopyFiles "$CDDRIVE\sample.cat" "$INSTDIR\data\sample.cat" 1566 Darkvater@5449: ; 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@5453: ;------------------------------------------- Darkvater@5453: ; 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@5449: !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Copies the game graphics. Requires TTD (for Windows)." truelight@0: !insertmacro MUI_FUNCTION_DESCRIPTION_END truelight@0: Darkvater@5453: ;----------------------------------------------- Darkvater@5453: ; Uninstall section, deletes all installed files Darkvater@5453: Section "Uninstall" Darkvater@5453: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@5453: "Remove the save game folders located at $\"$INSTDIR\save?$\"$\n \ Darkvater@5453: If you choose Yes, your saved games will be deleted." \ Darkvater@5453: IDYES RemoveSavedGames IDNO NoRemoveSavedGames truelight@0: RemoveSavedGames: Darkvater@5453: Delete "$INSTDIR\save\autosave\*" Darkvater@5453: RMDir "$INSTDIR\save\autosave" Darkvater@5453: Delete "$INSTDIR\save\*" Darkvater@5453: RMDir "$INSTDIR\save" truelight@0: NoRemoveSavedGames: truelight@0: Darkvater@5453: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@5453: "Remove the scenario folders located at $\"$INSTDIR\scenario?$\"$\n \ Darkvater@5453: If you choose Yes, your scenarios will be deleted." \ Darkvater@5453: IDYES RemoveScen IDNO NoRemoveScen darkvater@31: RemoveScen: Darkvater@5457: Delete "$INSTDIR\scenario\heightmap*" Darkvater@5457: RMDir "$INSTDIR\scenario\heightmap" Darkvater@5453: Delete "$INSTDIR\scenario\*" Darkvater@5453: RMDir "$INSTDIR\scenario" darkvater@31: NoRemoveScen: darkvater@31: Darkvater@5453: ; 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@5453: Darkvater@5453: Delete "$INSTDIR\data\2ccmap.grf" Darkvater@5453: Delete "$INSTDIR\data\airports.grf" Darkvater@5453: Delete "$INSTDIR\data\autorail.grf" Darkvater@5453: Delete "$INSTDIR\data\canalsw.grf" Darkvater@5453: Delete "$INSTDIR\data\dosdummy.grf" Darkvater@5453: Delete "$INSTDIR\data\elrailsw.grf" Darkvater@2946: Delete "$INSTDIR\data\nsignalsw.grf" truelight@0: Delete "$INSTDIR\data\openttd.grf" darkvater@250: Delete "$INSTDIR\data\trkfoundw.grf" Darkvater@5453: darkvater@1215: Delete "$INSTDIR\data\sample.cat" Darkvater@5449: ; 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@5453: ; Music truelight@0: Delete "$INSTDIR\gm\*.gm" truelight@0: Darkvater@5453: ; 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@5453: truelight@0: SectionEnd truelight@0: Darkvater@5453: ;------------------------------------------------------------ Darkvater@5453: ; Custom page function to find the TTDLX CD/install location Darkvater@5453: Function SelectCDEnter truelight@0: SectionGetFlags ${Section2} $0 darkvater@801: IntOp $1 $0 & 0x80 ; bit 7 set by upgrade, no need to copy files Darkvater@5453: 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@5453: 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@5453: !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "CDFinder.ini" "CDFinder" Darkvater@5453: truelight@0: ClearErrors Darkvater@5453: ; Now, let's populate $CDDRIVE Darkvater@5454: ReadRegStr $R0 HKLM "SOFTWARE\Fish Technology Group\Transport Tycoon Deluxe" "HDPath" truelight@0: IfErrors NoTTD Darkvater@5454: StrCmp $CDDRIVE "" 0 Populated Darkvater@5454: StrCpy $CDDRIVE $R0 Darkvater@5454: Populated: Darkvater@5453: StrCpy $AddWinPrePopulate "Setup has detected your TTD folder. Don't change the folder. Simply press Next." truelight@0: Goto TruFinish truelight@0: NoTTD: Darkvater@5453: 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@5454: !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 2" "State" $CDDRIVE ; TTDLX path Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 3" "Text" $AddWinPrePopulate ; Caption darkvater@801: DoneCD: Darkvater@5453: ; Initialize the dialog *AFTER* we've changed the text otherwise we won't see the changes Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CDFinder" Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_SHOW truelight@0: FunctionEnd truelight@0: Darkvater@5453: ;---------------------------------------------------------------- Darkvater@5453: ; Custom page function when 'next' is selected for the TTDLX path Darkvater@5453: Function SelectCDExit Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_READ $CDDRIVE "CDFinder" "Field 2" "State" Darkvater@5453: ; If trg1r.grf does not exist at the path, retry with DOS version Darkvater@5453: IfFileExists $CDDRIVE\trg1r.grf "" DosCD Darkvater@5453: IfFileExists $CDDRIVE\trgir.grf "" NoCD Darkvater@5453: IfFileExists $CDDRIVE\sample.cat hasCD NoCD Darkvater@5453: DosCD: Darkvater@5453: IfFileExists $CDDRIVE\TRG1.GRF "" NoCD Darkvater@5453: IfFileExists $CDDRIVE\TRGI.GRF "" NoCD Darkvater@5453: IfFileExists $CDDRIVE\SAMPLE.CAT hasCD NoCD truelight@0: NoCD: Darkvater@5453: MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!" Darkvater@5453: Abort truelight@0: hasCD: truelight@0: FunctionEnd truelight@0: Darkvater@5453: ;--------------------------------------------------------------------- Darkvater@5453: ; Custom page function to show notices for running OpenTTD Darkvater@5453: ; We have extracted this custom page as Notice in the .onInit function Darkvater@5453: Function ShowWarningsPage Darkvater@5453: !insertmacro MUI_HEADER_TEXT "Installation Complete" "Important notices for OpenTTD usage." Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "notice.ini" "Notice" Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Notice" Darkvater@5453: Darkvater@5453: Call GetWindowsVersion Darkvater@5453: Pop $R0 Darkvater@5453: Darkvater@5453: ; Hide the MSLU text if the installer is not run on Win9x systems Darkvater@5453: StrCmp $R0 "winnt" 0 Win9x Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 1" "HWND" ; MSLU groupbox Darkvater@5453: ShowWindow $R1 0 Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 2" "HWND" ; MSLU text Darkvater@5453: ShowWindow $R1 0 Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 3" "HWND" ; MSLU link Darkvater@5453: ShowWindow $R1 0 Darkvater@5453: Win9x: Darkvater@5453: ClearErrors Darkvater@5453: !insertmacro MUI_INSTALLOPTIONS_SHOW Darkvater@5453: FunctionEnd Darkvater@5453: Darkvater@5453: ;------------------------------------------------------------------------------- Darkvater@5453: ; Determine windows version, returns "win9x" if Win9x/Me or "winnt" on the stack Darkvater@5453: Function GetWindowsVersion Darkvater@5453: ClearErrors Darkvater@5453: StrCpy $R0 "winnt" Darkvater@5453: Darkvater@5453: ReadRegStr $R1 HKLM "SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion" CurrentVersion Darkvater@5453: IfErrors 0 WinNT Darkvater@5453: StrCpy $R0 "win9x" Darkvater@5453: WinNT: Darkvater@5453: ClearErrors Darkvater@5453: Push $R0 Darkvater@5453: FunctionEnd truelight@0: truelight@0: Var OLDVERSION truelight@0: Var UninstallString truelight@0: Darkvater@5453: ;----------------------------------------------------------------------------------- Darkvater@5453: ; 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@5453: ; 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@5453: ; 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@5453: ; 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@5453: ; Gets the older version then displays it in a message box Darkvater@5453: MessageBox MB_OK|MB_ICONINFORMATION \ Darkvater@5453: "Welcome to ${APPNAMEANDVERSION} Setup.$\n \ Darkvater@5453: 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@5453: MessageBox MB_YESNO|MB_ICONQUESTION \ Darkvater@5453: "Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n \ Darkvater@5453: Are you trying to uninstall it?" \ Darkvater@5453: IDYES DoUninstall IDNO FinishCallback Darkvater@5453: 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@5453: MessageBox MB_OK|MB_ICONSTOP \ Darkvater@5453: "You have a newer version of ${APPNAME}.$\n \ Darkvater@5453: Setup will now exit." truelight@0: Quit truelight@0: truelight@0: FinishCallback: truelight@0: ClearErrors truelight@0: FunctionEnd truelight@0: ; eof truelight@0: