From 285c068aae98e4a9b0fc346ed57232da13161f3e Mon Sep 17 00:00:00 2001 From: Darkvater Date: Tue, 27 Feb 2007 16:51:49 +0000 Subject: (svn r8926) -Merge: Release changes from the 0.5 branch back to trunk. This ensures an updated changelog, readme, etc. --- os/win32/installer/install.nsi | 271 +++++++++++++++++++++++++---------------- 1 file changed, 167 insertions(+), 104 deletions(-) (limited to 'os/win32/installer/install.nsi') diff --git a/os/win32/installer/install.nsi b/os/win32/installer/install.nsi index 598d9d481..b65e2d978 100644 --- a/os/win32/installer/install.nsi +++ b/os/win32/installer/install.nsi @@ -1,8 +1,11 @@ -; Define your application name -!define APPNAME "OpenTTD" -!define APPNAMEANDVERSION "OpenTTD 0.5.0.0" -!define APPVERSION "0.5.0.0" -!define INSTALLERVERSION 27 ;NEED TO UPDATE THIS FOR EVERY RELEASE!!! +!define APPNAME "OpenTTD" ; Define application name +!define APPVERSION "0.5.0" ; Define application version +!define INSTALLERVERSION 28 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!! + +!define APPURLLINK "http://www.openttd.org" +!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}" +!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X + !define MUI_ICON "..\..\..\openttd.ico" !define MUI_UNICON "..\..\..\openttd.ico" !define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp" @@ -14,7 +17,7 @@ SetCompressor LZMA ; Version Info Var AddWinPrePopulate -VIProductVersion "${APPVERSION}" +VIProductVersion "${APPVERSIONINTERNAL}" VIAddVersionKey "ProductName" "OpenTTD Installer" VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}" VIAddVersionKey "CompanyName" "OpenTTD Developers" @@ -44,18 +47,17 @@ Var CDDRIVE !define MUI_ABORTWARNING !insertmacro MUI_PAGE_WELCOME -LicenseForceSelection radiobuttons "I &accept this Agreement" "I &do not accept this agreement" +!define MUI_LICENSEPAGE_RADIOBUTTONS +!insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "I &accept this agreement" +!insertmacro MUI_DEFAULT MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "I &do not accept this agreement" !insertmacro MUI_PAGE_LICENSE "..\..\..\COPYING" -;-------------------------------- -; Rest of pages !insertmacro MUI_PAGE_COMPONENTS - -;-------------------------------- -; New custom page for finding CD -Page custom SelectCD SelectCD2 ": TTD folder" +;--------------------------------- +; Custom page for finding TTDLX CD +Page custom SelectCDEnter SelectCDExit ": TTD folder" !insertmacro MUI_PAGE_DIRECTORY @@ -69,9 +71,13 @@ Page custom SelectCD SelectCD2 ": TTD folder" !insertmacro MUI_PAGE_INSTFILES -!define MUI_FINISHPAGE_RUN "$INSTDIR\OpenTTD.exe" +;----------------------------------------------------- +; New custom page to show UNICODE and MSLU information +Page custom ShowWarningsPage + +!define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe" !define MUI_FINISHPAGE_LINK "Visit OpenTTD's homepage" -!define MUI_FINISHPAGE_LINK_LOCATION "http://www.openttd.org/" +!define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}" !define MUI_FINISHPAGE_NOREBOOTSUPPORT !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt" !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED @@ -84,64 +90,63 @@ Page custom SelectCD SelectCD2 ": TTD folder" !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_RESERVEFILE_LANGDLL -;-------------------------------- -; Sections +;-------------------------------------------------------------- +; (Core) OpenTTD install section. Copies all internal game data Section "!OpenTTD" Section1 - - ; Set Section properties + ; Overwrite files by default, but don't complain on failure SetOverwrite try ; Make savegame folder SetOutPath "$INSTDIR\save" - ; define root variable relative to installer + ; Define root variable relative to installer !define PATH_ROOT "..\..\..\" ; Copy language files - SetOutPath "$INSTDIR\lang\" - File ${PATH_ROOT}lang\*.lng - File ${PATH_ROOT}lang\english.txt + SetOutPath "$INSTDIR\lang\" + File ${PATH_ROOT}lang\*.lng + File ${PATH_ROOT}lang\english.txt ; Copy data files SetOutPath "$INSTDIR\data\" File ${PATH_ROOT}data\*.grf File ${PATH_ROOT}data\opntitle.dat - ; Copy scenario files + ; Copy scenario files (don't choke if they don't exist) SetOutPath "$INSTDIR\scenario\" - File ${PATH_ROOT}scenario\*.scn + File /nonfatal ${PATH_ROOT}scenario\*.scn ; Copy the rest of the stuff SetOutPath "$INSTDIR\" - ;Copy text files - File ${PATH_ROOT}changelog.txt - File ${PATH_ROOT}COPYING - File ${PATH_ROOT}readme.txt - File ${PATH_ROOT}known-bugs.txt + ; Copy text files + File ${PATH_ROOT}changelog.txt + File ${PATH_ROOT}COPYING + File ${PATH_ROOT}readme.txt + File ${PATH_ROOT}known-bugs.txt ; Copy executable - File /oname=OpenTTD.exe ${PATH_ROOT}Release\openttd.exe + File /oname=openttd.exe ${PATH_ROOT}Release\openttd.exe File ${PATH_ROOT}strgen\Debug\strgen.exe - ; Delete old files from the main dir. they are now placed in data/ and lang/ + ; Delete old files from the main dir. they are now placed in data/ and lang/ Delete "$INSTDIR\*.lng" Delete "$INSTDIR\*.grf" Delete "$INSTDIR\sample.cat" Delete "$INSTDIR\ttd.exe" - ;Creates the Registry Entries - WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Comments" "Visit http://www.openttd.org" + ; Create the Registry Entries + WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Comments" "Visit ${APPURLLINK}" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayIcon" "$INSTDIR\openttd.exe,0" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayName" "OpenTTD ${APPVERSION}" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayVersion" "${APPVERSION}" - WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "HelpLink" "http://www.openttd.org" + WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "HelpLink" "${APPURLLINK}" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder" "$INSTDIR" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Publisher" "OpenTTD" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Shortcut Folder" "$SHORTCUTS" WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "URLInfoAbout" "http://www.openttd.org" - ;This key sets the Version DWORD that patches will check against + WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "URLInfoAbout" "${APPURLLINK}" + ; This key sets the Version DWORD that new installers will check against WriteRegDWORD HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" ${INSTALLERVERSION} !insertmacro MUI_STARTMENU_WRITE_BEGIN "OpenTTD" @@ -155,13 +160,15 @@ Section "!OpenTTD" Section1 !insertmacro MUI_STARTMENU_WRITE_END SectionEnd +;---------------------------------------------------------------------------------- +; TTDLX files install section. Copies all needed TTDLX files from CD or install dir Section "Copy Game Graphics" Section2 - ; Include files from CD - ;Let's copy the files from the CD + ; Let's copy the files with size approximation SetOutPath "$INSTDIR\gm" - CopyFiles "$CDDRIVE\gm\*.gm" "$INSTDIR\gm\" + CopyFiles "$CDDRIVE\gm\*.gm" "$INSTDIR\gm\" 1028 SetOutPath "$INSTDIR\data\" CopyFiles "$CDDRIVE\sample.cat" "$INSTDIR\data\sample.cat" 1566 + ; Copy Windows files CopyFiles "$CDDRIVE\trg1r.grf" "$INSTDIR\data\trg1r.grf" 2365 CopyFiles "$CDDRIVE\trgcr.grf" "$INSTDIR\data\trgcr.grf" 260 CopyFiles "$CDDRIVE\trghr.grf" "$INSTDIR\data\trghr.grf" 400 @@ -176,7 +183,8 @@ Section "Copy Game Graphics" Section2 SetOutPath "$INSTDIR\" SectionEnd -;---------------------- +;------------------------------------------- +; Install the uninstaller (option is hidden) Section -FinishSection WriteUninstaller "$INSTDIR\uninstall.exe" SectionEnd @@ -184,28 +192,33 @@ SectionEnd ; Modern install component descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "OpenTTD is a fully functional clone of TTD and is very playable." - !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Copies the game graphics. Requires TTD for Windows." + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Copies the game graphics. Requires TTD (for Windows)." !insertmacro MUI_FUNCTION_DESCRIPTION_END -;!undef SHORTCUTS -;Uninstall section - -Section Uninstall - MessageBox MB_YESNOCANCEL|MB_ICONQUESTION "Would you like to remove the Saved Game Folders located at '$INSTDIR\Save?' If you choose Yes, your Saved Games will be removed." IDYES RemoveSavedGames IDNO NoRemoveSavedGames +;----------------------------------------------- +; Uninstall section, deletes all installed files +Section "Uninstall" + MessageBox MB_YESNO|MB_ICONQUESTION \ + "Remove the save game folders located at $\"$INSTDIR\save?$\"$\n \ + If you choose Yes, your saved games will be deleted." \ + IDYES RemoveSavedGames IDNO NoRemoveSavedGames RemoveSavedGames: - Delete "$INSTDIR\Save\AutoSave\*" - RMDir "$INSTDIR\Save\AutoSave" - Delete "$INSTDIR\Save\*" - RMDir "$INSTDIR\Save" + Delete "$INSTDIR\save\autosave\*" + RMDir "$INSTDIR\save\autosave" + Delete "$INSTDIR\save\*" + RMDir "$INSTDIR\save" NoRemoveSavedGames: - MessageBox MB_YESNOCANCEL|MB_ICONQUESTION "Would you like to remove the Scenario Folders located at '$INSTDIR\Scenario?' If you choose Yes, your Scenarios will be removed." IDYES RemoveScen IDNO NoRemoveScen + MessageBox MB_YESNO|MB_ICONQUESTION \ + "Remove the scenario folders located at $\"$INSTDIR\scenario?$\"$\n \ + If you choose Yes, your scenarios will be deleted." \ + IDYES RemoveScen IDNO NoRemoveScen RemoveScen: - Delete "$INSTDIR\Scenario\*" - RMDir "$INSTDIR\Scenario" + Delete "$INSTDIR\scenario\*" + RMDir "$INSTDIR\scenario" NoRemoveScen: - ;Remove from registry... + ; Remove from registry... !insertmacro MUI_STARTMENU_GETFOLDER "OpenTTD" $SHORTCUTS ReadRegStr $SHORTCUTS HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Shortcut Folder" @@ -238,13 +251,19 @@ Section Uninstall ; Data files Delete "$INSTDIR\data\opntitle.dat" + + Delete "$INSTDIR\data\2ccmap.grf" + Delete "$INSTDIR\data\airports.grf" + Delete "$INSTDIR\data\autorail.grf" + Delete "$INSTDIR\data\canalsw.grf" + Delete "$INSTDIR\data\dosdummy.grf" + Delete "$INSTDIR\data\elrailsw.grf" Delete "$INSTDIR\data\nsignalsw.grf" Delete "$INSTDIR\data\openttd.grf" - Delete "$INSTDIR\data\canalsw.grf" Delete "$INSTDIR\data\trkfoundw.grf" - Delete "$INSTDIR\data\autorail.grf" - Delete "$INSTDIR\data\dosdummy.grf" + Delete "$INSTDIR\data\sample.cat" + ; Windows Data files Delete "$INSTDIR\data\trg1r.grf" Delete "$INSTDIR\data\trghr.grf" Delete "$INSTDIR\data\trgtr.grf" @@ -257,10 +276,10 @@ Section Uninstall Delete "$INSTDIR\data\trgc.grf" Delete "$INSTDIR\data\trgi.grf" - ;Music + ; Music Delete "$INSTDIR\gm\*.gm" - ;Language files + ; Language files Delete "$INSTDIR\lang\*.lng" Delete "$INSTDIR\lang\english.txt" @@ -271,104 +290,148 @@ Section Uninstall RMDir "$INSTDIR\lang" RMDir "$INSTDIR\data" RMDir "$INSTDIR" + SectionEnd -Function SelectCD +;------------------------------------------------------------ +; Custom page function to find the TTDLX CD/install location +Function SelectCDEnter SectionGetFlags ${Section2} $0 IntOp $1 $0 & 0x80 ; bit 7 set by upgrade, no need to copy files - IntCmp $1 1 DoneCD ;upgrade doesn't need copy files + IntCmp $1 1 DoneCD ; Upgrade doesn't need copy files IntOp $0 $0 & 1 IntCmp $0 1 NoAbort - Abort + Abort NoAbort: GetTempFileName $R0 !insertmacro MUI_HEADER_TEXT "Locate TTD" "Setup needs the location of Transport Tycoon Deluxe in order to continue." - File /oname=$R0 CDFinder.ini + !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "CDFinder.ini" "CDFinder" + ClearErrors - ;Now, let's populate $CDDRIVE - ReadRegStr $CDDRIVE HKLM "SOFTWARE\Fish Technology Group\Transport Tycoon Deluxe" "HDPath" + ; Now, let's populate $CDDRIVE + ReadRegStr $R0 HKLM "SOFTWARE\Fish Technology Group\Transport Tycoon Deluxe" "HDPath" IfErrors NoTTD - StrCpy $AddWinPrePopulate "Setup has detected your TTD folder. Don't change the folder. Simply press Next." + StrCmp $CDDRIVE "" 0 Populated + StrCpy $CDDRIVE $R0 +Populated: + StrCpy $AddWinPrePopulate "Setup has detected your TTD folder. Don't change the folder. Simply press Next." Goto TruFinish NoTTD: - StrCpy $CDDRIVE "" - StrCpy $AddWinPrePopulate "Setup couldn't find TTD. Please enter the path where the graphics files from TTD are stored and press Next to continue." + StrCpy $AddWinPrePopulate "Setup couldn't find TTD. Please enter the path where the graphics files from TTD are stored and press Next to continue." TruFinish: ClearErrors - WriteINIStr $R0 "Field 2" "State" $CDDRIVE - WriteINIStr $R0 "Field 3" "Text" $AddWinPrePopulate + !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 2" "State" $CDDRIVE ; TTDLX path + !insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 3" "Text" $AddWinPrePopulate ; Caption DoneCD: - InstallOptions::dialog $R0 - Pop $R1 + ; Initialize the dialog *AFTER* we've changed the text otherwise we won't see the changes + !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CDFinder" + !insertmacro MUI_INSTALLOPTIONS_SHOW FunctionEnd -; Exit from page function -Function SelectCD2 - ReadINIStr $CDDRIVE $R0 "Field 2" "State" - IfFileExists $CDDRIVE\trg1r.grf "" NoCD - IfFileExists $CDDRIVE\sample.cat "" NoCD - IfFileExists $CDDRIVE\trgir.grf hasCD "" +;---------------------------------------------------------------- +; Custom page function when 'next' is selected for the TTDLX path +Function SelectCDExit + !insertmacro MUI_INSTALLOPTIONS_READ $CDDRIVE "CDFinder" "Field 2" "State" + ; If trg1r.grf does not exist at the path, retry with DOS version + IfFileExists $CDDRIVE\trg1r.grf "" DosCD + IfFileExists $CDDRIVE\trgir.grf "" NoCD + IfFileExists $CDDRIVE\sample.cat hasCD NoCD +DosCD: + IfFileExists $CDDRIVE\TRG1.GRF "" NoCD + IfFileExists $CDDRIVE\TRGI.GRF "" NoCD + IfFileExists $CDDRIVE\SAMPLE.CAT hasCD NoCD NoCD: - MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!" - Abort + MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!" + Abort hasCD: FunctionEnd +;--------------------------------------------------------------------- +; Custom page function to show notices for running OpenTTD +; We have extracted this custom page as Notice in the .onInit function +Function ShowWarningsPage + !insertmacro MUI_HEADER_TEXT "Installation Complete" "Important notices for OpenTTD usage." + !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "notice.ini" "Notice" + !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Notice" + + Call GetWindowsVersion + Pop $R0 + + ; Hide the MSLU text if the installer is not run on Win9x systems + StrCmp $R0 "winnt" 0 Win9x + !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 1" "HWND" ; MSLU groupbox + ShowWindow $R1 0 + !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 2" "HWND" ; MSLU text + ShowWindow $R1 0 + !insertmacro MUI_INSTALLOPTIONS_READ $R1 "Notice" "Field 3" "HWND" ; MSLU link + ShowWindow $R1 0 +Win9x: + ClearErrors + !insertmacro MUI_INSTALLOPTIONS_SHOW +FunctionEnd + +;------------------------------------------------------------------------------- +; Determine windows version, returns "win9x" if Win9x/Me or "winnt" on the stack +Function GetWindowsVersion + ClearErrors + StrCpy $R0 "winnt" + + ReadRegStr $R1 HKLM "SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion" CurrentVersion + IfErrors 0 WinNT + StrCpy $R0 "win9x" +WinNT: + ClearErrors + Push $R0 +FunctionEnd Var OLDVERSION Var UninstallString +;----------------------------------------------------------------------------------- +; NSIS Initialize function, determin if we are going to install/upgrade or uninstall Function .onInit StrCpy $SHORTCUTS "OpenTTD" SectionSetFlags 0 17 - ;Want to have a splash BMP? Uncomment these lines - CAREFUL WITH FILE SIZE - -; # the plugins dir is automatically deleted when the installer exits -; InitPluginsDir -; File /oname=$PLUGINSDIR\splash.bmp "C:\Documents and Settings\Administrator\My Documents\My Pictures\OpenTTD Splash.bmp" -; #optional -; #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav" -; -; ;MessageBox MB_OK "Fading" -; -; advsplash::show 3000 600 400 -1 $PLUGINSDIR\splash -; -; Pop $0 ; $0 has '1' if the user closed the splash screen early, -; ; '0' if everything closed normal, and '-1' if some error occured. -;End Splash Area - ;Starts Setup - let's look for an older version of OpenTTD + ; Starts Setup - let's look for an older version of OpenTTD ReadRegDWORD $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" IfErrors ShowWelcomeMessage ShowUpgradeMessage ShowWelcomeMessage: ReadRegStr $R8 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Version" - ;In the event someone still has OpenTTD 0.1, this will detect that (that installer used a string instead of dword entry) + ; In the event someone still has OpenTTD 0.1, this will detect that (that installer used a string instead of dword entry) IfErrors FinishCallback ShowUpgradeMessage: IntCmp ${INSTALLERVERSION} $R8 VersionsAreEqual InstallerIsOlder WelcomeToSetup WelcomeToSetup: - ;An older version was found. Let's let the user know there's an upgrade that will take plce. + ; An older version was found. Let's let the user know there's an upgrade that will take place. ReadRegStr $OLDVERSION HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "DisplayVersion" - ;Gets the older version then displays it in a message box - MessageBox MB_OK|MB_ICONINFORMATION "Welcome to ${APPNAMEANDVERSION} Setup.$\n$\nThis will allow you to upgrade from version $OLDVERSION." + ; Gets the older version then displays it in a message box + MessageBox MB_OK|MB_ICONINFORMATION \ + "Welcome to ${APPNAMEANDVERSION} Setup.$\n \ + This will allow you to upgrade from version $OLDVERSION." SectionSetFlags ${Section2} 0x80 ; set bit 7 Goto FinishCallback VersionsAreEqual: ReadRegStr $UninstallString HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString" IfFileExists "$UninstallString" "" FinishCallback - MessageBox MB_YESNO|MB_ICONQUESTION "Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n$\nAre you trying to uninstall it?" IDYES DoUninstall IDNO FinishCallback -DoUninstall: ;You have the same version as this installer. This allows you to uninstall. + MessageBox MB_YESNO|MB_ICONQUESTION \ + "Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n \ + Are you trying to uninstall it?" \ + IDYES DoUninstall IDNO FinishCallback +DoUninstall: ; You have the same version as this installer. This allows you to uninstall. Exec "$UninstallString" Quit InstallerIsOlder: - MessageBox MB_OK|MB_ICONSTOP "You have a newer version of ${APPNAME}.$\n$\nSetup will now exit." + MessageBox MB_OK|MB_ICONSTOP \ + "You have a newer version of ${APPNAME}.$\n \ + Setup will now exit." Quit FinishCallback: -- cgit v1.2.3-54-g00ecf