From 02417166bfe8d27141654092cf382e035db73567 Mon Sep 17 00:00:00 2001 From: karenc-bq Date: Wed, 19 Jun 2024 11:56:41 -0700 Subject: [PATCH] chore: build installer on visual studio 2022 --- .github/workflows/build-installer.yml | 78 +++++++++++++++++++++++++++ .github/workflows/main.yml | 5 -- .github/workflows/release.yml | 7 +-- build_installer.ps1 | 14 +++-- wix/CMakeLists.txt | 10 +++- wix/cmake/FindWix.cmake | 2 +- wix/mysql_odbc.wxs.in | 4 +- wix/mysql_odbc_fragment.wxs | 6 +-- 8 files changed, 106 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/build-installer.yml diff --git a/.github/workflows/build-installer.yml b/.github/workflows/build-installer.yml new file mode 100644 index 000000000..78c0702d0 --- /dev/null +++ b/.github/workflows/build-installer.yml @@ -0,0 +1,78 @@ +name: Build installer +# This workflow is triggered on creating tags +on: + push: + branches: + - windows-installer + +env: + BUILD_TYPE: Release + +jobs: + build-windows: + name: Windows + runs-on: windows-latest + env: + CMAKE_GENERATOR: Visual Studio 17 2022 + WIX_DIR: "C:/Program Files (x86)/WiX Toolset v3.14/bin" + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + # Configure build environment/dependencies + - name: Install MySQL client libs + run: | + curl -L https://dev.mysql.com/get/Downloads/MySQL-8.3/mysql-${{ vars.MYSQL_VERSION }}-winx64.zip -o mysql.zip + unzip -d C:/ mysql.zip + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Cache AWS SDK libraries + id: cache-dynamic-aws-sdk + uses: actions/cache@v4 + with: + path: | + aws_sdk + key: ${{ runner.os }}-aws-sdk-dynamic-lib + + - name: Build and install AWS SDK C++ + working-directory: ./scripts + if: steps.cache-dynamic-aws-sdk.outputs.cache-hit != 'true' + run: | + .\build_aws_sdk_win.ps1 x64 ${{ env.BUILD_TYPE}} ON "${{env.CMAKE_GENERATOR}}" + + - name: Setup nmake + uses: ilammy/msvc-dev-cmd@v1 + + - name: Run build installer script + shell: pwsh + run: | + .\build_installer.ps1 x64 ${{ env.BUILD_TYPE}} "${{env.CMAKE_GENERATOR}}" C:/mysql-${{ vars.MYSQL_VERSION }}-winx64 "${{env.WIX_DIR}}" + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4.0.2 + with: + role-skip-session-tagging: true + aws-access-key-id: ${{ secrets.AWS_BUILD_KEY }} + aws-secret-access-key: ${{ secrets.AWS_BUILD_SECRET_KEY }} + aws-region: us-west-2 + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + role-external-id: ${{ secrets.AWS_ROLE_EXTERNAL_ID }} + role-duration-seconds: 3600 + + - name: Run signer script + shell: pwsh + working-directory: ./scripts + run: | + choco upgrade jq -y + . ".\sign_installer.ps1" + Invoke-SignInstaller ${{ github.workspace }}\wix winx64a ${{github.ref_name}} ${{ secrets.AWS_UNSIGNED_BUCKET }} ${{ secrets.AWS_SIGNED_BUCKET }} ${{ secrets.AWS_S3_KEY }}aws-mysql-odbc-${{github.ref_name}}-winx64a.msi + + - name: Upload Windows installer as artifact + if: success() + uses: actions/upload-artifact@v3 + with: + name: installers + path: ${{ github.workspace }}/wix/*.msi + if-no-files-found: error diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 02f96bc1d..b04c8544c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,11 +40,6 @@ jobs: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 - - name: Update CMAKE Version - shell: pwsh - run: | - choco upgrade cmake --pre - - name: Cache AWS SDK libraries id: cache-dynamic-aws-sdk uses: actions/cache@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ebd725e30..002c0b63d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -151,9 +151,10 @@ jobs: build-windows: name: Windows - runs-on: windows-2019 + runs-on: windows-latest env: - CMAKE_GENERATOR: Visual Studio 16 2019 + CMAKE_GENERATOR: Visual Studio 17 2022 + WIX_DIR: "C:/Program Files (x86)/WiX Toolset v3.14/bin" steps: - name: Checkout source code uses: actions/checkout@v4 @@ -177,7 +178,7 @@ jobs: - name: Run build installer script run: | - .\build_installer.ps1 x64 ${{ env.BUILD_TYPE}} "${{env.CMAKE_GENERATOR}}" C:/mysql-${{ vars.MYSQL_VERSION }}-winx64 + .\build_installer.ps1 x64 ${{ env.BUILD_TYPE}} "${{env.CMAKE_GENERATOR}}" C:/mysql-${{ vars.MYSQL_VERSION }}-winx64 "${{env.WIX_DIR}}" - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4.0.2 diff --git a/build_installer.ps1 b/build_installer.ps1 index b166e66c6..e46043521 100644 --- a/build_installer.ps1 +++ b/build_installer.ps1 @@ -47,13 +47,14 @@ $ARCHITECTURE = $args[0] $CONFIGURATION = $args[1] $GENERATOR = $args[2] $MYSQL_DIR = $args[3] +$WIX_DIR = $args[4] # Set default values if ($null -eq $CONFIGURATION) { $CONFIGURATION = "Release" } if ($null -eq $MYSQL_DIR) { - $MYSQL_DIR = "C:\Program Files\MySQL\MySQL Server 8.0" + $MYSQL_DIR = "C:\Program Files\MySQL\MySQL Server 8.3" } # BUILD DRIVER @@ -81,10 +82,15 @@ Copy-Item .\LICENSE.txt .\Wix\doc Set-Location .\Wix if ($ARCHITECTURE -eq "x64") { - cmake -DMSI_64=1 -G "NMake Makefiles" -} -else { + if ($null -eq $WIX_DIR) { + cmake -DMSI_64=1 -G "NMake Makefiles" + } else { + cmake -DMSI_64=1 -G "NMake Makefiles" -DWIX_DIR="$WIX_DIR" + } +} elseif ($null -eq $WIX_DIR) { cmake -DMSI_64=0 -G "NMake Makefiles" +} else { + cmake -DMSI_64=0 -G "NMake Makefiles" -DWIX_DIR="$WIX_DIR" } nmake diff --git a/wix/CMakeLists.txt b/wix/CMakeLists.txt index b6efe481a..c076ec4e9 100644 --- a/wix/CMakeLists.txt +++ b/wix/CMakeLists.txt @@ -171,7 +171,7 @@ FILE(APPEND "${XML_DEPENDENCIES}" "") CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_odbc.wxs.in - ${CMAKE_CURRENT_SOURCE_DIR}/mysql-odbc-${ODBC_VERSION}-${MSI_VERSION}.wxs @ONLY) + ${CMAKE_CURRENT_SOURCE_DIR}/aws-mysql-odbc-${ODBC_VERSION}-${MSI_VERSION}.wxs @ONLY) ADD_CUSTOM_TARGET( MSI_INSTALLER ALL @@ -179,6 +179,12 @@ ADD_CUSTOM_TARGET( ADD_CUSTOM_COMMAND( OUTPUT ${MSI_PACKAGE} + DEPENDS mysql_odbc.wxs + mysql_odbc_fragment.wxs + COMMAND ${WIX_DIR}/candle.exe mysql_odbc.wxs.in mysql_odbc_fragment.wxs -o ${MSI_PACKAGE}) + +ADD_CUSTOM_COMMAND( + OUTPUT mysql_odbc.wxs DEPENDS mysql_odbc.wxs.in mysql_common_ui.wxs - COMMAND ${WIX_EXECUTABLE} build -arch ${XML_FILE_SOURCE_ARCH} -out ${MSI_PACKAGE} mysql-odbc-${ODBC_VERSION}-${MSI_VERSION}.wxs mysql_odbc_fragment.wxs) + COMMAND ${WIX_EXECUTABLE} -arch ${XML_FILE_SOURCE_ARCH} aws-mysql-odbc-${ODBC_VERSION}-${MSI_VERSION}.wxs -o mysql_odbc.wxs.in) diff --git a/wix/cmake/FindWix.cmake b/wix/cmake/FindWix.cmake index 0739b4f8d..505bae41a 100644 --- a/wix/cmake/FindWix.cmake +++ b/wix/cmake/FindWix.cmake @@ -41,7 +41,7 @@ IF(NOT DEFINED WIX_DIR) ENDIF(DEFINED $ENV{WIX_DIR}) ENDIF(NOT DEFINED WIX_DIR) -FIND_PROGRAM(WIX_EXECUTABLE wix ${WIX_DIR}) +FIND_PROGRAM(WIX_EXECUTABLE candle ${WIX_DIR}) #----------------- FIND WIX EXECUTABLE ------------------- IF (EXISTS "${WIX_EXECUTABLE}") diff --git a/wix/mysql_odbc.wxs.in b/wix/mysql_odbc.wxs.in index 2cb8def67..81d154432 100644 --- a/wix/mysql_odbc.wxs.in +++ b/wix/mysql_odbc.wxs.in @@ -32,7 +32,7 @@ - + @@ -64,7 +64,7 @@ Description="AWS ODBC Driver for MySQL" Manufacturer="Amazon.com Inc. or affiliates" InstallerVersion="200" Platform="$(var.odbc_platform)" Languages="1033" SummaryCodepage="1252" Compressed='yes' /> - + - +