diff options
21 files changed, 939 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore index bff5ead245..906c6a8a83 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,8 @@ lib*.a /.cproject /.settings +/build + /backends/platform/dc/gui /backends/platform/dc/graphics /backends/platform/dc/sound @@ -173,7 +173,7 @@ _strip=strip _ar="ar cru" _as="as" _windres=windres -_win32path="C:/scummvm" +_win32path="build/x86" _aos4path="Games:ScummVM" _staticlibpath=/sw _sdlconfig=sdl-config diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp index 35f68a12c0..7d112c7ffe 100644 --- a/devtools/create_project/create_project.cpp +++ b/devtools/create_project/create_project.cpp @@ -245,6 +245,9 @@ int main(int argc, char *argv[]) { } else if (!std::strcmp(argv[i], "--build-events")) { setup.runBuildEvents = true; + } else if (!std::strcmp(argv[i], "--installer")) { + setup.runBuildEvents = true; + setup.createInstaller = true; } else { std::cerr << "ERROR: Unknown parameter \"" << argv[i] << "\"\n"; return -1; @@ -516,6 +519,8 @@ void displayHelp(const char *exe) { " The default is \"9\", thus \"Visual Studio 2008\"\n" " --build-events Run custom build events as part of the build\n" " (default: false)\n" + " --installer Create NSIS installer after the build (implies --build-events)\n" + " (default: false)\n" "\n" "Engines settings:\n" " --list-engines list all available engines and their default state\n" diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h index f4d2a0a66a..e4ccd7313a 100644 --- a/devtools/create_project/create_project.h +++ b/devtools/create_project/create_project.h @@ -192,10 +192,12 @@ struct BuildSetup { StringList defines; ///< List of all defines for the build. StringList libraries; ///< List of all external libraries required for the build. - bool runBuildEvents; + bool runBuildEvents; ///< Run build events as part of the build (generate revision number and copy engine/theme data & needed files to the build folder + bool createInstaller; ///< Create NSIS installer after the build BuildSetup() { - runBuildEvents = false; + runBuildEvents = false; + createInstaller = false; } }; diff --git a/devtools/create_project/msbuild.cpp b/devtools/create_project/msbuild.cpp index 06425dd4aa..4b8276da6f 100644 --- a/devtools/create_project/msbuild.cpp +++ b/devtools/create_project/msbuild.cpp @@ -283,7 +283,7 @@ void MSBuildProvider::outputProjectSettings(std::ofstream &project, const std::s // Copy data files to the build folder project << "\t\t<PostBuildEvent>\n" "\t\t\t<Message>Copy data files to the build folder</Message>\n" - "\t\t\t<Command>" << getPostBuildEvent(isWin32) << "</Command>\n" + "\t\t\t<Command>" << getPostBuildEvent(isWin32, setup.createInstaller) << "</Command>\n" "\t\t</PostBuildEvent>\n"; } } diff --git a/devtools/create_project/msvc.cpp b/devtools/create_project/msvc.cpp index 49998cd738..af3aa4a519 100644 --- a/devtools/create_project/msvc.cpp +++ b/devtools/create_project/msvc.cpp @@ -158,7 +158,7 @@ std::string MSVCProvider::getPreBuildEvent() const { return cmdLine; } -std::string MSVCProvider::getPostBuildEvent(bool isWin32) const { +std::string MSVCProvider::getPostBuildEvent(bool isWin32, bool createInstaller) const { std::string cmdLine = ""; cmdLine = "@echo off\n" @@ -168,7 +168,10 @@ std::string MSVCProvider::getPostBuildEvent(bool isWin32) const { cmdLine += (isWin32) ? "x86" : "x64"; - cmdLine += " %SCUMMVM_LIBS%"; + cmdLine += " %SCUMMVM_LIBS% "; + + // Specify if installer needs to be built or not + cmdLine += (createInstaller ? "1" : "0"); cmdLine += "\n" "EXIT /B0"; diff --git a/devtools/create_project/msvc.h b/devtools/create_project/msvc.h index b2f2a5d33f..6c8ac33a76 100644 --- a/devtools/create_project/msvc.h +++ b/devtools/create_project/msvc.h @@ -89,11 +89,14 @@ protected: std::string getPreBuildEvent() const; /** - * Get the command line for copying data files to the build directory + * Get the command line for copying data files to the build directory. * - * @param isWin32 Bitness of property file + * @param isWin32 Bitness of property file. + * @param createInstaller true to NSIS create installer + * + * @return The post build event. */ - std::string getPostBuildEvent(bool isWin32) const; + std::string getPostBuildEvent(bool isWin32, bool createInstaller) const; }; } // End of CreateProjectTool namespace diff --git a/devtools/create_project/msvc10/create_project.vcxproj b/devtools/create_project/msvc10/create_project.vcxproj index 15ce217bfc..bf5e415b5d 100644 --- a/devtools/create_project/msvc10/create_project.vcxproj +++ b/devtools/create_project/msvc10/create_project.vcxproj @@ -108,6 +108,7 @@ xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\codeblocks\</Command> <ClInclude Include="..\visualstudio.h" /> </ItemGroup> <ItemGroup> + <None Include="..\scripts\installer.vbs" /> <None Include="..\scripts\postbuild.cmd" /> <None Include="..\scripts\prebuild.cmd" /> <None Include="..\scripts\revision.vbs" /> diff --git a/devtools/create_project/msvc10/create_project.vcxproj.filters b/devtools/create_project/msvc10/create_project.vcxproj.filters index 42db5aa97e..b5e870824e 100644 --- a/devtools/create_project/msvc10/create_project.vcxproj.filters +++ b/devtools/create_project/msvc10/create_project.vcxproj.filters @@ -58,5 +58,8 @@ <None Include="..\scripts\postbuild.cmd"> <Filter>scripts</Filter> </None> + <None Include="..\scripts\installer.vbs"> + <Filter>scripts</Filter> + </None> </ItemGroup> </Project>
\ No newline at end of file diff --git a/devtools/create_project/msvc8/create_project.vcproj b/devtools/create_project/msvc8/create_project.vcproj index 9cd833ea23..639b23d6e7 100644 --- a/devtools/create_project/msvc8/create_project.vcproj +++ b/devtools/create_project/msvc8/create_project.vcproj @@ -232,6 +232,10 @@ RelativePath="..\scripts\revision.vbs" > </File> + <File + RelativePath="..\scripts\installer.vbs" + > + </File> </Filter> </Files> <Globals> diff --git a/devtools/create_project/msvc9/create_project.vcproj b/devtools/create_project/msvc9/create_project.vcproj index 4e0375c35e..f56cbd711c 100644 --- a/devtools/create_project/msvc9/create_project.vcproj +++ b/devtools/create_project/msvc9/create_project.vcproj @@ -233,6 +233,10 @@ RelativePath="..\scripts\revision.vbs" > </File> + <File + RelativePath="..\scripts\installer.vbs" + > + </File> </Filter> </Files> <Globals> diff --git a/devtools/create_project/scripts/installer.vbs b/devtools/create_project/scripts/installer.vbs new file mode 100644 index 0000000000..716fa279a9 --- /dev/null +++ b/devtools/create_project/scripts/installer.vbs @@ -0,0 +1,184 @@ +' +' ScummVM - Graphic Adventure Engine +' +' ScummVM is the legal property of its developers, whose names +' are too numerous to list here. Please refer to the COPYRIGHT +' file distributed with this source distribution. +' +' This program is free software; you can redistribute it and/or +' modify it under the terms of the GNU General Public License +' as published by the Free Software Foundation, version 2 +' of the License. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, write to the Free Software +' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +' +'/ + +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +' This script calls the makensis tool to generate a NSIS Windows installer for ScummVM +' +' It tries to read the NSIS installation folder from the registry and then calls the +' command line script compiler to create the installer. +' +' This is called from the postbuild.cmd batch file +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +'================================================================ +' TODO: Reduce duplication with revision.vbs script +' (ReadRegistryKey and ParseCommandLine are identical) +'================================================================ + +Option Explicit + +Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject") +Dim WshShell : Set WshShell = CreateObject("WScript.Shell") + +' Folders +Dim rootFolder : rootFolder = "" +Dim targetFolder : targetFolder = "" + +' Parse our command line arguments +If ParseCommandLine() Then + CreateInstaller() +End If + +'//////////////////////////////////////////////////////////////// +'// Installer creation +'//////////////////////////////////////////////////////////////// +Sub CreateInstaller() + ' Get nsis installation folder + Dim nsisPath : nsisPath = GetNSISPath() + If (nsisPath = "") Then + Exit Sub + End If + + ' Build command line + Dim commandLine : commandLine = """" & nsisPath & "\makensis.exe"" /V2" & _ + " /Dtop_srcdir=""" & rootFolder & """" & _ + " /Dbuild_dir=""" & targetFolder & """" & _ + " /Dtext_dir=""" & targetFolder & """" & _ + " """ & rootFolder & "\dists\nsis\scummvm.nsi""" + + Dim oExec: Set oExec = WshShell.Exec(commandline) + If Err.Number <> 0 Then + Wscript.StdErr.WriteLine "Error running makensis.exe!" + Exit Sub + End If + + ' Wait till the application is finished ... + Dim ostdOut : Set oStdOut = oExec.StdOut + Do While oExec.Status = 0 + If Not ostdOut.AtEndOfStream Then + Wscript.StdErr.WriteLine ostdOut.ReadAll + End If + + WScript.Sleep 100 + Loop + + If oExec.ExitCode <> 0 Then + Wscript.StdErr.WriteLine "Error while creating installer!" + Exit Sub + End If +End Sub + +Function GetNSISPath() + ' Get the directory where NSIS (should) reside(s) + Dim sNSIS + + ' First, try with 32-bit architecture + sNSIS = ReadRegistryKey("HKLM", "SOFTWARE\NSIS", "", 32) + + If sNSIS = "" Or IsNull(sNSIS) Then + ' No 32-bit version of TortoiseSVN installed, try 64-bit version (doesn't hurt on 32-bit machines, it returns nothing or is ignored) + sNSIS = ReadRegistryKey("HKLM", "SOFTWARE\NSIS", "", 64) + End If + + ' Check if Tortoise is present + If sNSIS = "" Then + Wscript.StdErr.WriteLine "NSIS not installed!" + Exit Function + End If + + GetNSISPath = sNSIS +End Function + +'//////////////////////////////////////////////////////////////// +'// Utilities +'//////////////////////////////////////////////////////////////// +Function ParseCommandLine() + ParseCommandLine = True + + If Wscript.Arguments.Count <> 2 Then + Wscript.StdErr.WriteLine "[Error] Invalid number of arguments (was: " & Wscript.Arguments.Count & ", expected: 2)" + + ParseCommandLine = False + Exit Function + End If + + ' Get our arguments + rootFolder = Wscript.Arguments.Item(0) + targetFolder = Wscript.Arguments.Item(1) + + ' Check that the folders are valid + If Not FSO.FolderExists(rootFolder) Then + Wscript.StdErr.WriteLine "[Error] Invalid root folder (" & rootFolder & ")" + + ParseCommandLine = False + Exit Function + End If + + If Not FSO.FolderExists(targetFolder) Then + Wscript.StdErr.WriteLine "[Error] Invalid target folder (" & targetFolder & ")" + + ParseCommandLine = False + Exit Function + End If + + ' Set absolute paths + rootFolder = FSO.GetAbsolutePathName(rootFolder) + targetFolder = FSO.GetAbsolutePathName(targetFolder) +End Function + +Function ReadRegistryKey(shive, subkey, valuename, architecture) + Dim hiveKey, objCtx, objLocator, objServices, objReg, Inparams, Outparams + + ' First, get the Registry Provider for the requested architecture + Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet") + objCtx.Add "__ProviderArchitecture", architecture ' Must be 64 of 32 + Set objLocator = CreateObject("Wbemscripting.SWbemLocator") + Set objServices = objLocator.ConnectServer("","root\default","","",,,,objCtx) + Set objReg = objServices.Get("StdRegProv") + + ' Check the hive and give it the right value + Select Case shive + Case "HKCR", "HKEY_CLASSES_ROOT" + hiveKey = &h80000000 + Case "HKCU", "HKEY_CURRENT_USER" + hiveKey = &H80000001 + Case "HKLM", "HKEY_LOCAL_MACHINE" + hiveKey = &h80000002 + Case "HKU", "HKEY_USERS" + hiveKey = &h80000003 + Case "HKCC", "HKEY_CURRENT_CONFIG" + hiveKey = &h80000005 + Case "HKDD", "HKEY_DYN_DATA" ' Only valid for Windows 95/98 + hiveKey = &h80000006 + Case Else + MsgBox "Hive not valid (ReadRegistryKey)" + End Select + + Set Inparams = objReg.Methods_("GetStringValue").Inparameters + Inparams.Hdefkey = hiveKey + Inparams.Ssubkeyname = subkey + Inparams.Svaluename = valuename + Set Outparams = objReg.ExecMethod_("GetStringValue", Inparams,,objCtx) + + ReadRegistryKey = Outparams.SValue +End Function diff --git a/devtools/create_project/scripts/postbuild.cmd b/devtools/create_project/scripts/postbuild.cmd index e5f29058b9..da61afcc3c 100644 --- a/devtools/create_project/scripts/postbuild.cmd +++ b/devtools/create_project/scripts/postbuild.cmd @@ -1,36 +1,52 @@ -REM @echo off
+@echo off
REM ---------------------------------------------------------------
REM -- Post-Build Script
REM ---------------------------------------------------------------
REM
REM Copy engine data, themes, translation and required dlls to the
-REM output folder.
+REM output folder and optionally create an installer
REM
REM Expected parameters
REM Root folder
REM Output folder
REM Architecture
REM Libs folder
+REM Installer ("1" to build, "0" to skip)
if "%~1"=="" goto error_root
if "%~2"=="" goto error_output
if "%~3"=="" goto error_arch
if "%~4"=="" goto error_libs
+if "%~5"=="" goto error_installer
echo Copying data files
echo.
-REM Copy files
-xcopy /F /Y "%~1/dists/engine-data/*.dat" %~2 > NUL 2>&1
-xcopy /F /Y "%~1/dists/engine-data/*.tbl" %~2 > NUL 2>&1
-xcopy /F /Y "%~1/dists/engine-data/*.cpt" %~2 > NUL 2>&1
-xcopy /F /Y "%~1/dists/engine-data/README" %~2 > NUL 2>&1
-xcopy /F /Y "%~1/gui/themes/*.zip" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/AUTHORS" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/COPYING.GPL" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/COPYING" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/COPYING.LGPL" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/COPYRIGHT" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/NEWS" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/README" %~2 > NUL 2>&1
+
+xcopy /F /Y "%~1/dists/engine-data/*.dat" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/dists/engine-data/*.tbl" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/dists/engine-data/*.cpt" %~2 > NUL 2>&1
+xcopy /F /Y "%~1/gui/themes/*.zip" %~2 > NUL 2>&1
xcopy /F /Y "%~1/gui/themes/translations.dat" %~2 > NUL 2>&1
-xcopy /F /Y "%~4/lib/%~3/SDL.dll" %~2 > NUL 2>&1
+xcopy /F /Y "%~4/lib/%~3/SDL.dll" %~2 > NUL 2>&1
+xcopy /F /Y "%~4/README-SDL" %~2 > NUL 2>&1
xcopy /F /Y "%~1/backends/vkeybd/packs/vkeybd_default.zip" %~2 > NUL 2>&1
+
+if "%~5"=="0" goto done
+
+echo Running installer script
+echo.
+@call cscript "%~1/devtools/create_project/scripts/installer.vbs" %~1 %~2 1>NUL
+if not %errorlevel% == 0 goto error_script
goto done
:error_root
@@ -49,5 +65,13 @@ goto done echo Invalid libs folder (%~4)!
goto done
+:error_installer
+echo Invalid installer parameter. Should be "0" or "1" (was %~5)!
+goto done
+
+:error_script:
+echo An error occured while running the installer script!
+goto done
+
:done
exit /B0
diff --git a/devtools/create_project/scripts/revision.vbs b/devtools/create_project/scripts/revision.vbs index 9c29a88f2d..fb904856ec 100644 --- a/devtools/create_project/scripts/revision.vbs +++ b/devtools/create_project/scripts/revision.vbs @@ -23,6 +23,21 @@ ' '/ +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +' This script tries to determine a revision number based on the current working tree +' by trying revision control tools in the following order: +' - git (with hg-git detection) +' - mercurial +' - TortoiseSVN +' - SVN +' +' It then writes a new header file to be included during build, with the revision +' information, the current branch, the revision control system (when not git) and +' a flag when the tree is dirty. +' +' This is called from the prebuild.cmd batch file +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + Option Explicit ' Working copy check priority: @@ -216,7 +231,7 @@ Function DetermineGitVersion() Wscript.StdErr.Write " Git... " tool = "git" - ' First check if we have both a .git & .svn folders (in case hg-git has been set up to have the git folder at the working copy level) + ' First check if we have both a .git & .hg folders (in case hg-git has been set up to have the git folder at the working copy level) If FSO.FolderExists(rootFolder & "/.git") And FSO.FolderExists(rootFolder & "/.hg") Then Wscript.StdErr.WriteLine "Mercurial clone with git repository in tree!" Exit Function diff --git a/devtools/create_project/visualstudio.cpp b/devtools/create_project/visualstudio.cpp index 77af8aeca1..f0901907e2 100644 --- a/devtools/create_project/visualstudio.cpp +++ b/devtools/create_project/visualstudio.cpp @@ -167,7 +167,7 @@ void VisualStudioProvider::outputBuildEvents(std::ostream &project, const BuildS "\t\t\t\tCommandLine=\"" << getPreBuildEvent() << "\"\n" "\t\t\t/>\n" "\t\t\t<Tool\tName=\"VCPostBuildEventTool\"\n" - "\t\t\t\tCommandLine=\"" << getPostBuildEvent(isWin32) << "\"\n" + "\t\t\t\tCommandLine=\"" << getPostBuildEvent(isWin32, setup.createInstaller) << "\"\n" "\t\t\t/>\n"; } } diff --git a/devtools/update-version.pl b/devtools/update-version.pl index 91e9e2492b..788cbc7e40 100755 --- a/devtools/update-version.pl +++ b/devtools/update-version.pl @@ -39,6 +39,7 @@ my @subs_files = qw( dists/macosx/Info.plist dists/iphone/Info.plist dists/irix/scummvm.spec + dists/nsis/scummvm.nsi dists/wii/meta.xml dists/android/AndroidManifest.xml dists/android/plugin-manifest.xml diff --git a/dists/nsis/graphics/left.bmp b/dists/nsis/graphics/left.bmp Binary files differnew file mode 100644 index 0000000000..8b31d7d09a --- /dev/null +++ b/dists/nsis/graphics/left.bmp diff --git a/dists/nsis/graphics/scummvm-install.ico b/dists/nsis/graphics/scummvm-install.ico Binary files differnew file mode 100644 index 0000000000..b8b118c7bd --- /dev/null +++ b/dists/nsis/graphics/scummvm-install.ico diff --git a/dists/nsis/scummvm.nsi b/dists/nsis/scummvm.nsi new file mode 100644 index 0000000000..2fe08e046f --- /dev/null +++ b/dists/nsis/scummvm.nsi @@ -0,0 +1,327 @@ +# ScummVM - Graphic Adventure Engine +# +# ScummVM is the legal property of its developers, whose names +# are too numerous to list here. Please refer to the COPYRIGHT +# file distributed with this source distribution. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +#!define _DEBUG + +Name ScummVM + +# Included files +!include MUI2.nsh + +######################################################################################### +# Folders +######################################################################################### +#!define top_srcdir "" ; passed through command line +#!define build_dir "" ; passed through command line +#!define text_dir "" ; passed through command line +!define engine_data "${top_srcdir}\dists\engine-data" +!define theme_data "${top_srcdir}\gui\themes" + +######################################################################################### +# General Symbol Definitions +######################################################################################### +!define REGKEY "Software\$(^Name)\$(^Name)" +!define VERSION "1.3.0git" +!define COMPANY "ScummVM Team" +!define URL "http://scummvm.org/" +!define DESCRIPTION "ScummVM Installer. Look! A three headed monkey (TM)!" +!define COPYRIGHT "Copyright © 2001-2011 The ScummVM Team" + +######################################################################################### +# Installer configuration +######################################################################################### +OutFile ${build_dir}\scummvm-${VERSION}-win32.exe +InstallDir $PROGRAMFILES\ScummVM ; Default installation folder +InstallDirRegKey HKCU "Software\ScummVM\ScummVM" "InstallPath" ; Get installation folder from registry if available + ; The application name needs to be refered directly instead of through ${REGKEY} + ; because lang strings aren't initialized at the point InstallDirRegKey is called + +CRCCheck on +XPStyle on +#TargetMinimalOS 5.0 ; Minimal version of windows for installer: Windows 2000 or more recent + ; (will build unicode installer with NSIS 2.50+) + +VIProductVersion 1.3.0.0 +VIAddVersionKey ProductName $(^Name) +VIAddVersionKey ProductVersion "${VERSION}" +VIAddVersionKey CompanyName "${COMPANY}" +VIAddVersionKey CompanyWebsite "${URL}" +VIAddVersionKey FileVersion "${VERSION}" +VIAddVersionKey FileDescription "${DESCRIPTION}" +VIAddVersionKey LegalCopyright "${COPYRIGHT}" + +BrandingText "$(^Name) ${VERSION}" ; Change branding text on the installer to show our name and version instead of NSIS's + +# Show Details when installing/uninstalling files +ShowInstDetails show +ShowUninstDetails show + +!ifdef _DEBUG + SetCompress off ; for debugging the installer, lzma takes forever + RequestExecutionLevel user +!else + SetCompressor /FINAL /SOLID lzma + SetCompressorDictSize 64 + RequestExecutionLevel admin ; for installation into program files folders +!endif + +######################################################################################### +# MUI Symbol Definitions +######################################################################################### +!define MUI_WELCOMEFINISHPAGE_BITMAP "graphics\left.bmp" +!define MUI_ICON "graphics\scummvm-install.ico" +!define MUI_UNICON "graphics\scummvm-install.ico" + +#Start menu +!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKCU +!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup +!define MUI_STARTMENUPAGE_DEFAULTFOLDER $(^Name) + +# Finish page +!define MUI_FINISHPAGE_RUN "$INSTDIR\scummvm.exe" +!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" +!define MUI_FINISHPAGE_RUN_NOTCHECKED +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + +!define MUI_LICENSEPAGE_RADIOBUTTONS + +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_UNFINISHPAGE_NOAUTOCLOSE + +######################################################################################### +# Installer pages +######################################################################################### +# Variables +Var StartMenuGroup + +;Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT HKCU +!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY} +!define MUI_LANGDLL_REGISTRY_VALUENAME "InstallerLanguage" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE ${top_srcdir}\COPYING +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +# Installer languages +!insertmacro MUI_LANGUAGE "English" ;first language is the default language + +!ifndef _DEBUG ; Skip other languages when building debug builds +;!insertmacro MUI_LANGUAGE "Afrikaans" +;!insertmacro MUI_LANGUAGE "Albanian" +;!insertmacro MUI_LANGUAGE "Arabic" +;!insertmacro MUI_LANGUAGE "Belarusian" +;!insertmacro MUI_LANGUAGE "Bosnian" +;!insertmacro MUI_LANGUAGE "Breton" +;!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Catalan" +;!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Danish" +;!insertmacro MUI_LANGUAGE "Dutch" +;!insertmacro MUI_LANGUAGE "Esperanto" +;!insertmacro MUI_LANGUAGE "Estonian" +;!insertmacro MUI_LANGUAGE "Farsi" +;!insertmacro MUI_LANGUAGE "Finnish" +!insertmacro MUI_LANGUAGE "French" +;!insertmacro MUI_LANGUAGE "Galician" +!insertmacro MUI_LANGUAGE "German" +;!insertmacro MUI_LANGUAGE "Greek" +;!insertmacro MUI_LANGUAGE "Hebrew" +!insertmacro MUI_LANGUAGE "Hungarian" +;!insertmacro MUI_LANGUAGE "Icelandic" +;!insertmacro MUI_LANGUAGE "Indonesian" +;!insertmacro MUI_LANGUAGE "Irish" +!insertmacro MUI_LANGUAGE "Italian" +;!insertmacro MUI_LANGUAGE "Japanese" +;!insertmacro MUI_LANGUAGE "Korean" +;!insertmacro MUI_LANGUAGE "Kurdish" +;!insertmacro MUI_LANGUAGE "Latvian" +;!insertmacro MUI_LANGUAGE "Lithuanian" +;!insertmacro MUI_LANGUAGE "Luxembourgish" +;!insertmacro MUI_LANGUAGE "Macedonian" +;!insertmacro MUI_LANGUAGE "Malay" +;!insertmacro MUI_LANGUAGE "Mongolian" +!insertmacro MUI_LANGUAGE "Norwegian" +!insertmacro MUI_LANGUAGE "NorwegianNynorsk" +!insertmacro MUI_LANGUAGE "Polish" +;!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "PortugueseBR" +;!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Russian" +;!insertmacro MUI_LANGUAGE "Serbian" +;!insertmacro MUI_LANGUAGE "SerbianLatin" +;!insertmacro MUI_LANGUAGE "SimpChinese" +;!insertmacro MUI_LANGUAGE "Slovak" +;!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Spanish" +;!insertmacro MUI_LANGUAGE "SpanishInternational" +!insertmacro MUI_LANGUAGE "Swedish" +;!insertmacro MUI_LANGUAGE "Thai" +;!insertmacro MUI_LANGUAGE "TradChinese" +;!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Ukrainian" +;!insertmacro MUI_LANGUAGE "Uzbek" +!endif + +;Reserve Files (will make sure the file will be stored first in the data block +; making the installer start faster when compressing in solid mode) +!insertmacro MUI_RESERVEFILE_LANGDLL + +######################################################################################### +# Installer sections +######################################################################################### +Section "ScummVM" SecMain + SetOutPath $INSTDIR + SetOverwrite on + + # Text files + File /oname=AUTHORS.txt "${text_dir}\AUTHORS" + File /oname=COPYING.LGPL.txt "${text_dir}\COPYING.LGPL" + File /oname=COPYING.txt "${text_dir}\COPYING" + File /oname=COPYRIGHT.txt "${text_dir}\COPYRIGHT" + File /oname=NEWS.txt "${text_dir}\NEWS" + File /oname=README.txt "${text_dir}\README" + File /oname=README-SDL.txt "${build_dir}\README-SDL" + + # Engine data + File "${engine_data}\drascula.dat" + File "${engine_data}\hugo.dat" + File "${engine_data}\kyra.dat" + File "${engine_data}\lure.dat" + File "${engine_data}\m4.dat" + File "${engine_data}\queen.tbl" + File "${engine_data}\sky.cpt" + File "${engine_data}\teenagent.dat" + File "${engine_data}\toon.dat" + + File "${top_srcdir}\dists\pred.dic" + + # Themes + File "${theme_data}\scummclassic.zip" + File "${theme_data}\scummmodern.zip" + File "${theme_data}\translations.dat" + + # Main exe and dlls + File "${build_dir}\scummvm.exe" + File "${build_dir}\SDL.dll" + + WriteRegStr HKCU "${REGKEY}" InstallPath "$INSTDIR" ; Store installation folder +SectionEnd + +# Write Start menu entries and uninstaller +Section -post SecMainPost + SetOutPath $INSTDIR + WriteUninstaller $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + SetShellVarContext all ; Create shortcuts in the all-users folder + CreateDirectory "$SMPROGRAMS\$StartMenuGroup" + CreateShortCut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\$(^Name).exe "" "$INSTDIR\$(^Name).exe" 0 ; Create shortcut with icon + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Readme.lnk" $INSTDIR\README.txt + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_END + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" InstallLocation $INSTDIR + WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 + WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 +SectionEnd + +# Installer functions +Function .onInit + !insertmacro MUI_LANGDLL_DISPLAY + +!ifdef _DEBUG && NSIS_CONFIG_LOG + LogSet on ; Will write a log file to the install folder (when using the special NSIS logging build) +!endif +FunctionEnd + +######################################################################################### +# Uninstaller sections +######################################################################################### +Section -un.Main SecUninstall + Delete /REBOOTOK $INSTDIR\AUTHORS.txt + Delete /REBOOTOK $INSTDIR\COPYING.txt + Delete /REBOOTOK $INSTDIR\COPYING.LGPL.txt + Delete /REBOOTOK $INSTDIR\COPYRIGHT.txt + Delete /REBOOTOK $INSTDIR\NEWS.txt + Delete /REBOOTOK $INSTDIR\README.txt + Delete /REBOOTOK $INSTDIR\README-SDL.txt + + Delete /REBOOTOK $INSTDIR\drascula.dat + Delete /REBOOTOK $INSTDIR\hugo.dat + Delete /REBOOTOK $INSTDIR\kyra.dat + Delete /REBOOTOK $INSTDIR\lure.dat + Delete /REBOOTOK $INSTDIR\m4.dat + Delete /REBOOTOK $INSTDIR\queen.tbl + Delete /REBOOTOK $INSTDIR\sky.cpt + Delete /REBOOTOK $INSTDIR\teenagent.dat + Delete /REBOOTOK $INSTDIR\toon.dat + + Delete /REBOOTOK $INSTDIR\pred.dic + + Delete /REBOOTOK $INSTDIR\scummclassic.zip + Delete /REBOOTOK $INSTDIR\scummmodern.zip + Delete /REBOOTOK $INSTDIR\translations.dat + + Delete /REBOOTOK $INSTDIR\scummvm.exe + Delete /REBOOTOK $INSTDIR\SDL.dll +SectionEnd + +Section -un.post SecUninstallPost + # Remove start menu entries + SetShellVarContext all + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Readme.lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" + RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup + + Delete /REBOOTOK $INSTDIR\uninstall.exe + + DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" + DeleteRegValue HKCU "${REGKEY}" StartMenuGroup + DeleteRegValue HKCU "${REGKEY}" InstallPath + DeleteRegValue HKCU "${REGKEY}" InstallerLanguage + DeleteRegKey /IfEmpty HKCU "${REGKEY}" + + RmDir $INSTDIR ; will only remove if empty (pass /r flag for recursive behavior) + Push $R0 + StrCpy $R0 $StartMenuGroup 1 + StrCmp $R0 ">" no_smgroup +no_smgroup: + Pop $R0 +SectionEnd + +# Uninstaller functions +Function un.onInit + !insertmacro MUI_UNGETLANGUAGE + ReadRegStr $INSTDIR HKCU "${REGKEY}" InstallPath + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup +FunctionEnd diff --git a/dists/nsis/scummvm.nsi.in b/dists/nsis/scummvm.nsi.in new file mode 100644 index 0000000000..4238e15f0c --- /dev/null +++ b/dists/nsis/scummvm.nsi.in @@ -0,0 +1,327 @@ +# ScummVM - Graphic Adventure Engine +# +# ScummVM is the legal property of its developers, whose names +# are too numerous to list here. Please refer to the COPYRIGHT +# file distributed with this source distribution. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +#!define _DEBUG + +Name ScummVM + +# Included files +!include MUI2.nsh + +######################################################################################### +# Folders +######################################################################################### +#!define top_srcdir "" ; passed through command line +#!define build_dir "" ; passed through command line +#!define text_dir "" ; passed through command line +!define engine_data "${top_srcdir}\dists\engine-data" +!define theme_data "${top_srcdir}\gui\themes" + +######################################################################################### +# General Symbol Definitions +######################################################################################### +!define REGKEY "Software\$(^Name)\$(^Name)" +!define VERSION "@VERSION@" +!define COMPANY "ScummVM Team" +!define URL "http://scummvm.org/" +!define DESCRIPTION "ScummVM Installer. Look! A three headed monkey (TM)!" +!define COPYRIGHT "Copyright © 2001-2011 The ScummVM Team" + +######################################################################################### +# Installer configuration +######################################################################################### +OutFile ${build_dir}\scummvm-${VERSION}-win32.exe +InstallDir $PROGRAMFILES\ScummVM ; Default installation folder +InstallDirRegKey HKCU "Software\ScummVM\ScummVM" "InstallPath" ; Get installation folder from registry if available + ; The application name needs to be refered directly instead of through ${REGKEY} + ; because lang strings aren't initialized at the point InstallDirRegKey is called + +CRCCheck on +XPStyle on +#TargetMinimalOS 5.0 ; Minimal version of windows for installer: Windows 2000 or more recent + ; (will build unicode installer with NSIS 2.50+) + +VIProductVersion @VER_MAJOR@.@VER_MINOR@.@VER_PATCH@.0 +VIAddVersionKey ProductName $(^Name) +VIAddVersionKey ProductVersion "${VERSION}" +VIAddVersionKey CompanyName "${COMPANY}" +VIAddVersionKey CompanyWebsite "${URL}" +VIAddVersionKey FileVersion "${VERSION}" +VIAddVersionKey FileDescription "${DESCRIPTION}" +VIAddVersionKey LegalCopyright "${COPYRIGHT}" + +BrandingText "$(^Name) ${VERSION}" ; Change branding text on the installer to show our name and version instead of NSIS's + +# Show Details when installing/uninstalling files +ShowInstDetails show +ShowUninstDetails show + +!ifdef _DEBUG + SetCompress off ; for debugging the installer, lzma takes forever + RequestExecutionLevel user +!else + SetCompressor /FINAL /SOLID lzma + SetCompressorDictSize 64 + RequestExecutionLevel admin ; for installation into program files folders +!endif + +######################################################################################### +# MUI Symbol Definitions +######################################################################################### +!define MUI_WELCOMEFINISHPAGE_BITMAP "graphics\left.bmp" +!define MUI_ICON "graphics\scummvm-install.ico" +!define MUI_UNICON "graphics\scummvm-install.ico" + +#Start menu +!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKCU +!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup +!define MUI_STARTMENUPAGE_DEFAULTFOLDER $(^Name) + +# Finish page +!define MUI_FINISHPAGE_RUN "$INSTDIR\scummvm.exe" +!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" +!define MUI_FINISHPAGE_RUN_NOTCHECKED +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + +!define MUI_LICENSEPAGE_RADIOBUTTONS + +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_UNFINISHPAGE_NOAUTOCLOSE + +######################################################################################### +# Installer pages +######################################################################################### +# Variables +Var StartMenuGroup + +;Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT HKCU +!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY} +!define MUI_LANGDLL_REGISTRY_VALUENAME "InstallerLanguage" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE ${top_srcdir}\COPYING +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +# Installer languages +!insertmacro MUI_LANGUAGE "English" ;first language is the default language + +!ifndef _DEBUG ; Skip other languages when building debug builds +;!insertmacro MUI_LANGUAGE "Afrikaans" +;!insertmacro MUI_LANGUAGE "Albanian" +;!insertmacro MUI_LANGUAGE "Arabic" +;!insertmacro MUI_LANGUAGE "Belarusian" +;!insertmacro MUI_LANGUAGE "Bosnian" +;!insertmacro MUI_LANGUAGE "Breton" +;!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Catalan" +;!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Danish" +;!insertmacro MUI_LANGUAGE "Dutch" +;!insertmacro MUI_LANGUAGE "Esperanto" +;!insertmacro MUI_LANGUAGE "Estonian" +;!insertmacro MUI_LANGUAGE "Farsi" +;!insertmacro MUI_LANGUAGE "Finnish" +!insertmacro MUI_LANGUAGE "French" +;!insertmacro MUI_LANGUAGE "Galician" +!insertmacro MUI_LANGUAGE "German" +;!insertmacro MUI_LANGUAGE "Greek" +;!insertmacro MUI_LANGUAGE "Hebrew" +!insertmacro MUI_LANGUAGE "Hungarian" +;!insertmacro MUI_LANGUAGE "Icelandic" +;!insertmacro MUI_LANGUAGE "Indonesian" +;!insertmacro MUI_LANGUAGE "Irish" +!insertmacro MUI_LANGUAGE "Italian" +;!insertmacro MUI_LANGUAGE "Japanese" +;!insertmacro MUI_LANGUAGE "Korean" +;!insertmacro MUI_LANGUAGE "Kurdish" +;!insertmacro MUI_LANGUAGE "Latvian" +;!insertmacro MUI_LANGUAGE "Lithuanian" +;!insertmacro MUI_LANGUAGE "Luxembourgish" +;!insertmacro MUI_LANGUAGE "Macedonian" +;!insertmacro MUI_LANGUAGE "Malay" +;!insertmacro MUI_LANGUAGE "Mongolian" +!insertmacro MUI_LANGUAGE "Norwegian" +!insertmacro MUI_LANGUAGE "NorwegianNynorsk" +!insertmacro MUI_LANGUAGE "Polish" +;!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "PortugueseBR" +;!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Russian" +;!insertmacro MUI_LANGUAGE "Serbian" +;!insertmacro MUI_LANGUAGE "SerbianLatin" +;!insertmacro MUI_LANGUAGE "SimpChinese" +;!insertmacro MUI_LANGUAGE "Slovak" +;!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Spanish" +;!insertmacro MUI_LANGUAGE "SpanishInternational" +!insertmacro MUI_LANGUAGE "Swedish" +;!insertmacro MUI_LANGUAGE "Thai" +;!insertmacro MUI_LANGUAGE "TradChinese" +;!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Ukrainian" +;!insertmacro MUI_LANGUAGE "Uzbek" +!endif + +;Reserve Files (will make sure the file will be stored first in the data block +; making the installer start faster when compressing in solid mode) +!insertmacro MUI_RESERVEFILE_LANGDLL + +######################################################################################### +# Installer sections +######################################################################################### +Section "ScummVM" SecMain + SetOutPath $INSTDIR + SetOverwrite on + + # Text files + File /oname=AUTHORS.txt "${text_dir}\AUTHORS" + File /oname=COPYING.LGPL.txt "${text_dir}\COPYING.LGPL" + File /oname=COPYING.txt "${text_dir}\COPYING" + File /oname=COPYRIGHT.txt "${text_dir}\COPYRIGHT" + File /oname=NEWS.txt "${text_dir}\NEWS" + File /oname=README.txt "${text_dir}\README" + File /oname=README-SDL.txt "${build_dir}\README-SDL" + + # Engine data + File "${engine_data}\drascula.dat" + File "${engine_data}\hugo.dat" + File "${engine_data}\kyra.dat" + File "${engine_data}\lure.dat" + File "${engine_data}\m4.dat" + File "${engine_data}\queen.tbl" + File "${engine_data}\sky.cpt" + File "${engine_data}\teenagent.dat" + File "${engine_data}\toon.dat" + + File "${top_srcdir}\dists\pred.dic" + + # Themes + File "${theme_data}\scummclassic.zip" + File "${theme_data}\scummmodern.zip" + File "${theme_data}\translations.dat" + + # Main exe and dlls + File "${build_dir}\scummvm.exe" + File "${build_dir}\SDL.dll" + + WriteRegStr HKCU "${REGKEY}" InstallPath "$INSTDIR" ; Store installation folder +SectionEnd + +# Write Start menu entries and uninstaller +Section -post SecMainPost + SetOutPath $INSTDIR + WriteUninstaller $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + SetShellVarContext all ; Create shortcuts in the all-users folder + CreateDirectory "$SMPROGRAMS\$StartMenuGroup" + CreateShortCut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\$(^Name).exe "" "$INSTDIR\$(^Name).exe" 0 ; Create shortcut with icon + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Readme.lnk" $INSTDIR\README.txt + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_END + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe + WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" InstallLocation $INSTDIR + WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 + WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 +SectionEnd + +# Installer functions +Function .onInit + !insertmacro MUI_LANGDLL_DISPLAY + +!ifdef _DEBUG && NSIS_CONFIG_LOG + LogSet on ; Will write a log file to the install folder (when using the special NSIS logging build) +!endif +FunctionEnd + +######################################################################################### +# Uninstaller sections +######################################################################################### +Section -un.Main SecUninstall + Delete /REBOOTOK $INSTDIR\AUTHORS.txt + Delete /REBOOTOK $INSTDIR\COPYING.txt + Delete /REBOOTOK $INSTDIR\COPYING.LGPL.txt + Delete /REBOOTOK $INSTDIR\COPYRIGHT.txt + Delete /REBOOTOK $INSTDIR\NEWS.txt + Delete /REBOOTOK $INSTDIR\README.txt + Delete /REBOOTOK $INSTDIR\README-SDL.txt + + Delete /REBOOTOK $INSTDIR\drascula.dat + Delete /REBOOTOK $INSTDIR\hugo.dat + Delete /REBOOTOK $INSTDIR\kyra.dat + Delete /REBOOTOK $INSTDIR\lure.dat + Delete /REBOOTOK $INSTDIR\m4.dat + Delete /REBOOTOK $INSTDIR\queen.tbl + Delete /REBOOTOK $INSTDIR\sky.cpt + Delete /REBOOTOK $INSTDIR\teenagent.dat + Delete /REBOOTOK $INSTDIR\toon.dat + + Delete /REBOOTOK $INSTDIR\pred.dic + + Delete /REBOOTOK $INSTDIR\scummclassic.zip + Delete /REBOOTOK $INSTDIR\scummmodern.zip + Delete /REBOOTOK $INSTDIR\translations.dat + + Delete /REBOOTOK $INSTDIR\scummvm.exe + Delete /REBOOTOK $INSTDIR\SDL.dll +SectionEnd + +Section -un.post SecUninstallPost + # Remove start menu entries + SetShellVarContext all + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Readme.lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" + RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup + + Delete /REBOOTOK $INSTDIR\uninstall.exe + + DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" + DeleteRegValue HKCU "${REGKEY}" StartMenuGroup + DeleteRegValue HKCU "${REGKEY}" InstallPath + DeleteRegValue HKCU "${REGKEY}" InstallerLanguage + DeleteRegKey /IfEmpty HKCU "${REGKEY}" + + RmDir $INSTDIR ; will only remove if empty (pass /r flag for recursive behavior) + Push $R0 + StrCpy $R0 $StartMenuGroup 1 + StrCmp $R0 ">" no_smgroup +no_smgroup: + Pop $R0 +SectionEnd + +# Uninstaller functions +Function un.onInit + !insertmacro MUI_UNGETLANGUAGE + ReadRegStr $INSTDIR HKCU "${REGKEY}" InstallPath + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup +FunctionEnd @@ -182,7 +182,20 @@ endif cp /usr/local/bin/SDL.dll $(WIN32PATH) cp $(srcdir)/icons/scummvm.ico $(WIN32PATH) cp $(srcdir)/dists/win32/ScummVM.iss $(WIN32PATH) - u2d $(WIN32PATH)/*.txt + unix2dos $(WIN32PATH)/*.txt + +# Special target to create a win32 installer +# (extensions for text files are removed, as they are read +# as-is by the setup script and renamed there) +win32setup: win32dist + mv $(WIN32PATH)/AUTHORS.txt $(WIN32PATH)/AUTHORS + mv $(WIN32PATH)/COPYING.txt $(WIN32PATH)/COPYING + mv $(WIN32PATH)/COPYING.LGPL.txt $(WIN32PATH)/COPYING.LGPL + mv $(WIN32PATH)/COPYRIGHT.txt $(WIN32PATH)/COPYRIGHT + mv $(WIN32PATH)/NEWS.txt $(WIN32PATH)/NEWS + mv $(WIN32PATH)/README.txt $(WIN32PATH)/README + mv $(WIN32PATH)/README-SDL.txt $(WIN32PATH)/README-SDL + makensis -V2 -Dtop_srcdir="../../$(srcdir)" -Dtext_dir="../../$(WIN32PATH)" -Dbuild_dir="../../$(WIN32PATH)" $(srcdir)/dists/nsis/scummvm.nsi # # AmigaOS specific |