Improve NSIS installer and add x64 logic

This commit is contained in:
Ted John 2016-08-25 22:17:15 +01:00
parent 2e31288b6b
commit 7df67e3a29
3 changed files with 46 additions and 30 deletions

View File

@ -3,18 +3,34 @@
!define /ifndef APPV_MINOR 0
!define /ifndef APPV_MAINT 5
!define /ifndef APPV_BUILD 0
!define /ifndef APPV_EXTRA "-beta"
!define APPNAME "OpenRCT2" ; Define application name
!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
!include ${VERSION_INCLUDE}
!define APPNAME "OpenRCT2"
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}"
!define APPVERSIONINTERNAL "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}.${APPV_BUILD}"
!define /ifndef APPURLLINK "https://github.com/OpenRCT2/OpenRCT2"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}"
!if "${PLATFORM}" == "Win32"
!define OPENRCT2_EXE "openrct2.exe"
!define OPENRCT2_DLL "openrct2.dll"
!define APPBITS 32
!define APPARCH "win32"
InstallDir "$PROGRAMFILES32\OpenRCT2\"
!else
!define OPENRCT2_EXE "openrct2_x64.exe"
!define APPBITS 64
!define APPARCH "win64"
InstallDir "$PROGRAMFILES64\OpenRCT2\"
!endif
!define SUPPORTED_OS "Windows Vista, 7, 8.1 and 10"
; Define root variable relative to installer
!define PATH_ROOT "..\..\"
!define BINARY_DIR "${PATH_ROOT}bin"
!define MUI_ICON "${PATH_ROOT}resources\logo\icon.ico"
!define MUI_UNICON "${PATH_ROOT}resources\logo\icon.ico"
@ -27,7 +43,7 @@ SetCompressor LZMA
; Version Info
VIProductVersion "${APPVERSIONINTERNAL}"
VIAddVersionKey "ProductName" "OpenRCT2 ${APPBITS}-bit Installer for Windows ${EXTRA_VERSION}"
VIAddVersionKey "ProductName" "OpenRCT2 ${APPBITS}-bit Installer for ${SUPPORTED_OS}"
VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}"
VIAddVersionKey "CompanyName" "OpenRCT2 Developers"
VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}"
@ -36,7 +52,7 @@ VIAddVersionKey "InternalName" "InstOpenRCT2-${APPARCH}"
VIAddVersionKey "FileVersion" "${APPVERSION}-${APPARCH}"
VIAddVersionKey "LegalCopyright" " "
; Main Install settings
Name "${APPNAMEANDVERSION} ${APPBITS}-bit for Windows ${EXTRA_VERSION}"
Name "${APPNAMEANDVERSION} ${APPBITS}-bit for ${SUPPORTED_OS}"
; NOTE: Keep trailing backslash!
InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "Install Folder"
@ -83,7 +99,7 @@ ManifestDPIAware true
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!"
!define MUI_FINISHPAGE_RUN "$INSTDIR\openrct2.exe"
!define MUI_FINISHPAGE_RUN "$INSTDIR\${OPENRCT2_EXE}"
!define MUI_FINISHPAGE_LINK "Visit the OpenRCT2 site for more information"
!define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}"
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
@ -139,12 +155,14 @@ Section "!OpenRCT2" Section1
Call unix2dos
; Copy executable
File /oname=openrct2.exe ${BINARY_DIR}\openrct2.exe
File /oname=openrct2.dll ${BINARY_DIR}\openrct2.dll
File /oname=${OPENRCT2_EXE} ${BINARY_DIR}\${OPENRCT2_EXE}
!ifdef OPENRCT2_DLL
File /oname=${OPENRCT2_DLL} ${BINARY_DIR}\${OPENRCT2_DLL}
!endif
; Create the Registry Entries
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "Comments" "Visit ${APPURLLINK}"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "DisplayIcon" "$INSTDIR\openrct2.exe,0"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "DisplayIcon" "$INSTDIR\${OPENRCT2_EXE},0"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "DisplayName" "OpenRCT2 ${APPVERSION}"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "DisplayVersion" "${APPVERSION}"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "HelpLink" "${APPURLLINK}"
@ -157,9 +175,9 @@ Section "!OpenRCT2" Section1
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenRCT2" "Version" "${APPVERSIONINTERNAL}"
!insertmacro MUI_STARTMENU_WRITE_BEGIN "OpenRCT2"
CreateShortCut "$DESKTOP\OpenRCT2.lnk" "$INSTDIR\openrct2.exe"
CreateShortCut "$DESKTOP\OpenRCT2.lnk" "$INSTDIR\${OPENRCT2_EXE}"
CreateDirectory "$SMPROGRAMS\$SHORTCUTS"
CreateShortCut "$SMPROGRAMS\$SHORTCUTS\OpenRCT2.lnk" "$INSTDIR\openrct2.exe"
CreateShortCut "$SMPROGRAMS\$SHORTCUTS\OpenRCT2.lnk" "$INSTDIR\${OPENRCT2_EXE}"
CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Uninstall.lnk" "$INSTDIR\uninstall.exe"
CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Readme.lnk" "$INSTDIR\Readme.txt"
CreateShortCut "$SMPROGRAMS\$SHORTCUTS\Changelog.lnk" "$INSTDIR\Changelog.txt"
@ -201,23 +219,23 @@ Section "Uninstall"
Delete "$SMPROGRAMS\$SHORTCUTS\Contributors.lnk"
; Clean up OpenRCT2 dir
Delete "$INSTDIR\curl-ca-bundle.crt"
Delete "$INSTDIR\changelog.txt"
Delete "$INSTDIR\known_issues.txt"
Delete "$INSTDIR\licence.txt"
Delete "$INSTDIR\readme.txt"
Delete "$INSTDIR\contributors.md"
Delete "$INSTDIR\openrct2.exe"
Delete "$INSTDIR\openrct2.dll"
Delete "$INSTDIR\licence.txt"
Delete "$INSTDIR\${OPENRCT2_EXE}"
!ifdef OPENRCT2_DLL
Delete "$INSTDIR\${OPENRCT2_DLL}"
!endif
Delete "$INSTDIR\INSTALL.LOG"
Delete "$INSTDIR\crash.log"
Delete "$INSTDIR\crash.dmp"
; Data files
Delete "$INSTDIR\data\language\*.txt"
Delete "$INSTDIR\data\title\*.*"
RMDir /r "$INSTDIR\data"
; Remove remaining directories
RMDir "$SMPROGRAMS\$SHORTCUTS"
RMDir "$INSTDIR\data"
RMDir "$INSTDIR"
SectionEnd
@ -285,13 +303,13 @@ FunctionEnd
;-------------------------------------------------------------------------------
; Check whether OpenRCT2 is running
Function CheckOpenRCT2Running
IfFileExists "$INSTDIR\openrct2.exe" 0 Done
IfFileExists "$INSTDIR\${OPENRCT2_EXE}" 0 Done
Retry:
FindProcDLL::FindProc "openrct2.exe"
FindProcDLL::FindProc "${OPENRCT2_EXE}"
Pop $R0
IntCmp $R0 1 0 Done
ClearErrors
Delete "$INSTDIR\openrct2.exe"
Delete "$INSTDIR\${OPENRCT2_EXE}"
IfErrors 0 Done
ClearErrors
MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "OpenRCT2 is running. Please close it and retry." IDRETRY Retry

View File

@ -1,5 +0,0 @@
!define APPBITS 32 ; Define number of bits for the architecture
!define EXTRA_VERSION "Vista, 7, 8.1 and 10"
!define APPARCH "win32" ; Define the application architecture
!define BINARY_DIR "${PATH_ROOT}bin"
InstallDir "$PROGRAMFILES32\OpenRCT2\"

View File

@ -165,7 +165,10 @@
<!-- Create the installer -->
<Message Text="Building Windows Installer (NSIS script)" Importance="high" />
<Exec Command="makensis /DOUTFILE=$(PublishInstallerExe) /DAPPV_EXTRA=$(VersionExtra) /DVERSION_INCLUDE=$(DistDir)windows\win32.txt $(NsisScript)"
<Exec Command="makensis /DOUTFILE=$(PublishInstallerExe) ^
/DAPPV_EXTRA=$(VersionExtra) ^
/DPLATFORM=$(Platform) ^
$(NsisScript)"
StandardOutputImportance="normal" />
<!-- Sign the installer -->