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

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

Refs #1899
Se corrigen el nombre del software y el de la variable de entorno para la versión de TOL 64-bits.
Así se evita colisión con la versión de 32-bits.

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

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