From 3327ce1ab32c73f96e122d27c7352f7d8b0aa43e Mon Sep 17 00:00:00 2001 From: Ludwig Nussel Date: Tue, 15 Apr 2008 14:19:03 +0000 Subject: [PATCH] add nsis installer target for mingw32 --- Makefile | 9 +++ misc/nsis/Makefile | 15 +++++ misc/nsis/ioquake3.nsi.in | 127 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 misc/nsis/Makefile create mode 100644 misc/nsis/ioquake3.nsi.in diff --git a/Makefile b/Makefile index bf188b6a..e27b9420 100644 --- a/Makefile +++ b/Makefile @@ -149,6 +149,7 @@ Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src LOKISETUPDIR=misc/setup +NSISDIR=misc/nsis SDLHDIR=$(MOUNT_DIR)/SDL12 LIBSDIR=$(MOUNT_DIR)/libs TEMPDIR=/tmp @@ -1947,7 +1948,11 @@ ifneq ($(BUILD_GAME_SO),0) endif clean: clean-debug clean-release +ifeq ($(PLATFORM),mingw32) + @$(MAKE) -C $(NSISDIR) clean +else @$(MAKE) -C $(LOKISETUPDIR) clean +endif clean-debug: @$(MAKE) clean2 B=$(BD) @@ -1979,7 +1984,11 @@ distclean: clean toolsclean @rm -rf $(BUILD_DIR) installer: release +ifeq ($(PLATFORM),mingw32) + @$(MAKE) VERSION=$(VERSION) -C $(NSISDIR) V=$(V) +else @$(MAKE) VERSION=$(VERSION) -C $(LOKISETUPDIR) V=$(V) +endif dist: rm -rf ioquake3-$(SVN_VERSION) diff --git a/misc/nsis/Makefile b/misc/nsis/Makefile new file mode 100644 index 00000000..4405f0f6 --- /dev/null +++ b/misc/nsis/Makefile @@ -0,0 +1,15 @@ +VERSION=1.35_SVN +RELEASE=0 + +all: ioquake3-$(VERSION)-$(RELEASE).x86.exe + +ioquake3.nsi: ioquake3.nsi.in + sed 's/XXXVERSIONXXX/$(VERSION)/;s/XXXRELEASEXXX/$(RELEASE)/' < $< > $@ + +ioquake3-$(VERSION)-$(RELEASE).x86.exe: ioquake3.nsi + makensis ioquake3.nsi + +clean: + rm -rf *.exe ioquake3.nsi + +.PHONY: all clean diff --git a/misc/nsis/ioquake3.nsi.in b/misc/nsis/ioquake3.nsi.in new file mode 100644 index 00000000..637035fb --- /dev/null +++ b/misc/nsis/ioquake3.nsi.in @@ -0,0 +1,127 @@ +; NSIS description file for ioquake3 installer +; +; EDIT WITH CARE! +; +; This file is used to automatically build the installers in the +; openSUSE build service, don't break this! +; +; you have to copy SDL.dll here manually + +; The name of the installer +Name "ioquake3" + +; The file to write +OutFile "ioquake3-XXXVERSIONXXX-XXXRELEASEXXX.x86.exe" + +; The default installation directory +InstallDir $PROGRAMFILES\ioquake3 + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey HKLM "Software\ioquake3" "Install_Dir" + +;-------------------------------- + +; Pages + +Page components +Page directory +Page instfiles + +UninstPage uninstConfirm +UninstPage instfiles + +;-------------------------------- + +; The stuff to install +Section "ioquake3 (required)" + + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + + ; Put file there + File "../../build/release-mingw32-x86/ioq3ded.x86.exe" + File "../../build/release-mingw32-x86/ioquake3.x86.exe" + File "../../COPYING.txt" + File "../../README.txt" + File "../../id-readme.txt" + + SetOutPath "$INSTDIR\baseq3" + File "../../build/release-mingw32-x86/baseq3/cgamex86.dll" + File "../../build/release-mingw32-x86/baseq3/qagamex86.dll" + File "../../build/release-mingw32-x86/baseq3/uix86.dll" + SetOutPath "$INSTDIR\missionpack" + File "../../build/release-mingw32-x86/missionpack/cgamex86.dll" + File "../../build/release-mingw32-x86/missionpack/qagamex86.dll" + File "../../build/release-mingw32-x86/missionpack/uix86.dll" + + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\ioquake3 "Install_Dir" "$INSTDIR" + + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "DisplayName" "ioquake3" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "NoRepair" 1 + WriteUninstaller "uninstall.exe" + +SectionEnd + +; Optional section (can be disabled by the user) +Section "Start Menu Shortcuts" + + CreateDirectory "$SMPROGRAMS\ioquake3" + CreateShortCut "$SMPROGRAMS\ioquake3\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\ioquake3\ioquake3.lnk" "$INSTDIR\ioquake3.x86.exe" "" "$INSTDIR\ioquake3.x86.exe" 0 + +SectionEnd + +Section "SDL.dll" + + SetOutPath $INSTDIR + + File "SDL.dll" + +SectionEnd + + +;-------------------------------- + +; Uninstaller + +Section "Uninstall" + + ; Remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" + DeleteRegKey HKLM SOFTWARE\ioquake3 + + ; Remove files and uninstaller + Delete $INSTDIR\baseq3\cgamex86.dll + Delete $INSTDIR\baseq3\qagamex86.dll + Delete $INSTDIR\baseq3\uix86.dll + Delete $INSTDIR\missionpack\cgamex86.dll + Delete $INSTDIR\missionpack\qagamex86.dll + Delete $INSTDIR\missionpack\uix86.dll + Delete $INSTDIR\ioquake3.x86.exe + Delete $INSTDIR\ioq3ded.x86.exe + + Delete $INSTDIR\COPYING.txt + Delete $INSTDIR\README.txt + Delete $INSTDIR\id-readme.txt + + Delete $INSTDIR\SDL.dll + + Delete $INSTDIR\uninstall.exe + + ; Remove shortcuts, if any + Delete "$SMPROGRAMS\ioquake3\*.lnk" + + ; Remove directories used + RMDir "$SMPROGRAMS\ioquake3" + RMDir "$INSTDIR\baseq3" + RMDir "$INSTDIR\missionpack" + RMDir "$INSTDIR" + +SectionEnd