This is an automated email from the ASF dual-hosted git repository. mmuzaf pushed a commit to branch ignite-2.11.1 in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 942d1050ad7a6c4826310ffe9d7601b21e1baddb Author: Ivan Daschinsky <[email protected]> AuthorDate: Wed Oct 6 09:41:35 2021 +0300 IGNITE-15678 CPP: Implement building windows installer of ODBC Driver on CMake - Fixes #9470. Signed-off-by: Ivan Daschinsky <[email protected]> --- modules/platforms/cpp/CMakeLists.txt | 19 ++-- modules/platforms/cpp/odbc/CMakeLists.txt | 60 ++++++++++- .../platforms/cpp/odbc/install/ignite-odbc.wxs.in | 113 +++++++++++++++++++++ 3 files changed, 184 insertions(+), 8 deletions(-) diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/CMakeLists.txt index eb68cf4..286c851 100644 --- a/modules/platforms/cpp/CMakeLists.txt +++ b/modules/platforms/cpp/CMakeLists.txt @@ -20,9 +20,6 @@ project(Ignite.C++ VERSION 2.11.1.60260) set(CMAKE_CXX_STANDARD 98) -find_package(Java 1.8 REQUIRED) -find_package(JNI REQUIRED) - set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIGNITE_IMPL -DIGNITE_FRIEND -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS") @@ -52,11 +49,18 @@ if (MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS) endif() +option (WITH_CORE ON) option (WITH_ODBC OFF) +option (WITH_ODBC_MSI OFF) option (WITH_THIN_CLIENT OFF) option (WITH_TESTS OFF) option (WARNINGS_AS_ERRORS OFF) +if (${WITH_CORE} OR ${WITH_TESTS}) + find_package(Java 1.8 REQUIRED) + find_package(JNI REQUIRED) +endif() + if (${WARNINGS_AS_ERRORS}) if (MSVC) add_compile_options(/WX) @@ -67,9 +71,12 @@ endif() add_subdirectory(common) add_subdirectory(binary) -add_subdirectory(jni) -add_subdirectory(core) -add_subdirectory(ignite) + +if (${WITH_CORE} OR ${WITH_TESTS}) + add_subdirectory(jni) + add_subdirectory(core) + add_subdirectory(ignite) +endif() if (${WITH_TESTS}) enable_testing() diff --git a/modules/platforms/cpp/odbc/CMakeLists.txt b/modules/platforms/cpp/odbc/CMakeLists.txt index 742d36f..0244cf5 100644 --- a/modules/platforms/cpp/odbc/CMakeLists.txt +++ b/modules/platforms/cpp/odbc/CMakeLists.txt @@ -96,12 +96,68 @@ if (WIN32) if (MSVC_VERSION GREATER_EQUAL 1900) target_link_libraries(${TARGET} legacy_stdio_definitions) endif() - - set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.odbc") + + set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.odbc") else() target_link_libraries(${TARGET} ignite-common ignite-binary ignite-network) endif() +if (WIN32 AND ${WITH_ODBC_MSI}) + find_program(WIX_CANDLE candle) + if(NOT WIX_CANDLE) + message(FATAL_ERROR "WIX candle.exe not found! Have you installed WIX Toolset or forgotten to add it to Path?") + endif() + + find_program(WIX_LIGHT light) + if(NOT WIX_LIGHT) + message(FATAL_ERROR "WIX light.exe not found! Have you installed WIX Toolset or forgotten to add it to Path?") + endif() + + set(WIX_ODBC_LIBRARY_PATH ".\\ignite.odbc.dll") + + set(WIX_PROJECT_NAME "Apache Ignite") + set(WIX_MANUFACTURER "The Apache Software Foundation") + set(WIX_COPYRIGHT_COMMENT "Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are trademarks of The Apache Software Foundation.") + + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(WIX_BIT_SUFFIX "64-bit") + set(WIX_PRODUCT_ID "F3E308E4-910C-4AF5-82DE-2ACF4D64830E") + set(WIX_UPGRADE_CODE "1D7AEFDF-6CD2-4FB5-88F2-811A89832D6D") + set(WIX_COMPONENT_ID "E5F0DDF2-DD3C-4196-8A08-70921858A52F") + set(WIX_PROGRAM_FILES_FOLDER_ID "ProgramFiles64Folder") + set(WIX_COMPONENT_IS_WIN64 "yes") + set(WIX_PACKAGE_PLATFORM "x64") + set(WIX_INSTALLER_PREFIX ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/ignite-odbc-amd64) + elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(WIX_BIT_SUFFIX "32-bit") + set(WIX_PRODUCT_ID "D39CBABA-1E21-4701-AA5C-91EDA07B383B") + set(WIX_UPGRADE_CODE "743902A4-365C-424E-B226-5B2898A3941E") + set(WIX_COMPONENT_ID "4AFA26EE-C639-4EF2-A9B2-281119BB4BB5") + set(WIX_PROGRAM_FILES_FOLDER_ID "ProgramFilesFolder") + set(WIX_COMPONENT_IS_WIN64 "no") + set(WIX_PACKAGE_PLATFORM "x86") + set(WIX_INSTALLER_PREFIX ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/ignite-odbc-x86) + endif() + + set(WIX_PRODUCT_NAME "${WIX_PROJECT_NAME} ODBC ${WIX_BIT_SUFFIX} Driver") + + configure_file( + "${CMAKE_CURRENT_LIST_DIR}/install/ignite-odbc.wxs.in" + "${WIX_INSTALLER_PREFIX}.wxs" + @ONLY + ) + + add_custom_command( + TARGET ${TARGET} POST_BUILD + COMMAND ${WIX_CANDLE} ${WIX_INSTALLER_PREFIX}.wxs -out ${WIX_INSTALLER_PREFIX}.wxobj + COMMAND ${WIX_LIGHT} -ext WixUIExtension ${WIX_INSTALLER_PREFIX}.wxobj -out ${WIX_INSTALLER_PREFIX}.msi + ) +endif() + target_include_directories(${TARGET} INTERFACE include) install(TARGETS ${TARGET} LIBRARY DESTINATION lib) + +if (WIN32 AND ${WITH_ODBC_MSI}) + install(FILES ${WIX_INSTALLER_PREFIX}.msi DESTINATION bin) +endif() diff --git a/modules/platforms/cpp/odbc/install/ignite-odbc.wxs.in b/modules/platforms/cpp/odbc/install/ignite-odbc.wxs.in new file mode 100644 index 0000000..a3dc84d --- /dev/null +++ b/modules/platforms/cpp/odbc/install/ignite-odbc.wxs.in @@ -0,0 +1,113 @@ +<?xml version='1.0' encoding='windows-1252'?> + +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> + <Product Name='@WIX_PRODUCT_NAME@' Manufacturer='@WIX_MANUFACTURER@' + Id='@WIX_PRODUCT_ID@' + UpgradeCode='@WIX_UPGRADE_CODE@' + Language='1033' Codepage='1252' Version='@CMAKE_PROJECT_VERSION@'> + + <Package Id='*' Keywords='Installer' Description="@WIX_PRODUCT_NAME@ Installer" + Comments='@WIX_COPYRIGHT_COMMENT@' Platform="@WIX_PACKAGE_PLATFORM@" + InstallerVersion='301' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> + + <Media Id='1' Cabinet='package.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1' /> + <Property Id='DiskPrompt' Value="@WIX_PRODUCT_NAME@ Installation [1]" /> + + <Directory Id='TARGETDIR' Name='SourceDir'> + <Directory Id='@WIX_PROGRAM_FILES_FOLDER_ID@' Name='ProgramFiles'> + <Directory Id='ApacheIgnite' Name='Apache Ignite'> + <Directory Id='INSTALLDIR' Name='ODBC Driver'> + <Component Id='Driver' Guid='@WIX_COMPONENT_ID@' Win64='@WIX_COMPONENT_IS_WIN64@'> + <File Id='IgniteOdbcDll' Name='ignite.odbc.dll' DiskId='1' Source='@WIX_ODBC_LIBRARY_PATH@' KeyPath='yes'/> + + <RegistryValue Root='HKLM' Key='Software\ODBC\ODBCINST.INI\ODBC Drivers' Name='Apache Ignite' Type='string' Value='Installed'/> + + <RegistryKey Id='OdbcDriverRegInfo' Root='HKLM' Key='Software\ODBC\ODBCINST.INI\Apache Ignite' ForceCreateOnInstall='yes' ForceDeleteOnUninstall='yes'> + <RegistryValue Type='string' Name='DriverODBCVer' Value='03.00'/> + <RegistryValue Type='string' Name='Driver' Value='[#IgniteOdbcDll]'/> + <RegistryValue Type='string' Name='Setup' Value='[#IgniteOdbcDll]'/> + <RegistryValue Type='integer' Name='UsageCount' Value='1'/> + </RegistryKey> + </Component> + </Directory> + </Directory> + </Directory> + </Directory> + + <Feature Id='Complete' Title='ODBC Driver' Description='@WIX_PRODUCT_NAME@.' Level='1' + ConfigurableDirectory='INSTALLDIR' Absent='disallow' AllowAdvertise='no' InstallDefault='local'> + <ComponentRef Id='Driver' /> + </Feature> + + <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> + + <UI Id="WixUI_InstallDir"> + <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> + <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> + <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> + + <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> + <Property Id="WixUI_Mode" Value="InstallDir" /> + + <DialogRef Id="BrowseDlg" /> + <DialogRef Id="DiskCostDlg" /> + <DialogRef Id="ErrorDlg" /> + <DialogRef Id="FatalError" /> + <DialogRef Id="FilesInUse" /> + <DialogRef Id="MsiRMFilesInUse" /> + <DialogRef Id="PrepareDlg" /> + <DialogRef Id="ProgressDlg" /> + <DialogRef Id="ResumeDlg" /> + <DialogRef Id="UserExit" /> + + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish> + <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> + + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> + + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">NOT Installed</Publish> + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish> + + <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish> + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish> + + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="1">NOT Installed</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">Installed AND PATCH</Publish> + + <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish> + + <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish> + + <Property Id="ARPNOMODIFY" Value="1" /> + </UI> + + <UIRef Id="WixUI_Common" /> + <UIRef Id="WixUI_ErrorProgressText" /> + + </Product> +</Wix>
