Mercurial > parpg-core
view nsis/setup.nsi @ 149:eab3e1e52497
Modified EquipmentSlot to display an image instead of a text.
Added EquipmentGui class, which handles the equipment slots of the player screen.
An EquipmentGui instance will be created in the InventoryGUI constructor.
The initializeInventory method of the Hud class supplies the players inventory and equipment to the InventoryGUI constructor.
author | KarstenBock@gmx.net |
---|---|
date | Wed, 05 Oct 2011 11:04:39 +0200 |
parents | 1fd2201f5c36 |
children |
line wrap: on
line source
############################################################### #NSIS script for PARPG # # Non standard plugins # # ZipDLL : http://nsis.sourceforge.net/ZipDLL_plug-in # Please note the install instructions # # Advanced Uninstall Log 2 # Header for that is in the same directory as this script - AdvUninstLog2.nsh # # Python module installer # Header for that is in the same directory as this script - python-module.nsh # !define PRODUCT_NAME "PARPG Techdemo 2" !define PRODUCT_VERSION "SVN trunk r788" !define PRODUCT_PUBLISHER "PARPG Development Team" !define PRODUCT_WEB_SITE "http://www.parpg.net/" !define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define INSTDIR_REG_ROOT "HKLM" !define PARPG_DIR "game" !define EXEC_SCRIPT_NAME "parpg-run.py" # MUI 1.67 compatible ------ !include "MUI2.nsh" !include "AdvUninstLog2.nsh" !include "python-module.nsh" !include "download_mirror.nsh" # MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${PARPG_DIR}\gui\icons\window_icon.ico" !define MUI_UNICON "${PARPG_DIR}\gui\icons\window_icon.ico" # Welcome page !insertmacro MUI_PAGE_WELCOME !define MUI_PAGE_CUSTOMFUNCTION_PRE SelectFilesCheck !insertmacro MUI_PAGE_COMPONENTS # License page !insertmacro MUI_PAGE_LICENSE "${PARPG_DIR}\license\gpl30.license" # Instfiles page Externals !define MUI_PAGE_CUSTOMFUNCTION_PRE SelectFilesExternals !insertmacro MUI_PAGE_INSTFILES # Directory page PARPG !define MUI_PAGE_CUSTOMFUNCTION_PRE SelectFilesPARPG !insertmacro MUI_PAGE_DIRECTORY !insertmacro PAGE_PYTHON_MODULE # Instfiles page PARPG !insertmacro MUI_PAGE_INSTFILES # Finish page !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" !define MUI_PAGE_CUSTOMFUNCTION_LEAVE DeleteSectionsINI !insertmacro MUI_PAGE_FINISH # Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES # Language files !insertmacro MUI_LANGUAGE "English" # ZipFile Support !include "ZipDLL.nsh" # MUI end ------ RequestExecutionLevel admin #For Vista. Admin is needed to install in program files directory Name "${PRODUCT_NAME}" OutFile "parpg_td2_r877_win32.exe" InstallDir "$PROGRAMFILES\PARPG" ShowInstDetails show ShowUnInstDetails show !insertmacro UNATTENDED_UNINSTALL #Externals, at least Python, have to be installed first SectionGroup Externals Externals #---------- DOWNLOAD PYTHON ------- Section "ActivePython (required)" Python DetailPrint "Downloading Python" NSISdl::download http://downloads.activestate.com/ActivePython/releases/2.7.1.4/ActivePython-2.7.1.4-win32-x86.msi $TEMP\pysetup.msi Pop $R0 #Get the return value StrCmp $R0 "success" +3 MessageBox MB_OK "Failed to download Python installer: $R0" Quit DetailPrint "Installing Python" ExecWait '"msiexec" /i "$TEMP\pysetup.msi"' DetailPrint "Deleting Python installer" Delete $TEMP\pysetup.msi SectionEnd #------------ PyYAML -------------- Section "PyYAML (required)" PyYAML DetailPrint "Downloading PyYAML" NSISdl::download http://pyyaml.org/download/pyyaml/PyYAML-3.09.win32-py2.7.exe $TEMP\pyaml_setup.exe Pop $R0 #Get the return value StrCmp $R0 "success" +3 MessageBox MB_OK "Failed to download PyYAML installer: $R0" Quit DetailPrint "Installing PyYAML" ExecWait "$TEMP\pyaml_setup.exe" DetailPrint "Deleting PyYAML installer" Delete "$TEMP\PyYAML_setup.exe" SectionEnd #----------- OPEN AL -------------- Section "OpenAL (required)" OpenAL SetDetailsPrint textonly NSISdl::download http://connect.creativelabs.com/openal/Downloads/oalinst.zip $TEMP\oalinst.zip DetailPrint "Extracting OpenAL archive" !insertmacro ZIPDLL_EXTRACT $TEMP\oalinst.zip $TEMP oalinst.exe DetailPrint "Installing OpenAL" ExecWait "$TEMP\oalinst.exe" DetailPrint "Deleting OpenAL installer" Delete "$TEMP\oalinst.exe" Delete "$TEMP\oalinst.zip" SectionEnd Section "FIFE (required)" FIFE DetailPrint "Downloading FIFE installer" Push "http://puzzle.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://mesh.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://aarnet.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://cdnetworks-us-1.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://ovh.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://ignum.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://tenet.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://jaist.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://garr.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push "http://cdnetworks-kr-2.dl.sourceforge.net/project/fife/active/packages/FIFE-0.3.2r2_installer_win32.exe" Push 10 Push "$TEMP\FIFE-0.3.2r2_installer_win32.exe" Call DownloadFromRandomMirror Pop $0 StrCmp $0 "cancel" 0 +3 MessageBox MB_OK "Download canceled" Goto End StrCmp $0 "success" 0 +3 DetailPrint "Installing FIFE" ExecWait "$TEMP\FIFE-0.3.2r2_installer_win32.exe" Goto End MessageBox MB_OK "Error $0" End: DetailPrint "Deleting FIFE Installer" Delete "$TEMP\FIFE-0.3.2r2_installer_win32.exe" SectionEnd #--------- SECTION END ------------ SectionGroupEnd SectionGroup PARPG PARPG Section "PARPG Module" PARPG-module SectionIn RO DetailPrint "Installing PARPG python package" SetOutPath "$PythonPath\lib\site-packages" SetOverwrite try FILE /r /x *svn* "${PARPG_DIR}\parpg" SetAutoClose true SectionEnd #------------ Main. Packages PARPG code -------------- Section "PARPG Datafiles" PARPG-data SectionIn RO SetOverwrite try # get all the core PARPG files SetOutPath "$INSTDIR\dialogue" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\dialogue\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\fonts" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\fonts\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\gui" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\gui\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\maps" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\maps\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\music" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\music\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\objects" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\objects\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\quests" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\quests\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\character_scripts" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\character_scripts\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR\license" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE /r /x *svn* "${PARPG_DIR}\license\" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetOutPath "$INSTDIR" !insertmacro UNINSTALL.LOG_OPEN_INSTALL FILE "${PARPG_DIR}\README" FILE "${PARPG_DIR}\AUTHORS" FILE "${PARPG_DIR}\run.py" FILE "${PARPG_DIR}\system.cfg" RENAME "README" "README.txt" RENAME "AUTHORS" "AUTHORS.txt" RENAME "run.py" "${EXEC_SCRIPT_NAME}" !insertmacro UNINSTALL.LOG_CLOSE_INSTALL SetAutoClose true SectionEnd # Tools not included as they aren't ready for distribution #Section -Tools #SetOutPath "$INSTDIR\tools\map_editor" #SetOverwrite try #SectionEnd Section "-Additional" -AdditionalIcons SectionIn RO #avoid shortcuts headaches on vista by doing everything in the all users start menu SetShellVarContext all SetOutPath $INSTDIR WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortcut '$SMPROGRAMS\${PRODUCT_NAME}\uninstall.lnk' '${UNINST_EXE}' SetOutPath "$INSTDIR" #this makes the following shortcut run in the installed directory CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\PARPG.lnk" "$INSTDIR\${EXEC_SCRIPT_NAME}" SectionEnd Section "-Post" -Post SectionIn RO WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "UninstallString" "${UNINST_EXE}" WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "DisplayIcon" "$INSTDIR\gui\icons\window_icon.ico" WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd SectionGroupEnd ##=========================================================================== ## Settings ##=========================================================================== !define PARPG_StartIndex ${PARPG} !define PARPG_EndIndex ${-Post} !define EXT_StartIndex ${Externals} !define EXT_EndIndex ${Fife} Function .OnInit !insertmacro UNINSTALL.LOG_PREPARE_INSTALL !insertmacro SetSectionFlag ${PARPG} ${SF_RO} StrCpy $PythonPath "" StrCpy $PythonVer "Custom" InitPluginsDir FunctionEnd ## If user goes back to this page from 1st Directory page ## we need to put the sections back to how they were before Var IfBack Function SelectFilesCheck StrCmp $IfBack 1 0 NoCheck Call ResetFiles NoCheck: FunctionEnd Function IsExternalsSelected Push $R0 Push $R1 StrCpy $R0 ${EXT_StartIndex} # Group 2 start Loop: IntOp $R0 $R0 + 1 SectionGetFlags $R0 $R1 # Get section flags IntOp $R1 $R1 & ${SF_SELECTED} StrCmp $R1 ${SF_SELECTED} 0 +3 # If section is selected, done StrCpy $R0 1 Goto Done StrCmp $R0 ${EXT_EndIndex} 0 Loop Done: Pop $R1 Exch $R0 FunctionEnd ## Here we are selecting first sections to install ## by unselecting all the others! Function SelectFilesExternals # If user clicks Back now, we will know to reselect Group 2's sections for # Components page StrCpy $IfBack 1 # We need to save the state of the Group 2 Sections # for the next InstFiles page Push $R0 Push $R1 StrCpy $R0 ${PARPG_StartIndex} # Group 2 start Loop: IntOp $R0 $R0 + 1 SectionGetFlags $R0 $R1 # Get section flags WriteINIStr "$PLUGINSDIR\sections.ini" Sections $R0 $R1 # Save state !insertmacro UnselectSection $R0 # Then unselect it StrCmp $R0 ${PARPG_EndIndex} 0 Loop # Don't install prog 1? Call IsExternalsSelected Pop $R0 StrCmp $R0 1 +4 Pop $R1 Pop $R0 Abort Pop $R1 Pop $R0 FunctionEnd ## Here we need to unselect all Group 1 sections ## and then re-select those in Group 2 (that the user had selected on ## Components page) Function SelectFilesPARPG Push $R0 Push $R1 StrCpy $R0 ${EXT_StartIndex} # Group 1 start Loop: IntOp $R0 $R0 + 1 !insertmacro UnselectSection $R0 # Unselect it StrCmp $R0 ${EXT_EndIndex} 0 Loop Call ResetFiles Pop $R1 Pop $R0 FunctionEnd ## This will set all sections to how they were on the components page ## originally Function ResetFiles Push $R0 Push $R1 StrCpy $R0 ${PARPG_StartIndex} # Group 2 start Loop: IntOp $R0 $R0 + 1 ReadINIStr "$R1" "$PLUGINSDIR\sections.ini" Sections $R0 # Get sec flags SectionSetFlags $R0 $R1 # Re-set flags for this sec StrCmp $R0 ${PARPG_EndIndex} 0 Loop Pop $R1 Pop $R0 FunctionEnd ## Here we are deleting the temp INI file at the end of installation Function DeleteSectionsINI FlushINI "$PLUGINSDIR\Sections.ini" Delete "$PLUGINSDIR\Sections.ini" FunctionEnd Function .onInstSuccess !insertmacro UNINSTALL.LOG_UPDATE_INSTALL FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Section Uninstall #avoid shortcuts headaches on vista by doing everything in the all users start menu SetShellVarContext all # remove data files !insertmacro UNINSTALL.NEW_UNINSTALL "$INSTDIR" Delete "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk" Delete "$SMPROGRAMS\${PRODUCT_NAME}\PARPG.lnk" Delete "$SMPROGRAMS\${PRODUCT_NAME}\uninstall.lnk" RmDir "$SMPROGRAMS\${PRODUCT_NAME}" Delete "$INSTDIR\*.log" Delete "$INSTDIR\system.cfg" Delete "$INSTDIR\${PRODUCT_NAME}.url" RMDir "$INSTDIR" # Remove shortcuts RMDir /r "$SMPROGRAMS\PARPG" # Remove Registry keys DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}" SetAutoClose true SectionEnd LangString DESC_PARPG ${LANG_ENGLISH} "PARPG - Techdemo 1 SVN r788" LangString DESC_Python ${LANG_ENGLISH} "ActivePython 2.6.4.8 - Required to run PARPG. Requires an active internet connection to install." LangString DESC_FIFE ${LANG_ENGLISH} "FIFE-0.3.2r2 - Required to run PARPG." LangString DESC_PyYAML ${LANG_ENGLISH} "PyYAML 3.09 - Required Python Module. Requires an active internet connection to install." LangString DESC_OpenAL ${LANG_ENGLISH} "OpenAL - Required for sound effects and music playback." !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${PARPG} $(DESC_PARPG) !insertmacro MUI_DESCRIPTION_TEXT ${Python} $(DESC_Python) !insertmacro MUI_DESCRIPTION_TEXT ${FIFE} $(DESC_FIFE) !insertmacro MUI_DESCRIPTION_TEXT ${PyYAML} $(DESC_PyYAML) !insertmacro MUI_DESCRIPTION_TEXT ${OpenAL} $(DESC_OpenAL) !insertmacro MUI_FUNCTION_DESCRIPTION_END