From e7afe35d62e5b00ce46ae510e15b0825be1e3759 Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Tue, 16 Jun 2026 04:27:46 +0300 Subject: [PATCH] feat(packaging): desktop shortcut, icon-cache refresh, checksums, AppStream Windows installer: - Optional Desktop shortcut feature (default on, deselectable) via a switch to the WixUI_FeatureTree UI. - Refresh the shell after install (ie4uinit -show) so .dwg/.dxf icons and associations appear without a reboot. - Tidy the Add/Remove Programs entry: ARPNOREPAIR plus contact/update/comments metadata (Modify stays enabled for the feature tree). Release workflow: - Publish SHA256 sidecars for the AppImage, portable .exe, MSI and .dmg. Linux: - Ship an AppStream metainfo.xml for software-centre integration. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/release.yml | 27 +++++--- ...ub.HakanSeven12.OpenCadStudio.metainfo.xml | 50 +++++++++++++++ packaging/windows/main.wxs | 64 ++++++++++++++++++- packaging/windows/ui.wxs | 6 +- 4 files changed, 136 insertions(+), 11 deletions(-) create mode 100644 packaging/io.github.HakanSeven12.OpenCadStudio.metainfo.xml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 34a36c5b0..e1fce3c8c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,8 +34,10 @@ jobs: mkdir -p AppDir/usr/bin mkdir -p AppDir/usr/share/applications mkdir -p AppDir/usr/share/icons/hicolor/256x256/apps + mkdir -p AppDir/usr/share/metainfo cp target/release/OpenCADStudio AppDir/usr/bin/OpenCADStudio cp packaging/OpenCADStudio.desktop AppDir/usr/share/applications/io.github.HakanSeven12.OpenCadStudio.desktop + cp packaging/io.github.HakanSeven12.OpenCadStudio.metainfo.xml AppDir/usr/share/metainfo/ rsvg-convert -w 256 -h 256 assets/logo.svg \ -o AppDir/usr/share/icons/hicolor/256x256/apps/io.github.HakanSeven12.OpenCadStudio.png @@ -60,8 +62,10 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mv OpenCADStudio.AppImage OpenCADStudio-${{ github.ref_name }}-linux-x86_64.AppImage - gh release upload ${{ github.ref_name }} OpenCADStudio-${{ github.ref_name }}-linux-x86_64.AppImage --clobber --repo ${{ github.repository }} + ASSET=OpenCADStudio-${{ github.ref_name }}-linux-x86_64.AppImage + mv OpenCADStudio.AppImage "$ASSET" + sha256sum "$ASSET" > "$ASSET.sha256" + gh release upload ${{ github.ref_name }} "$ASSET" "$ASSET.sha256" --clobber --repo ${{ github.repository }} build-windows: runs-on: windows-latest @@ -179,11 +183,16 @@ jobs: # .msi (installer with Start Menu shortcut + .dwg / .dxf # file association). The `-portable` / `-installer` suffix # makes the distinction obvious on the release page. - Move-Item target\release\OpenCADStudio.exe "OpenCADStudio-$tag-windows-x86_64-portable.exe" - Move-Item OpenCADStudio.msi "OpenCADStudio-$tag-windows-x86_64-installer.msi" + $exe = "OpenCADStudio-$tag-windows-x86_64-portable.exe" + $msi = "OpenCADStudio-$tag-windows-x86_64-installer.msi" + Move-Item target\release\OpenCADStudio.exe $exe + Move-Item OpenCADStudio.msi $msi + # SHA256 sidecars so downloads can be verified. + (Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower() + " $exe" | Out-File -Encoding ascii "$exe.sha256" + (Get-FileHash -Algorithm SHA256 $msi).Hash.ToLower() + " $msi" | Out-File -Encoding ascii "$msi.sha256" gh release upload $tag ` - "OpenCADStudio-$tag-windows-x86_64-portable.exe" ` - "OpenCADStudio-$tag-windows-x86_64-installer.msi" ` + $exe "$exe.sha256" ` + $msi "$msi.sha256" ` --clobber --repo ${{ github.repository }} build-macos: @@ -272,8 +281,10 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mv OpenCADStudio.dmg OpenCADStudio-${{ github.ref_name }}-macos-arm64.dmg - gh release upload ${{ github.ref_name }} OpenCADStudio-${{ github.ref_name }}-macos-arm64.dmg --clobber --repo ${{ github.repository }} + ASSET=OpenCADStudio-${{ github.ref_name }}-macos-arm64.dmg + mv OpenCADStudio.dmg "$ASSET" + shasum -a 256 "$ASSET" > "$ASSET.sha256" + gh release upload ${{ github.ref_name }} "$ASSET" "$ASSET.sha256" --clobber --repo ${{ github.repository }} - name: Emit Homebrew cask sha256 if: github.event_name == 'release' diff --git a/packaging/io.github.HakanSeven12.OpenCadStudio.metainfo.xml b/packaging/io.github.HakanSeven12.OpenCadStudio.metainfo.xml new file mode 100644 index 000000000..115d01086 --- /dev/null +++ b/packaging/io.github.HakanSeven12.OpenCadStudio.metainfo.xml @@ -0,0 +1,50 @@ + + + + io.github.HakanSeven12.OpenCadStudio + CC0-1.0 + GPL-3.0-or-later + + Open CAD Studio + 2D/3D CAD application for DWG and DXF drawings + + +

+ Open CAD Studio is a 2D/3D CAD application for creating and editing + technical drawings. It reads and writes the standard DWG and DXF file + formats so drawings stay compatible with other CAD software. +

+
+ + io.github.HakanSeven12.OpenCadStudio.desktop + + + Graphics + Engineering + + + + CAD + DWG + DXF + drawing + design + engineering + + + https://github.com/HakanSeven12/OpenCADStudio + https://github.com/HakanSeven12/OpenCADStudio/issues + + + Hakan Seven + + + + + + image/vnd.dwg + image/vnd.dxf + +
diff --git a/packaging/windows/main.wxs b/packaging/windows/main.wxs index efbf5abeb..ec91c907f 100644 --- a/packaging/windows/main.wxs +++ b/packaging/windows/main.wxs @@ -11,6 +11,7 @@ Provides: * Per-machine install under Program Files\Open CAD Studio. * Start Menu shortcut under Programs\Open CAD Studio. + * Desktop shortcut. * File associations for .dwg and .dxf via a single ProgID; both route through `OpenCADStudio.exe "%1"` so the OS hands the file path to the app as argv[1] (consumed in OpenCADStudio::boot). @@ -51,6 +52,15 @@ + + + + + @@ -195,14 +205,66 @@ + + + + + + + + - + + + + + + + + + NOT REMOVE + + diff --git a/packaging/windows/ui.wxs b/packaging/windows/ui.wxs index 026ebba3e..1814d9af2 100644 --- a/packaging/windows/ui.wxs +++ b/packaging/windows/ui.wxs @@ -6,7 +6,9 @@ (which needs `-ext WixUIExtension` for the WixUI_Minimal dialog set). Provides: - * WixUI_Minimal wizard (Welcome → Progress → Finish). + * WixUI_FeatureTree wizard (Welcome → License → Features → Progress → + Finish). The Features page lets the user deselect the optional Desktop + shortcut feature (default on). * A pre-ticked "Launch Open CAD Studio" checkbox on the finish screen that starts the freshly installed exe when the user clicks Finish. --> @@ -41,7 +43,7 @@ Impersonate='yes' /> - +