diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index d84f49340069..c33374df9c49 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -99,9 +99,10 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt") - # Tentative version 1.0.0 (patch version is not set) + # Tentative version 1.0.0 set(CPACK_PACKAGE_VERSION_MAJOR "1") set(CPACK_PACKAGE_VERSION_MINOR "0") + set(CPACK_PACKAGE_VERSION_PATCH "0") set(CPACK_PACKAGE_NAME "Apache Arrow Flight SQL ODBC") set(CPACK_PACKAGE_VENDOR "Apache Arrow") @@ -115,13 +116,26 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) DESTINATION bin COMPONENT flight_sql_odbc_lib FILES_MATCHING - PATTERN "*.dll" - PATTERN "arrow_flight_testing.dll" EXCLUDE - PATTERN "arrow_testing.dll" EXCLUDE - PATTERN "gflags.dll" EXCLUDE - PATTERN "gmock.dll" EXCLUDE - PATTERN "gtest.dll" EXCLUDE - PATTERN "gtest_main.dll" EXCLUDE) + # Use regex for dll name patterns with versions + PATTERN "abseil_dll.dll" + PATTERN "arrow.dll" + PATTERN "arrow_compute.dll" + PATTERN "arrow_flight.dll" + PATTERN "arrow_flight_sql.dll" + PATTERN "arrow_flight_sql_odbc.dll" + PATTERN "boost_locale*.dll" + PATTERN "cares.dll" + PATTERN "libcrypto*.dll" + PATTERN "libprotobuf.dll" + PATTERN "libssl*.dll" + PATTERN "re2.dll" + PATTERN "utf8proc.dll" + PATTERN "zlib1.dll") + + set(CPACK_WIX_EXTRA_SOURCES + "${CMAKE_CURRENT_SOURCE_DIR}/install/arrow-flight-sql-odbc.wxs") + set(CPACK_WIX_PATCH_FILE + "${CMAKE_CURRENT_SOURCE_DIR}/install/arrow-flight-sql-odbc-patch.xml") endif() get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) diff --git a/cpp/src/arrow/flight/sql/odbc/README b/cpp/src/arrow/flight/sql/odbc/README index 04749d9b859b..da9857b7ecca 100644 --- a/cpp/src/arrow/flight/sql/odbc/README +++ b/cpp/src/arrow/flight/sql/odbc/README @@ -17,3 +17,10 @@ After the build succeeds, the ODBC DLL will be located in If the registration is successful, then Apache Arrow Flight SQL ODBC Driver should show as an available ODBC driver in the x64 ODBC Driver Manager. + +Steps to Generate Windows Installer +1. Build with `ARROW_FLIGHT_SQL_ODBC=ON` and `ARROW_FLIGHT_SQL_ODBC_INSTALLER=ON`. +2. `cd` to `build` folder. +3. Run `cpack`. + +If the generation is successful, you will find `Apache Arrow Flight SQL ODBC--win64.msi` generated under the `build` folder. diff --git a/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc-patch.xml b/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc-patch.xml new file mode 100644 index 000000000000..f1a63ce5d3bb --- /dev/null +++ b/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc-patch.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc.wxs b/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc.wxs new file mode 100644 index 000000000000..bd0216aa7669 --- /dev/null +++ b/cpp/src/arrow/flight/sql/odbc/install/arrow-flight-sql-odbc.wxs @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + +