Changeset - r13950:2bf4774bbaf6
[Not reviewed]
master
0 4 0
rubidium - 14 years ago 2009-12-14 18:20:42
rubidium@openttd.org
(svn r18496) -Codechange: some changes to the installer to make it more usable, easier to maintain and more up-to-date
4 files changed with 72 insertions and 40 deletions:
0 comments (0 inline, 0 general)
os/windows/installer/install.nsi
Show inline comments
 
# Version numbers to update
 
!define APPV_MAJOR 0
 
!define APPV_MINOR 8
 
!define APPV_MAINT 0
 
!define APPV_BUILD 0
 
!define APPV_EXTRA ""
 

	
 
!define APPNAME "OpenTTD"   ; Define application name
 
!define APPVERSION "0.8.0"  ; Define application version
 
!define APPVERSIONINTERNAL "0.8.0.0" ; Define application version in X.X.X.X
 
!define INSTALLERVERSION 71 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
 
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}"  ; Define application version
 
!define APPVERSIONINTERNAL "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}.${APPV_BUILD}" ; Define application version in X.X.X.X
 
!define INSTALLERVERSION ${APPV_MAJOR}${APPV_MINOR}${APPV_MAINT}${APPV_BUILD}
 
!include ${VERSION_INCLUDE}
 

	
 
!define APPURLLINK "http://www.openttd.org"
 
@@ -9,6 +16,7 @@
 

	
 
!define OPENGFX_BASE_VERSION "0.7.0"
 
!define OPENSFX_BASE_VERSION "0.8.0"
 
!define NOSOUND_BASE_VERSION "0.8.0"
 

	
 
!define MUI_ICON "..\..\..\media\openttd.ico"
 
!define MUI_UNICON "..\..\..\media\openttd.ico"
 
@@ -22,7 +30,7 @@ SetCompressor LZMA
 
; Version Info
 
Var AddWinPrePopulate
 
VIProductVersion "${APPVERSIONINTERNAL}"
 
VIAddVersionKey "ProductName" "OpenTTD Installer ${APPBITS} bits version ${EXTRA_VERSION}"
 
VIAddVersionKey "ProductName" "OpenTTD Installer ${APPBITS} bits for Windows ${EXTRA_VERSION}"
 
VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}"
 
VIAddVersionKey "CompanyName" "OpenTTD Developers"
 
VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}"
 
@@ -31,7 +39,7 @@ VIAddVersionKey "InternalName" "InstOpen
 
VIAddVersionKey "FileVersion" "${APPVERSION}-${APPARCH}"
 
VIAddVersionKey "LegalCopyright" " "
 
; Main Install settings
 
Name "${APPNAMEANDVERSION} ${APPBITS} bits version ${EXTRA_VERSION}"
 
Name "${APPNAMEANDVERSION} ${APPBITS} bits for Windows ${EXTRA_VERSION}"
 

	
 
; NOTE: Keep trailing backslash!
 
InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder"
 
@@ -45,17 +53,15 @@ Var SHORTCUTS
 
Var CDDRIVE
 

	
 
; Modern interface settings
 
!include "MUI.nsh"
 
!include "MUI2.nsh"
 
!include "InstallOptions.nsh"
 

	
 
!define MUI_ABORTWARNING
 
!define MUI_WELCOMEPAGE_TITLE_3LINES
 
!insertmacro MUI_PAGE_WELCOME
 

	
 
!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"
 

	
 
!define MUI_COMPONENTSPAGE_SMALLDESC
 
!insertmacro MUI_PAGE_COMPONENTS
 

	
 
;---------------------------------
 
@@ -104,7 +110,7 @@ Section "!OpenTTD" Section1
 

	
 
	; Copy language files
 
	SetOutPath "$INSTDIR\lang\"
 
	File ${PATH_ROOT}bin\lang\*.lng
 
	File ${PATH_ROOT}bin\lang\english.lng
 

	
 
	; Copy AI files
 
	SetOutPath "$INSTDIR\ai\"
 
@@ -166,9 +172,20 @@ Section "!OpenTTD" Section1
 
	!insertmacro MUI_STARTMENU_WRITE_END
 
SectionEnd
 

	
 
;--------------------------------------------------------------
 
; OpenTTD translation install section. Copies only translations
 
Section "OpenTTD translations" Section6
 
	; Overwrite files by default, but don't complain on failure
 
	SetOverwrite try
 

	
 
	; Copy language files
 
	SetOutPath "$INSTDIR\lang\"
 
	File ${PATH_ROOT}bin\lang\*.lng
 
SectionEnd
 

	
 
;----------------------------------------------------------------------------------
 
; OpenGFX files install section. Downloads OpenGFX and installs it
 
Section "Download free Graphics" Section3
 
Section "Download OpenGFX (free graphics set)" Section3
 
	SetOverwrite try
 

	
 
	NSISdl::download "http://binaries.openttd.org/installer/opengfx-${OPENGFX_BASE_VERSION}.tar.7z" "$INSTDIR\data\opengfx.tar.7z"
 
@@ -189,7 +206,7 @@ SectionEnd
 

	
 
;----------------------------------------------------------------------------------
 
; OpenSFX files install section. Downloads OpenSFX and installs it
 
Section "Download free Sounds" Section4
 
Section "Download OpenSFX (free sound set)" Section4
 
	SetOverwrite try
 

	
 
	NSISdl::download "http://binaries.openttd.org/installer/opensfx-${OPENSFX_BASE_VERSION}.tar.7z" "$INSTDIR\data\opensfx.tar.7z"
 
@@ -209,8 +226,29 @@ Done:
 
SectionEnd
 

	
 
;----------------------------------------------------------------------------------
 
; NoSound files install section. Downloads NoSound and installs it
 
Section "Download NoSound (free sound set)" Section5
 
	SetOverwrite try
 

	
 
	NSISdl::download "http://binaries.openttd.org/installer/nosound-${NOSOUND_BASE_VERSION}.tar.7z" "$INSTDIR\data\nosound.tar.7z"
 
	Pop $R0 ;Get the return value
 
	StrCmp $R0 "success" +3
 
		MessageBox MB_OK "Downloading of NoSound failed"
 
		Goto Done
 

	
 
	; Let's extract the files
 
	SetOutPath "$INSTDIR\data\"
 
	NSIS7z::Extract "$INSTDIR\data\nosound.tar.7z"
 

	
 
	Delete "$INSTDIR\data\nosound.tar.7z"
 
	SetOutPath "$INSTDIR\"
 
Done:
 

	
 
SectionEnd
 

	
 
;----------------------------------------------------------------------------------
 
; TTDLX files install section. Copies all needed TTDLX files from CD or install dir
 
Section /o "Copy Game Graphics" Section2
 
Section /o "Copy data from Transport Tycoon Deluxe CD-ROM" Section2
 
	SetOverwrite try
 
	; Let's copy the files with size approximation
 
	SetOutPath "$INSTDIR\gm"
 
@@ -240,9 +278,11 @@ SectionEnd
 

	
 
; Modern install component descriptions
 
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section1} "OpenTTD is a fully functional clone of Transport Tycoon Deluxe and is very playable. You need at least one of the game graphics and sound sets installed"
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Download the free OpenGFX game graphics. This download is about 3 MiB."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section4} "Download the free OpenSFX game sounds. This download is about 7 MiB."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section1} "Minimal OpenTTD installation in English. You need at least one of the game graphics and sound sets installed."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section6} "Translations of OpenTTD."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Download the free OpenGFX game graphics set. This download is about 3 MiB."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section4} "Download the free OpenSFX game sound set. This download is about 7 MiB."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section5} "Download the free NoSound game sound set. You will not hear anything with this. This download is about 7 KiB."
 
	!insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Copies the game graphics and sounds from the Transport Tycoon Deluxe CD."
 
!insertmacro MUI_FUNCTION_DESCRIPTION_END
 

	
 
@@ -344,8 +384,9 @@ Section "Uninstall"
 
	Delete "$INSTDIR\gm\*.gm"
 

	
 
	; Downloaded OpenGFX/OpenSFX
 
	Delete "$INSTDIR\data\opengfx.tar"
 
	Delete "$INSTDIR\data\opensfx.tar"
 
	Delete "$INSTDIR\data\opengfx-*.tar"
 
	Delete "$INSTDIR\data\opensfx-*.tar"
 
	Delete "$INSTDIR\data\nosound-*.tar"
 

	
 
	; Language files
 
	Delete "$INSTDIR\lang\*.lng"
 
@@ -377,7 +418,7 @@ NoAbort:
 

	
 
	GetTempFileName $R0
 
	!insertmacro MUI_HEADER_TEXT "Locate TTD" "Setup needs the location of Transport Tycoon Deluxe in order to continue."
 
	!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "CDFinder.ini" "CDFinder"
 
	!insertmacro INSTALLOPTIONS_EXTRACT_AS "CDFinder.ini" "CDFinder"
 

	
 
	ClearErrors
 
	; Now, let's populate $CDDRIVE
 
@@ -392,18 +433,18 @@ NoTTD:
 
	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
 
	!insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 2" "State" $CDDRIVE          ; TTDLX path
 
	!insertmacro MUI_INSTALLOPTIONS_WRITE "CDFinder" "Field 3" "Text" $AddWinPrePopulate ; Caption
 
	!insertmacro INSTALLOPTIONS_WRITE "CDFinder" "Field 2" "State" $CDDRIVE          ; TTDLX path
 
	!insertmacro INSTALLOPTIONS_WRITE "CDFinder" "Field 3" "Text" $AddWinPrePopulate ; Caption
 
DoneCD:
 
	; 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
 
	!insertmacro INSTALLOPTIONS_INITDIALOG "CDFinder"
 
	!insertmacro INSTALLOPTIONS_SHOW
 
FunctionEnd
 

	
 
;----------------------------------------------------------------
 
; Custom page function when 'next' is selected for the TTDLX path
 
Function SelectCDExit
 
	!insertmacro MUI_INSTALLOPTIONS_READ $CDDRIVE "CDFinder" "Field 2" "State"
 
	!insertmacro 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
 
@@ -418,17 +459,6 @@ NoCD:
 
hasCD:
 
FunctionEnd
 

	
 
;----------------------------------------------------------------------------------
 
; Disable the "Back" button on finish page if the installer is run on Win9x systems
 
Function DisableBack
 
	Call GetWindowsVersion
 
	Pop $R0
 
	StrCmp $R0 "win9x" 0 WinNT
 
	!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "Settings" "BackEnabled" "0"
 
WinNT:
 
	ClearErrors
 
FunctionEnd
 

	
 
;-------------------------------------------------------------------------------
 
; Determine windows version, returns "win9x" if Win9x/Me or "winnt" on the stack
 
Function GetWindowsVersion
 
@@ -493,7 +523,8 @@ Function .onInit
 
	StrCpy $SHORTCUTS "OpenTTD"
 

	
 
	SectionSetSize ${Section3} 6144
 
	SectionSetSize ${Section4} 10240
 
	SectionSetSize ${Section4} 13312
 
	SectionSetSize ${Section5} 30
 

	
 
	SectionSetFlags 0 17
 

	
 
@@ -518,6 +549,7 @@ WelcomeToSetup:
 
	SectionSetFlags ${Section2} 0x80 ; set bit 7
 
	SectionSetFlags ${Section3} 0x80 ; set bit 7
 
	SectionSetFlags ${Section4} 0x80 ; set bit 7
 
	SectionSetFlags ${Section5} 0x80 ; set bit 7
 
	Goto FinishCallback
 

	
 
VersionsAreEqual:
os/windows/installer/version_win32.txt
Show inline comments
 
!define APPBITS 32          ; Define number of bits for the architecture
 
!define EXTRA_VERSION "for Windows 2000, XP and Vista"
 
!define EXTRA_VERSION "2000, XP, Vista and 7"
 
!define APPARCH "win32"     ; Define the application architecture
 
!define BINARY_DIR "${PATH_ROOT}objs\win32\Release"
 
InstallDir "$PROGRAMFILES32\OpenTTD\"
os/windows/installer/version_win64.txt
Show inline comments
 
!define APPBITS 64          ; Define number of bits for the architecture
 
!define EXTRA_VERSION "for Windows XP and Vista"
 
!define EXTRA_VERSION "XP, Vista and 7"
 
!define APPARCH "win64"     ; Define the application architecture
 
!define BINARY_DIR "${PATH_ROOT}objs\x64\Release"
 
InstallDir "$PROGRAMFILES64\OpenTTD\"
os/windows/installer/version_win9x.txt
Show inline comments
 
!define APPBITS 32          ; Define number of bits for the architecture
 
!define EXTRA_VERSION "for Windows 95, 98 and ME"
 
!define EXTRA_VERSION "95, 98 and ME"
 
!define APPARCH "win9x"     ; Define the application architecture
 
!define BINARY_DIR "${PATH_ROOT}bin"
 
InstallDir "$PROGRAMFILES32\OpenTTD\"
0 comments (0 inline, 0 general)