diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2558afff..e232a89f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,6 +84,8 @@ jobs: cmake --build build --config Release $version = Get-Content build/version.txt -Raw Add-Content -Path $env:GITHUB_ENV -Value "VERSION=$version" + cpack --config build/CPackConfig.cmake -B build/installer --verbose + Move-Item -Path "build/installer/*.exe" -Destination "build/Release" - name: Upload uses: actions/upload-artifact@v4 with: @@ -103,6 +105,8 @@ jobs: cmake --build build $version = Get-Content build/version.txt -Raw Add-Content -Path $env:GITHUB_ENV -Value "VERSION=$version" + cpack --config build/CPackConfig.cmake -B build/installer --verbose + Move-Item -Path "build/installer/*.exe" -Destination "build/Release" - name: Upload uses: actions/upload-artifact@v4 with: diff --git a/cmake/installer.cmake b/cmake/installer.cmake index ea48744e..cf17213a 100644 --- a/cmake/installer.cmake +++ b/cmake/installer.cmake @@ -15,3 +15,15 @@ foreach(TARGET IN LISTS INSTALL_TARGETS) BUNDLE DESTINATION ${DESTINATION} ARCHIVE EXCLUDE_FROM_ALL) endforeach() + +if(NOT CPACK_GENERATOR) + return() +endif() + +set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) +set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME}) +set(CPACK_PACKAGE_EXECUTABLES ${CLIENT_NAME} ${PROJECT_NAME}) +set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PRODUCT_VERSION}) +set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING.txt) + +include(CPack) diff --git a/cmake/platforms/windows.cmake b/cmake/platforms/windows.cmake index 30b3f7cc..b93d160e 100644 --- a/cmake/platforms/windows.cmake +++ b/cmake/platforms/windows.cmake @@ -42,3 +42,7 @@ set(CLIENT_EXECUTABLE_OPTIONS WIN32) # CMAKE_EXECUTABLE_SUFFIX will be empty anyway, or we want # HOST_EXECUTABLE_SUFFIX to be empty for other reasons set(HOST_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX}) + +set(CPACK_GENERATOR NSIS) +set(CPACK_NSIS_MUI_ICON ${WINDOWS_ICON_PATH}) +set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)