File CMakeLists.txt of Package mingw64-installer-base
cmake_minimum_required(VERSION 3.10)
project(${PACKAGE_NAME} NONE)
# settings required to add to cmake call
#set(PACKAGE_NAME "umbrello")
#set(PACKAGE_VENDOR "kde.org")
#set(PACKAGE_DISPLAY_NAME "Umbrello 2.17.0")
#set(PACKAGE_VERSION "2.17.0")
#set(PACKAGE_HELP_LINK "https://kmymoney.org/support.php")
#set(PACKAGE_URL_INFO "https://kmymoney.org")
#set(PACKAGE_INSTALL_DIR /usr/i686-w64-mingw32/sys-root/mingw/)
#set(PACKAGE_FINISH_RUN "kmymoney.exe")
#set(PACKAGE_INSTALLED_ICON_NAME "bin/${PACKAGE_FINISH_RUN}")
#set(PACKAGE_LICENSE_FILE /usr/share/doc/packages/mingw32-umbrello/COPYING)
#set(PACKAGE_LOCAL_INSTALL_DIR ...) set to dir from which local files are installed
#set(CPACK_GENERATOR NSIS;7Z)
#set(PACKAGE_REGISTER_EXTENSIONS ".kmy;.xml"
if(EXISTS ${PACKAGE_INSTALL_DIR}/bin/kdeinit4.exe)
set(PACKAGE_KDEINIT "bin/kdeinit4.exe")
elseif(EXISTS ${PACKAGE_INSTALL_DIR}/bin/kdeinit5.exe)
set(PACKAGE_KDEINIT "bin/kdeinit5.exe")
endif()
# local settings
#set(SIDEBAR_IMAGE "${CMAKE_SOURCE_DIR}/hisc-apps-umbrello-installer.bmp")
# install directory normally from system (read only) location
install(
DIRECTORY ${PACKAGE_INSTALL_DIR}
DESTINATION .
REGEX ".*var/lib/rpm-state$" EXCLUDE
REGEX ".*bin/lib$" EXCLUDE
REGEX ".*share/qt4/mkspecs.*" EXCLUDE
# exclude debug dirs
REGEX ".*src/" EXCLUDE
REGEX ".*symbols/" EXCLUDE
REGEX ".*.debug$" EXCLUDE
)
# install local dirs
if(PACKAGE_LOCAL_INSTALL_DIR)
install(
DIRECTORY ${PACKAGE_LOCAL_INSTALL_DIR}/
DESTINATION .
)
endif()
# remove empty dirs
install(CODE "execute_process(COMMAND find ${CPACK_TEMPORARY_INSTALL_DIRECTORY} -type d -empty -delete)")
# cpack settings
if(NOT CPACK_GENERATOR)
set(CPACK_GENERATOR NSIS;7Z)
endif()
set(CPACK_PACKAGE_NAME ${PACKAGE_NAME})
set(CPACK_PACKAGE_VENDOR ${PACKAGE_VENDOR})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PACKAGE_DESCRIPTION})
set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME})
set(CPACK_PACKAGE_FILE_NAME ${PACKAGE_NAME}-mingw64-${PACKAGE_VERSION})
set(CPACK_RESOURCE_FILE_LICENSE ${PACKAGE_LICENSE_FILE})
#cpack nsis settings
set(CPACK_NSIS_COMPRESSOR lzma)
SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
set(CPACK_NSIS_DISPLAY_NAME "${PACKAGE_DISPLAY_NAME}")
set(CPACK_NSIS_HELP_LINK "${PACKAGE_HELP_LINK}")
set(CPACK_NSIS_URL_INFO_ABOUT "${PACKAGE_URL_INFO}")
set(CPACK_NSIS_CONTACT "${PACKAGE_CONTACT}")
set(CPACK_NSIS_INSTALLED_ICON_NAME "${PACKAGE_INSTALLED_ICON_NAME}")
if(PACKAGE_FINISH_RUN)
set(CPACK_NSIS_MUI_FINISHPAGE_RUN ${PACKAGE_FINISH_RUN})
endif()
#set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
if(PACKAGE_INSTALLED_ICON_NAME)
list(APPEND CPACK_NSIS_MENU_LINKS ${PACKAGE_INSTALLED_ICON_NAME} "${PACKAGE_DISPLAY_NAME}")
endif()
if(PACKAGE_URL_INFO)
list(APPEND CPACK_NSIS_MENU_LINKS ${PACKAGE_URL_INFO} "${PACKAGE_NAME} Web Site")
endif()
# internal vars
set(QUOTE "\\\"")
set(INDENT " ")
set(NL "\r\n")
#set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${SIDEBAR_IMAGE}\\\"")
if(PACKAGE_KDEINIT)
# we need to stop kde background processes
list(APPEND EXTRA_PREINSTALL_COMMANDS "nsExec::Exec ${QUOTE}$INSTDIR/${PACKAGE_KDEINIT}${QUOTE} --terminate")
list(APPEND EXTRA_UNINSTALL_COMMANDS "nsExec::Exec ${QUOTE}$INSTDIR/${PACKAGE_KDEINIT}${QUOTE} --terminate")
endif()
# Include additional files
list(APPEND EXTRA_PREINSTALL_COMMANDS "!include FileAssociation.nsh")
foreach(item ${PACKAGE_REGISTER_EXTENSIONS})
string(REPLACE " " ";" a ${item})
list(POP_FRONT a ext)
set(desc "${ext} files")
# Create association
list(APPEND EXTRA_INSTALL_COMMANDS
"\\\${RegisterExtension} ${QUOTE}$INSTDIR/${PACKAGE_INSTALLED_ICON_NAME}${QUOTE} ${QUOTE}${ext}${QUOTE} ${QUOTE}${desc}${QUOTE}")
# Remove association
list(APPEND EXTRA_UNINSTALL_COMMANDS
"\\\${UnRegisterExtension} ${QUOTE}${ext}${QUOTE} ${QUOTE}${desc}${QUOTE}")
endforeach()
# convert to multi line string
list(JOIN EXTRA_PREINSTALL_COMMANDS "${NL}${INDENT}" CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS)
list(JOIN EXTRA_INSTALL_COMMANDS "${NL}${INDENT}" CPACK_NSIS_EXTRA_INSTALL_COMMANDS)
list(JOIN EXTRA_UNINSTALL_COMMANDS "${NL}${INDENT}" CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS)
# fix first line
string(PREPEND CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "${INDENT}")
string(PREPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${INDENT}")
string(PREPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${INDENT}")
include(CPack)