source: tol/installer/windows/CMakeLists.txt @ 8685395

1941-docker-image-to-testdevel
Last change on this file since 8685395 was 8685395, checked in by Pedro Gea <pgea@…>, 11 years ago

Refs #1899
Se incorpora el CMakeLists.txt para el instalador en Windows.
Dispone de la posibilidad de crear el instalador para 32 y para 64 bits.
Dispone de la posibilidad de incluir tolbase o no.
Para que funcione adecuadamente la sentencia include(CPack) ha de moverse de archivo.

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@7187 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 6.0 KB
Line 
1
2# la variable SOURCE_DIR apunta al directorio principal del código (trunk)
3set(SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
4
5# directorio con archivos adicionales para el instalador
6set(NSIS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/NSIS")
7# módulo adicional para construir el instalados con NSIS
8set(CMAKE_MODULE_PATH "${NSIS_DIR}" ${CMAKE_MODULE_PATH})
9
10# => http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
11
12if(${TOL_PLATFORM} EQUAL "64")
13  message(STATUS "Installer for TOL 64-bits")
14  # la version de 64 bits se instala en el "program files" de 64
15  # el instalador es sin embargo un ejecutable de 32 bits
16  set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
17  set(win_system_name win64)
18else()
19  message(STATUS "Installer for TOL 32-bits")
20  set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32")
21  set(win_system_name win32)
22endif()
23
24set(CPACK_PACKAGE_NAME "TOL (GNU)")
25
26if(INCLUDE_TOLBASE)
27  message(STATUS "Installer includes tolbase")
28  set(CPACK_PACKAGE_NAMEV "tol-gnu-v${CPACK_PACKAGE_VERSION}")
29else()
30  message(STATUS "Installer includes only tolsh")
31  # se utiliza un nombre diferente para el instalador sin tolbase
32  set(CPACK_PACKAGE_NAMEV "tolsh-gnu-v${CPACK_PACKAGE_VERSION}")
33endif()
34
35#! Debería comprobarse que fueron compilados e instalados en el Runtime_Base
36#! los proyectos tol, toltcl y rtol, y también tolbase si corresponde.
37
38set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAMEV}")
39set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAMEV}")
40
41# => http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack
42
43# BIN (APPLICATION)
44file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.dll" dll_pattern)
45file(GLOB RT_DLL  ${dll_pattern})
46install(FILES ${RT_DLL} DESTINATION "bin" COMPONENT application)
47file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.exe" exe_pattern)
48file(GLOB RT_EXE  ${exe_pattern})
49install(FILES ${RT_EXE} DESTINATION "bin" COMPONENT application)
50file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir)
51install(DIRECTORY ${stdlib_dir} DESTINATION "bin" COMPONENT application
52  PATTERN ".svn" EXCLUDE)
53file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/language.txt" language_txt)
54file(GLOB RT_TXT  ${language_txt})
55install(FILES ${RT_TXT} DESTINATION "bin" COMPONENT application)
56
57# BIN (DEVELOPMENT)
58file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.lib" lib_pattern)
59file(GLOB RT_LIB  ${lib_pattern})
60install(FILES ${RT_LIB} DESTINATION "bin" COMPONENT development)
61
62# LIB (APPLICATION)
63file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir)
64install(DIRECTORY ${lib_dir} DESTINATION "." COMPONENT application
65  PATTERN "*.a" EXCLUDE PATTERN ".svn" EXCLUDE)
66 
67# INCLUDE (DEVELOPMENT)
68file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir)
69install(DIRECTORY ${include_dir} DESTINATION "." COMPONENT development)
70
71# Components
72set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE")
73set(CPACK_COMPONENTS_ALL application development)
74set(CPACK_COMPONENT_APPLICATION_REQUIRED 1)
75set(CPACK_COMPONENT_DEVELOPMENT_DISABLED 1)
76set(CPACK_COMPONENT_APPLICATION_DISPLAY_NAME "TOL Application")
77set(CPACK_COMPONENT_DEVELOPMENT_DISPLAY_NAME "C++ Headers & Libraries")
78set(CPACK_COMPONENT_APPLICATION_DESCRIPTION "Main components of TOL Application")
79set(CPACK_COMPONENT_DEVELOPMENT_DESCRIPTION "C/C++ header files and libraries for development purposes")
80
81# => http://stackoverflow.com/questions/21144655/customizing-nsis-installer-using-cpack
82configure_file(${SOURCE_DIR}/CPackOptions.cmake.in ${PROJECT_BINARY_DIR}/CPackOptions.cmake)
83
84set(CPACK_PROPERTIES_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake")
85
86set(CPACK_RESOURCE_FILE_LICENSE "${SOURCE_DIR}/tol/COPYING")
87string(REPLACE "/" "\\\\" CPACK_RESOURCE_FILE_LICENSE ${CPACK_RESOURCE_FILE_LICENSE})
88
89# => http://www.mantidproject.org/NSIS_CPACK_Customisations
90# => http://nsis.sourceforge.net/Environmental_Variables:_append,_prepend,_and_remove_entries
91# => http://www.cmake.org/Wiki/CMake:CPackNSISAdvancedTips
92
93set(CPACK_PACKAGE_ICON "${NSIS_DIR}/nsis_tol.bmp")
94string(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON})
95set(CPACK_NSIS_MUI_ICON "${NSIS_DIR}/tolbase-install.ico")
96string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON ${CPACK_NSIS_MUI_ICON})
97set(CPACK_NSIS_MUI_UNIICON "${NSIS_DIR}/tolbase-uninstall.ico")
98string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_UNIICON})
99set(CPACK_NSIS_HELP_LINK "www.tol-project.org")
100
101# nombre del paquete en el instalador
102set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
103# nombre del instalador:
104set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}-${win_system_name}")
105message(STATUS "Instaler Name: ${CPACK_PACKAGE_FILE_NAME}")
106
107set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
108  DeleteRegValue HKCU \\\"Environment\\\" TOLGNU_ROOT
109  WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT \\\$INSTDIR
110  SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
111")
112set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
113  DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT
114  SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
115")
116
117if(INCLUDE_TOLBASE)
118  # añade el icono en el panel para desinstalar programas
119  set(CPACK_NSIS_INSTALLED_ICON_NAME "${INSTDIR}/lib/TolbaseApp${CPACK_PACKAGE_VERSION}/toltk/images/tolbase-gnu.ico")
120    string(REPLACE "/" "\\\\" CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_NSIS_INSTALLED_ICON_NAME})
121 
122  # pregunta tras instalar si abrir tolbase
123  set(CPACK_NSIS_MUI_FINISHPAGE_RUN "tolbase.exe")
124 
125  # crea acceso directos a estos ejecutables (pares nombre_archivo nombre_acceso)
126  set(CPACK_PACKAGE_EXECUTABLES tolbase "tolbase-gnu-v${CPACK_PACKAGE_VERSION}")
127endif()
128
129# crea otros accesos directos
130set(CPACK_NSIS_MENU_LINKS "http://www.tol-project.org" "Tol-Project Site")
131
132# include(CPack) ha de hacerse en este mismo archivo para que funcione adecuadamente
133include( CPack )
Note: See TracBrowser for help on using the repository browser.