From 89f895309f4c2aad77d4526e4a8c69b498abbf72 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 10 Feb 2010 20:23:24 +0100 Subject: Add components to INSTALL, some eraly Wix support --- packaging/WiX/AdminBackground.jpg | Bin 0 -> 20557 bytes packaging/WiX/AdminHeader.jpg | Bin 0 -> 3469 bytes packaging/WiX/CMakeLists.txt | 28 ++++++++++ packaging/WiX/create_fragments.cmake | 86 +++++++++++++++++++++++++++++ packaging/WiX/create_msi.cmake.in | 103 +++++++++++++++++++++++++++++++++++ packaging/WiX/mysql_server.wxs.in | 40 ++++++++++++++ 6 files changed, 257 insertions(+) create mode 100644 packaging/WiX/AdminBackground.jpg create mode 100644 packaging/WiX/AdminHeader.jpg create mode 100644 packaging/WiX/CMakeLists.txt create mode 100644 packaging/WiX/create_fragments.cmake create mode 100644 packaging/WiX/create_msi.cmake.in create mode 100644 packaging/WiX/mysql_server.wxs.in (limited to 'packaging') diff --git a/packaging/WiX/AdminBackground.jpg b/packaging/WiX/AdminBackground.jpg new file mode 100644 index 00000000000..847dc6cdbed Binary files /dev/null and b/packaging/WiX/AdminBackground.jpg differ diff --git a/packaging/WiX/AdminHeader.jpg b/packaging/WiX/AdminHeader.jpg new file mode 100644 index 00000000000..6e2e33d404f Binary files /dev/null and b/packaging/WiX/AdminHeader.jpg differ diff --git a/packaging/WiX/CMakeLists.txt b/packaging/WiX/CMakeLists.txt new file mode 100644 index 00000000000..1d1a82f7b1c --- /dev/null +++ b/packaging/WiX/CMakeLists.txt @@ -0,0 +1,28 @@ +FIND_PATH(WIX_DIR heat.exe + $ENV{WIX_DIR}/bin + $ENV{ProgramFiles}/wix/bin + "$ENV{ProgramFiles}/Windows Installer XML v3.0/bin" + "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" +) + +IF(NOT WIX_DIR) + MESSAGE(FATAL_ERROR "Cannot find wix") +ENDIF() + +FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR}) +FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR}) +FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR}) + + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake + @ONLY) +IF(CMAKE_GENERATOR MATCHES "Visual Studio") + SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") +ENDIF() +ADD_CUSTOM_TARGET( + WIX_Installer + COMMAND set VS_UNICODE_OUTPUT= + COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake +) + diff --git a/packaging/WiX/create_fragments.cmake b/packaging/WiX/create_fragments.cmake new file mode 100644 index 00000000000..01e8a11c0cf --- /dev/null +++ b/packaging/WiX/create_fragments.cmake @@ -0,0 +1,86 @@ +INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig) + +FOREACH(comp ${COMPS}) + SET(CMDS ${CMDS} + COMMAND set DESTDIR=testinstall/${comp} + COMMAND ${CMAKE_COMMAND} + -DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR} + -DCMAKE_INSTALL_COMPONENT=${comp} + -DCMAKE_INSTALL_PREFIX= + -P ${CMAKE_BINARY_DIR}/cmake_install.cmake + ) +ENDFOREACH() + +MACRO(MAKE_WIX_IDENTIFIER str varname) + STRING(REPLACE "/" "." ${varname} "${str}") + STRING(REPLACE "-" "_" ${varname} "${${varname}}") +ENDMACRO() + +FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) + FILE(GLOB all_files ${dir}/*) + IF(NOT all_files) + RETURN() + ENDIF() + FILE(RELATIVE_PATH dir_rel ${topdir} ${dir}) + IF(dir_rel) + MAKE_DIRECTORY(${dir_root}/${dir_rel}) + MAKE_WIX_IDENTIFIER("${dir_rel}" id) + FILE(APPEND ${file} "\n") + ELSE() + FILE(APPEND ${file} "\n") + ENDIF() + + FOREACH(f ${all_files}) + IF(NOT IS_DIRECTORY ${f}) + FILE(RELATIVE_PATH rel ${topdir} ${f}) + MAKE_WIX_IDENTIFIER("${rel}" id) + FILE(TO_NATIVE_PATH ${f} f_native) + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ENDIF() + ENDFOREACH() + FILE(APPEND ${file} "\n") + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) + ENDIF() + ENDFOREACH() +ENDFUNCTION() + +FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) + FILE(RELATIVE_PATH rel ${topdir} ${dir}) + IF(rel) + MAKE_WIX_IDENTIFIER("${rel}" id) + GET_FILENAME_COMPONENT(name ${dir} NAME) + FILE(APPEND ${file} "${prefix}\n") + ENDIF() + FILE(GLOB all_files ${dir}/*) + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ") + ENDIF() + ENDFOREACH() + IF(rel) + FILE(APPEND ${file} "\n") + ENDIF() +ENDFUNCTION() + + +GET_FILENAME_COMPONENT(abs . ABSOLUTE) +FOREACH(d ${DIRS}) + GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) + GET_FILENAME_COMPONENT(d_name ${d} NAME) + FILE(WRITE + ${abs}/${d_name}.wxs "\n\n") + FILE(WRITE + ${abs}/${d_name}_component_group.wxs "\n\n\n") + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}.wxs " \n") + FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") +ENDFOREACH() +FILE(WRITE directories.wxs "\n\n\n") +TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") +FILE(APPEND directories.wxs "\n\n\n") + diff --git a/packaging/WiX/create_msi.cmake.in b/packaging/WiX/create_msi.cmake.in new file mode 100644 index 00000000000..13836d6d35f --- /dev/null +++ b/packaging/WiX/create_msi.cmake.in @@ -0,0 +1,103 @@ +SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@") +SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") +SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@") +SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@") +SET(CMAKE_COMMAND "@CMAKE_COMMAND@") +SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@") +SET(ENV{VS_UNICODE_OUTPUT}) +INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs) + +IF(CMAKE_INSTALL_CONFIG_NAME) + SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}") +ENDIF() + +FOREACH(comp ${CPACK_COMPONENTS_ALL}) + SET(ENV{DESTDIR} testinstall/${comp}) + SET(DIRS ${DIRS} testinstall/${comp}) + EXECUTE_PROCESS( + COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp} + -DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake + ) +ENDFOREACH() + +MACRO(MAKE_WIX_IDENTIFIER str varname) + STRING(REPLACE "/" "." ${varname} "${str}") + STRING(REPLACE "-" "_" ${varname} "${${varname}}") +ENDMACRO() + +FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root) + FILE(GLOB all_files ${dir}/*) + IF(NOT all_files) + RETURN() + ENDIF() + FILE(RELATIVE_PATH dir_rel ${topdir} ${dir}) + IF(dir_rel) + MAKE_DIRECTORY(${dir_root}/${dir_rel}) + MAKE_WIX_IDENTIFIER("${dir_rel}" id) + FILE(APPEND ${file} "\n") + ELSE() + FILE(APPEND ${file} "\n") + ENDIF() + + FOREACH(f ${all_files}) + IF(NOT IS_DIRECTORY ${f}) + FILE(RELATIVE_PATH rel ${topdir} ${f}) + MAKE_WIX_IDENTIFIER("${rel}" id) + FILE(TO_NATIVE_PATH ${f} f_native) + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file} " \n") + FILE(APPEND ${file_comp} " \n") + ENDIF() + ENDFOREACH() + FILE(APPEND ${file} "\n") + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root}) + ENDIF() + ENDFOREACH() +ENDFUNCTION() + +FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix) + FILE(RELATIVE_PATH rel ${topdir} ${dir}) + IF(rel AND IS_DIRECTORY "${f}") + MAKE_WIX_IDENTIFIER("${rel}" id) + GET_FILENAME_COMPONENT(name ${dir} NAME) + FILE(APPEND ${file} "${prefix}\n") + ENDIF() + FILE(GLOB all_files ${dir}/*) + FOREACH(f ${all_files}) + IF(IS_DIRECTORY ${f}) + TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ") + ENDIF() + ENDFOREACH() + IF(rel AND IS_DIRECTORY "${f}") + FILE(APPEND ${file} "\n") + ENDIF() +ENDFUNCTION() + + +GET_FILENAME_COMPONENT(abs . ABSOLUTE) +FOREACH(d ${DIRS}) + GET_FILENAME_COMPONENT(d ${d} ABSOLUTE) + GET_FILENAME_COMPONENT(d_name ${d} NAME) + FILE(WRITE + ${abs}/${d_name}.wxs "\n\n") + FILE(WRITE + ${abs}/${d_name}_component_group.wxs "\n\n\n") + TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs") + FILE(APPEND ${abs}/${d_name}.wxs " \n") + FILE(APPEND ${abs}/${d_name}_component_group.wxs "\n\n") +ENDFOREACH() +FILE(WRITE directories.wxs "\n\n\n") +TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "") +FILE(APPEND directories.wxs "\n\n\n") + +EXECUTE_PROCESS( + COMMAND ${CANDLE_EXECUTABLE} *.wxs + COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension *.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi +) + diff --git a/packaging/WiX/mysql_server.wxs.in b/packaging/WiX/mysql_server.wxs.in new file mode 100644 index 00000000000..21f2a6256f3 --- /dev/null +++ b/packaging/WiX/mysql_server.wxs.in @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.1