From a1ec191819ef1750f8974a1d849230788f45d323 Mon Sep 17 00:00:00 2001 From: beaglejoe Date: Mon, 18 Jul 2022 23:55:34 +0000 Subject: [PATCH] Add OPTION_ALL_IN_ONE_PACKAGING to make one big installer for Windows(off by default) git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@8322 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 582464d0e8cc5d0012201ef40649cc4d2d997787 Former-commit-id: 35e68c900e120d7990fa1cc0e84378e7e96d759e --- CMakeLists.txt | 11 +++++--- cmake/options.cmake | 2 ++ cmake/packagemaker.cmake | 55 +++++++++++++++++++++++++--------------- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index db90bb2d..413d1bf9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,15 +235,18 @@ IF(OPTION_CHECK_CONTENTS) INCLUDE(cmake/prerelease.cmake) ENDIF(OPTION_CHECK_CONTENTS) -IF(OPTION_PACKAGING) +IF(OPTION_PACKAGING OR OPTION_ALL_IN_ONE_PACKAGING) INCLUDE(cmake/packagemaker.cmake) +ENDIF(OPTION_PACKAGING OR OPTION_ALL_IN_ONE_PACKAGING) +IF(OPTION_PACKAGING) IF(MSVC) INCLUDE(cmake/packagemaker-nsis.cmake) ENDIF(MSVC) IF(APPLE) INCLUDE(cmake/packagemaker-dmg.cmake) ENDIF(APPLE) -ELSE(OPTION_PACKAGING) - # Configure CPack. - INCLUDE(CPack) ENDIF(OPTION_PACKAGING) + +IF(OPTION_ALL_IN_ONE_PACKAGING) + INCLUDE(CPack) +ENDIF(OPTION_ALL_IN_ONE_PACKAGING) diff --git a/cmake/options.cmake b/cmake/options.cmake index 497a6a7f..6abc82a3 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -86,6 +86,8 @@ MACRO(ADD_SD_COMPILE_OPTIONS) SET(OPTION_PACKAGING true CACHE BOOL "Enable Packaging for distribution") + SET(OPTION_ALL_IN_ONE_PACKAGING false CACHE BOOL "Enable CPack's monolithic PACKAGE") + SET(OPTION_TRACKEDITOR true CACHE BOOL "Build the TrackEditor (Requires Java)") IF(APPLE) diff --git a/cmake/packagemaker.cmake b/cmake/packagemaker.cmake index d7656fdb..63316d73 100644 --- a/cmake/packagemaker.cmake +++ b/cmake/packagemaker.cmake @@ -12,7 +12,7 @@ ENDIF() SET(INTERNAL_NAME "speed-dreams") SET(CPACK_PACKAGE_NAME "Speed Dreams") -SET(CPACK_PACKAGE_VENDOR "the Speed Dreams team") +SET(CPACK_PACKAGE_VENDOR "The Speed Dreams team") SET(CPACK_PACKAGE_CONTACT "http:\\\\\\\\www.speed-dreams.org") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Speed Dreams (an Open Motorsport Sim) is a racing simulation that allows you to drive in races against opponents simulated by the computer ; it is GPL 2+ and has been forked from TORCS in late 2008") SET(CPACK_RESOURCE_FILE_LICENSE "${SOURCE_DIR}/COPYING.txt") @@ -23,16 +23,16 @@ SET(CPACK_PACKAGE_EXECUTABLES "${EXECUTABLE_NAME};Start ${CPACK_PACKAGE_NAME}") # Version settings. # * the short way. -SET(CPACK_PACKAGE_VERSION "${VERSION_LONG}") +#SET(CPACK_PACKAGE_VERSION "${VERSION_LONG}") # * another way. -#SET(CPACK_PACKAGE_VERSION_MAJOR "2") -#SET(CPACK_PACKAGE_VERSION_MINOR "0") -#SET(CPACK_PACKAGE_VERSION_PATCH "0") -#SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-alpha") -#IF(NOT SVN_FIND_REV_FAILED) -# SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}-r${SVN_REV}") -#ENDIF(NOT SVN_FIND_REV_FAILED) +SET(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +SET(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +SET(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}${PROJECT_VERSION_METADATA}") +IF(NOT SVN_FIND_REV_FAILED) + SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}-r${SVN_REV}") +ENDIF(NOT SVN_FIND_REV_FAILED) # Binary package settings. SET(PACKAGE_FILE_PREFIX "${INTERNAL_NAME}") @@ -87,7 +87,9 @@ IF(WIN32) # General note: There is a bug in NSI that does not handle full unix paths properly. # Make sure there is at least one set of four (4) backlasshes. - SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${INTERNAL_NAME}-${VERSION_LONG}") + SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL True) + + SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${INTERNAL_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}${PROJECT_VERSION_METADATA}") SET(EXECUTABLE_PATHNAME "$INSTDIR\\\\bin\\\\${EXECUTABLE_NAME}.exe") @@ -97,12 +99,13 @@ IF(WIN32) MARK_AS_ADVANCED(PACKAGERS_SOURCE) SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_PREFIX}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}-setup") - SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}") - SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_NSIS_DISPLAY_NAME}") + SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}${PROJECT_VERSION_METADATA}") + SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}") + #SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") # Icon for the generated installer/uninstaller files. SET(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}\\\\data\\\\data\\\\icons\\\\icon.ico") - #SET(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}\\\\data\\\\data\\\\icons\\\\icon.ico") + SET(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}\\\\data\\\\data\\\\icons\\\\icon.ico") SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}\\\\data\\\\data\\\\img\\\\header.bmp) # Extra shortcuts to add in the start menu (a list of pairs : URL, Menu label). @@ -110,9 +113,12 @@ IF(WIN32) "${CPACK_PACKAGE_CONTACT}" "Project Homepage") #"$INSTDIR\\\\share\\\\doc\\\\userman\\\\how_to_drive.html" "User manual") - # Icon in the add/remove control panel. Must be an .exe file + # Icon in the add/remove control panel. Must be an .exe file Set(CPACK_NSIS_INSTALLED_ICON_NAME "${EXECUTABLE_PATHNAME}") + # Executable to (optionally) run after install + SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "${EXECUTABLE_PATHNAME}") + SET(CPACK_NSIS_URL_INFO_ABOUT "${CPACK_PACKAGE_CONTACT}") SET(CPACK_NSIS_HELP_LINK "${CPACK_PACKAGE_CONTACT}") @@ -127,9 +133,18 @@ IF(WIN32) # But this works. SET(SHORTCUT_TARGET "$DESKTOP\\\\${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}.lnk") - SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS - "CreateShortCut \\\"${SHORTCUT_TARGET}\\\" \\\"${EXECUTABLE_PATHNAME}\\\"") - SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "Delete \\\"${SHORTCUT_TARGET}\\\"") + + SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " + CreateShortCut \\\"${SHORTCUT_TARGET}\\\" \\\"${EXECUTABLE_PATHNAME}\\\" + WriteRegStr HKLM 'Software\\\\${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'VersionExtra' '${PROJECT_VERSION_METADATA}' + WriteRegDWORD HKLM 'Software\\\\${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'VersionMajor' '${CPACK_PACKAGE_VERSION_MAJOR}' + WriteRegDWORD HKLM 'Software\\\\${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'VersionMinor' '${CPACK_PACKAGE_VERSION_MINOR}' + WriteRegDWORD HKLM 'Software\\\\${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'VersionPatch' '${CPACK_PACKAGE_VERSION_PATCH}' + ") + + SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " + Delete \\\"${SHORTCUT_TARGET}\\\" + ") # Source package specific settings. LIST(APPEND CPACK_SOURCE_IGNORE_FILES @@ -140,9 +155,9 @@ IF(WIN32) # Add the PACKAGE_SRC project in the MSVC solution # (CMake 2.6 and 2.8 fail to do this itself). - ADD_CUSTOM_TARGET(PACKAGE_SRC) - ADD_CUSTOM_COMMAND(TARGET PACKAGE_SRC - COMMAND ${CMAKE_CPACK_COMMAND} -C $(OutDir) --config ./CPackSourceConfig.cmake) + #ADD_CUSTOM_TARGET(PACKAGE_SRC) + #ADD_CUSTOM_COMMAND(TARGET PACKAGE_SRC + # COMMAND ${CMAKE_CPACK_COMMAND} -C $(OutDir) --config ./CPackSourceConfig.cmake) ENDIF(WIN32)