ludum-dare-42/options/windows/RunnerInstaller.nsi

214 lines
5.6 KiB
Plaintext
Raw Permalink Normal View History

2021-06-16 23:13:19 -07:00
; RunnerInstaller.nsi
;
; This script is based on example1.nsi, but it remember the directory,
; has uninstall support and (optionally) installs start menu shortcuts.
;
; It will install example2.nsi into a directory that the user selects,
;--------------------------------
!include MUI2.nsh
!ifndef FULL_VERSION
!define FULL_VERSION "1.0.0.0"
!endif
!ifndef SOURCE_DIR
!define SOURCE_DIR "C:\source\temp\InstallerTest\runner"
!endif
!ifndef INSTALLER_FILENAME
!define INSTALLER_FILENAME "C:\source\temp\InstallerTest\RunnerInstaller.exe"
!endif
!ifndef MAKENSIS
!define MAKENSIS "%appdata%\GameMaker-Studio\makensis"
!endif
!ifndef COMPANY_NAME
!define COMPANY_NAME ""
!endif
!ifndef COPYRIGHT_TXT
!define COPYRIGHT_TXT "(c)Copyright 2013"
!endif
!ifndef FILE_DESC
!define FILE_DESC "Created with GameMaker:Studio"
!endif
!ifndef LICENSE_NAME
!define LICENSE_NAME "License.txt"
!endif
!ifndef ICON_FILE
!define ICON_FILE "icon.ico"
!endif
!ifndef IMAGE_FINISHED
!define IMAGE_FINISHED "Runner_finish.bmp"
!endif
!ifndef IMAGE_HEADER
!define IMAGE_HEADER "Runner_header.bmp"
!endif
!ifndef PRODUCT_NAME
!define PRODUCT_NAME "Runner"
!endif
!define APP_NAME "${PRODUCT_NAME}"
!define SHORT_NAME "${PRODUCT_NAME}"
!ifndef EXE_NAME
!define EXE_NAME "${PRODUCT_NAME}"
!endif
;;USAGE:
!define MIN_FRA_MAJOR "2"
!define MIN_FRA_MINOR "0"
!define MIN_FRA_BUILD "*"
!addplugindir "."
;--------------------------------
; The name of the installer
Name "${APP_NAME}"
Caption "${APP_NAME}"
BrandingText "${APP_NAME}"
; The file to write
OutFile "${INSTALLER_FILENAME}"
; The default installation directory
InstallDir "$PROFILE\${APP_NAME}"
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKCU "Software\Runner" "Install_Dir"
; Request application privileges for Windows Vista
RequestExecutionLevel admin
VIProductVersion "${FULL_VERSION}"
VIAddVersionKey /LANG=1033 "FileVersion" "${FULL_VERSION}"
VIAddVersionKey /LANG=1033 "ProductVersion" "${FULL_VERSION}"
VIAddVersionKey /LANG=1033 "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=1033 "CompanyName" "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=1033 "LegalCopyright" "${COPYRIGHT_TXT}"
VIAddVersionKey /LANG=1033 "FileDescription" "${FILE_DESC}"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
!define MUI_ICON "${ICON_FILE}"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${IMAGE_FINISHED}"
!define MUI_HEADERIMAGE_BITMAP "${IMAGE_HEADER}"
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
;--------------------------------
; Pages
!insertmacro MUI_PAGE_LICENSE "${LICENSE_NAME}"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
# These indented statements modify settings for MUI_PAGE_FINISH
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN_TEXT "Start ${PRODUCT_NAME}"
!define MUI_FINISHPAGE_RUN "$INSTDIR\${EXE_NAME}.exe"
!insertmacro MUI_PAGE_FINISH
Var DirectXSetupError
UninstPage uninstConfirm
UninstPage instfiles
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
; The stuff to install
Section `${APP_NAME}`
SectionIn RO
; Set output path to the installation directory.
SetOutPath $INSTDIR
; Put file there
File "${LICENSE_NAME}"
File /r "${SOURCE_DIR}\*.*"
; Write the uninstall keys for Windows
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "DisplayName" "${APP_NAME}"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "NoModify" 1
WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "NoRepair" 1
WriteUninstaller "uninstall.exe"
SectionEnd
; Optional section (can be disabled by the user)
Section "Start Menu Shortcuts"
CreateDirectory "$SMPROGRAMS\${APP_NAME}"
CreateShortCut "$SMPROGRAMS\${APP_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}.exe" "" "$INSTDIR\${EXE_NAME}.exe"
CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME} License.lnk" "notepad.exe" "$INSTDIR\License.txt"
SectionEnd
; Optional section (can be enabled by the user)
Section /o "Desktop shortcut"
CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}.exe" ""
SectionEnd
;--------------------------------
; Uninstaller
Section "Uninstall"
; Remove registry keys
DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}"
; Remove files and uninstaller (everything)
RMDir /r "$INSTDIR"
; Remove desktop icon
Delete "$DESKTOP\${APP_NAME}.lnk"
; Remove shortcuts, if any
Delete "$SMPROGRAMS\${APP_NAME}\*.*"
; Remove directories used
RMDir "$SMPROGRAMS\${APP_NAME}"
RMDir "$INSTDIR"
SectionEnd
;--------------------------------
;
; This should be the LAST section available....
;
Section "DirectX Install" SEC_DIRECTX
SectionIn RO
SetOutPath "$TEMP"
File "${MAKENSIS}\dxwebsetup.exe"
DetailPrint "Running DirectX Setup..."
ExecWait '"$TEMP\dxwebsetup.exe" /Q' $DirectXSetupError
DetailPrint "Finished DirectX Setup"
Delete "$TEMP\dxwebsetup.exe"
SetOutPath "$INSTDIR"
SectionEnd