diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index fc406b09d5f..0bc2c37a204 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -315,7 +315,7 @@ jobs: "ARCH_SUFFIX=_arm64" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8 } else { "BUILD_DIR=build" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8 - "ARCH_SUFFIX=" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8 + "ARCH_SUFFIX=_x64" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8 } - name: setup MSVC @@ -405,7 +405,7 @@ jobs: with: upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} release_id: 137995723 - asset_path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe + asset_path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_Installer_${{ env.ver }}${{ env.ARCH_SUFFIX }}.exe asset_name: OrcaSlicer_Windows_Installer${{ env.ARCH_SUFFIX }}_nightly${{ env.nightly_suffix }}.exe asset_content_type: application/x-msdownload max_releases: 1 diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index 70a89ecbbd8..60d68e2459d 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -92,9 +92,11 @@ jobs: # binaries are already unzipped. Copy the inner binary for each platform. # -type f is required (some artifact *folders* are named "*.flatpak"). - # Windows installer: the .exe inside the installer artifact, NOT the - # orca-slicer.exe that lives in the portable app folder. - find artifacts -type f -name '*.exe' -path '*OrcaSlicer_Windows_*' ! -path '*_portable*' -exec cp -v {} upload/ \; + # Windows installers (x64 + arm64): the .exe inside each installer + # artifact, NOT the orca-slicer.exe in the portable app folder. CPack + # now bakes the arch into the filename (…_x64.exe / …_arm64.exe), so + # copy them straight through. + find artifacts -type f -name '*.exe' -path '*OrcaSlicer_Windows_V*' ! -path '*_portable*' -exec cp -v {} upload/ \; # macOS universal DMG (profile-validator DMG isn't downloaded). find artifacts -type f -name '*.dmg' -path '*OrcaSlicer_Mac_universal_*' -exec cp -v {} upload/ \; # Linux AppImage. @@ -104,15 +106,16 @@ jobs: # Windows debug symbols (PDB archive, for developers). find artifacts -type f -name 'Debug_PDB_*.7z' -exec cp -v {} upload/ \; - # Portable Windows build is an unzipped folder artifact; re-zip it to the - # released filename (this one stays a .zip on the release). - portable_dir=$(find artifacts -maxdepth 1 -type d -name 'OrcaSlicer_Windows_*_portable' | head -n1) - if [ -n "${portable_dir:-}" ]; then - ( cd "$portable_dir" && zip -qr "$GITHUB_WORKSPACE/upload/$(basename "$portable_dir").zip" . ) - echo "Zipped portable -> $(basename "$portable_dir").zip" - else + # Portable Windows builds (x64 + arm64) are unzipped folder artifacts; + # re-zip each to its released filename (these stay .zip on the release). + mapfile -t portable_dirs < <(find artifacts -maxdepth 1 -type d -name 'OrcaSlicer_Windows_*_portable') + if [ ${#portable_dirs[@]} -eq 0 ]; then echo "::warning::Windows portable artifact not found." fi + for portable_dir in "${portable_dirs[@]}"; do + ( cd "$portable_dir" && zip -qr "$GITHUB_WORKSPACE/upload/$(basename "$portable_dir").zip" . ) + echo "Zipped portable -> $(basename "$portable_dir").zip" + done echo "Assets to upload:" ls -lh upload diff --git a/CMakeLists.txt b/CMakeLists.txt index e24e296ad41..8dcd4cf0040 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -934,6 +934,16 @@ set (CPACK_PACKAGE_VERSION_MAJOR "${ORCA_VERSION_MAJOR}") set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}") set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}") set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}") +# Suffix the Windows installer with its target arch so the x64 and arm64 builds +# produce distinct filenames (matches ARCH_SUFFIX in build_orca.yml). Same +# CMAKE_SYSTEM_PROCESSOR mapping used by orcaslicer_copy_dlls() above. +if (WIN32) + if (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + string (APPEND CPACK_PACKAGE_FILE_NAME "_arm64") + else () + string (APPEND CPACK_PACKAGE_FILE_NAME "_x64") + endif () +endif () set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers") set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/OrcaSlicer/OrcaSlicer") set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})