feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
<?xml version='1.0' encoding='windows-1252'?>
|
|
|
|
|
<!--
|
|
|
|
|
WiX source for the Windows MSI installer.
|
|
|
|
|
|
|
|
|
|
Build (CI / locally with WiX Toolset 3.x in PATH):
|
|
|
|
|
candle.exe -arch x64 -dVersion=<x.y.z> -dSource=target\release\OpenCADStudio.exe \
|
|
|
|
|
-dIcon=packaging\windows\AppIcon.ico packaging\windows\main.wxs \
|
|
|
|
|
-out packaging\windows\main.wixobj
|
2026-06-12 07:24:36 +00:00
|
|
|
light.exe packaging\windows\main.wixobj -ext WixUIExtension -out OpenCADStudio.msi
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
|
|
|
|
|
Provides:
|
|
|
|
|
* Per-machine install under Program Files\Open CAD Studio.
|
|
|
|
|
* Start Menu shortcut under Programs\Open CAD Studio.
|
2026-06-16 04:27:46 +03:00
|
|
|
* Desktop shortcut.
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
* 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).
|
2026-06-12 07:30:49 +00:00
|
|
|
* Default Programs registration (Capabilities + RegisteredApplications)
|
|
|
|
|
so the app shows up in Settings > Default Apps and can be set as the
|
|
|
|
|
default handler for .dwg / .dxf.
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
* Standard Add/Remove Programs entry with icon.
|
|
|
|
|
* MajorUpgrade — installing a newer MSI replaces the old version.
|
|
|
|
|
-->
|
|
|
|
|
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
|
|
|
|
<Product
|
|
|
|
|
Id='*'
|
|
|
|
|
Name='Open CAD Studio'
|
|
|
|
|
UpgradeCode='bd6bceab-6c7a-4ce2-a62d-6ef06a92f8b1'
|
|
|
|
|
Manufacturer='Hakan Seven'
|
|
|
|
|
Language='1033'
|
|
|
|
|
Codepage='1252'
|
|
|
|
|
Version='$(var.Version)'>
|
|
|
|
|
|
|
|
|
|
<Package
|
|
|
|
|
Id='*'
|
|
|
|
|
Keywords='Installer'
|
|
|
|
|
Description='Open CAD Studio Installer'
|
|
|
|
|
Manufacturer='Hakan Seven'
|
|
|
|
|
InstallerVersion='450'
|
|
|
|
|
Languages='1033'
|
|
|
|
|
Compressed='yes'
|
|
|
|
|
InstallScope='perMachine'
|
|
|
|
|
SummaryCodepage='1252' />
|
|
|
|
|
|
|
|
|
|
<MajorUpgrade
|
|
|
|
|
Schedule='afterInstallInitialize'
|
|
|
|
|
DowngradeErrorMessage='A newer version of [ProductName] is already installed. Setup will now exit.' />
|
|
|
|
|
|
|
|
|
|
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
|
|
|
|
|
|
|
|
|
|
<Icon Id='AppIcon.ico' SourceFile='$(var.Icon)' />
|
|
|
|
|
<Property Id='ARPPRODUCTICON' Value='AppIcon.ico' />
|
|
|
|
|
<Property Id='ARPHELPLINK' Value='https://github.com/HakanSeven12/OpenCADStudio' />
|
|
|
|
|
<Property Id='ARPURLINFOABOUT' Value='https://github.com/HakanSeven12/OpenCADStudio' />
|
2026-06-16 04:27:46 +03:00
|
|
|
<Property Id='ARPURLUPDATEINFO' Value='https://github.com/HakanSeven12/OpenCADStudio/releases' />
|
|
|
|
|
<Property Id='ARPCONTACT' Value='Hakan Seven' />
|
|
|
|
|
<Property Id='ARPCOMMENTS' Value='2D/3D CAD application for DWG and DXF drawings.' />
|
|
|
|
|
<!--
|
|
|
|
|
Hide "Repair" from the Apps & Features entry — there is no repair flow.
|
|
|
|
|
"Modify" is deliberately left enabled: WixUI_FeatureTree supports it, so
|
|
|
|
|
users can add/remove the optional Desktop shortcut feature later.
|
|
|
|
|
-->
|
|
|
|
|
<Property Id='ARPNOREPAIR' Value='1' />
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
|
|
|
|
|
<Directory Id='TARGETDIR' Name='SourceDir'>
|
|
|
|
|
<Directory Id='ProgramFiles64Folder'>
|
|
|
|
|
<Directory Id='APPLICATIONROOTDIRECTORY' Name='Open CAD Studio'>
|
|
|
|
|
|
|
|
|
|
<Component Id='MainExecutable' Guid='2900c116-e9a5-4650-8a4c-48c0987d1a33' Win64='yes'>
|
|
|
|
|
<File
|
|
|
|
|
Id='OpenCADStudioEXE'
|
|
|
|
|
Name='OpenCADStudio.exe'
|
|
|
|
|
DiskId='1'
|
|
|
|
|
Source='$(var.Source)'
|
|
|
|
|
KeyPath='yes'>
|
|
|
|
|
<Shortcut
|
|
|
|
|
Id='StartMenuShortcut'
|
|
|
|
|
Directory='ProgramMenuDir'
|
|
|
|
|
Name='Open CAD Studio'
|
|
|
|
|
Description='Launch Open CAD Studio'
|
|
|
|
|
WorkingDirectory='APPLICATIONROOTDIRECTORY'
|
|
|
|
|
Icon='AppIcon.ico'
|
|
|
|
|
IconIndex='0'
|
|
|
|
|
Advertise='yes' />
|
|
|
|
|
</File>
|
|
|
|
|
|
|
|
|
|
<!--
|
2026-05-30 00:20:30 +03:00
|
|
|
File associations. Two ProgIDs (one per extension) so the
|
|
|
|
|
`<Verb Id='open'>` rows don't collide on the same registry
|
|
|
|
|
primary key — both ProgIDs invoke the same exe with the
|
|
|
|
|
file path as `argv[1]`.
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
-->
|
|
|
|
|
<ProgId
|
2026-05-30 00:20:30 +03:00
|
|
|
Id='OpenCADStudio.DWG'
|
|
|
|
|
Description='DWG Drawing'
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
Icon='OpenCADStudioEXE'
|
|
|
|
|
IconIndex='0'>
|
|
|
|
|
<Extension Id='dwg' ContentType='image/vnd.dwg'>
|
|
|
|
|
<Verb Id='open' Command='Open' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
|
|
|
|
|
</Extension>
|
2026-05-30 00:20:30 +03:00
|
|
|
</ProgId>
|
|
|
|
|
|
|
|
|
|
<ProgId
|
|
|
|
|
Id='OpenCADStudio.DXF'
|
|
|
|
|
Description='DXF Drawing'
|
|
|
|
|
Icon='OpenCADStudioEXE'
|
|
|
|
|
IconIndex='0'>
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
<Extension Id='dxf' ContentType='image/vnd.dxf'>
|
|
|
|
|
<Verb Id='open' Command='Open' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
|
|
|
|
|
</Extension>
|
|
|
|
|
</ProgId>
|
|
|
|
|
</Component>
|
|
|
|
|
|
2026-06-12 07:30:49 +00:00
|
|
|
<!--
|
|
|
|
|
Default Programs registration. The ProgId/Extension rows above
|
|
|
|
|
register the handlers, but modern Windows (8+) guards the actual
|
|
|
|
|
default via a per-user UserChoice hash an installer can't forge.
|
|
|
|
|
Publishing Capabilities + a RegisteredApplications entry is the
|
|
|
|
|
supported way in: it makes Open CAD Studio appear in Settings >
|
|
|
|
|
Default Apps and the "Open with" list, so .dwg / .dxf can be set
|
|
|
|
|
to it. The keys are HKLM-wide, so the shell picks them up on its
|
|
|
|
|
next association query without a forced refresh.
|
|
|
|
|
-->
|
|
|
|
|
<Component Id='DefaultPrograms' Guid='6f3e9b2a-1c4d-4f8a-9b7e-2d5a8c1f0e63' Win64='yes'>
|
2026-06-12 11:42:41 +00:00
|
|
|
<!--
|
|
|
|
|
Applications\<exename>\DefaultIcon is what Windows shows in the
|
|
|
|
|
"Open with" context-menu list and "Choose another app" picker.
|
|
|
|
|
Without it the entry appears with a blank generic document icon.
|
|
|
|
|
-->
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe\DefaultIcon'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='[APPLICATIONROOTDIRECTORY]OpenCADStudio.exe,0'
|
|
|
|
|
KeyPath='yes' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe'
|
|
|
|
|
Name='FriendlyAppName'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='Open CAD Studio' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe\shell\open\command'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='"[APPLICATIONROOTDIRECTORY]OpenCADStudio.exe" "%1"' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe\SupportedTypes'
|
|
|
|
|
Name='.dwg'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe\SupportedTypes'
|
|
|
|
|
Name='.dxf'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='' />
|
2026-06-12 07:30:49 +00:00
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='Software\Open CAD Studio\Capabilities'
|
|
|
|
|
Name='ApplicationName'
|
|
|
|
|
Type='string'
|
2026-06-12 11:42:41 +00:00
|
|
|
Value='Open CAD Studio' />
|
2026-06-12 07:30:49 +00:00
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='Software\Open CAD Studio\Capabilities'
|
|
|
|
|
Name='ApplicationDescription'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='2D/3D CAD application for DWG and DXF drawings.' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='Software\Open CAD Studio\Capabilities\FileAssociations'
|
|
|
|
|
Name='.dwg'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='OpenCADStudio.DWG' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='Software\Open CAD Studio\Capabilities\FileAssociations'
|
|
|
|
|
Name='.dxf'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='OpenCADStudio.DXF' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKLM'
|
|
|
|
|
Key='Software\RegisteredApplications'
|
|
|
|
|
Name='Open CAD Studio'
|
|
|
|
|
Type='string'
|
|
|
|
|
Value='Software\Open CAD Studio\Capabilities' />
|
|
|
|
|
</Component>
|
|
|
|
|
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
</Directory>
|
|
|
|
|
</Directory>
|
|
|
|
|
|
|
|
|
|
<Directory Id='ProgramMenuFolder'>
|
|
|
|
|
<Directory Id='ProgramMenuDir' Name='Open CAD Studio'>
|
|
|
|
|
<Component Id='ProgramMenuDirComp' Guid='34a788ba-f9d4-4e73-b1ff-9eb8749b369e'>
|
|
|
|
|
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKCU'
|
|
|
|
|
Key='Software\Open CAD Studio'
|
|
|
|
|
Name='installed'
|
|
|
|
|
Type='integer'
|
|
|
|
|
Value='1'
|
|
|
|
|
KeyPath='yes' />
|
|
|
|
|
</Component>
|
|
|
|
|
</Directory>
|
|
|
|
|
</Directory>
|
2026-06-16 04:27:46 +03:00
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
Desktop shortcut. A non-advertised shortcut with an explicit Target;
|
|
|
|
|
the HKCU registry value is the component KeyPath (a shortcut on its own
|
|
|
|
|
cannot be a KeyPath for a per-user resource).
|
|
|
|
|
-->
|
|
|
|
|
<Directory Id='DesktopFolder' Name='Desktop'>
|
|
|
|
|
<Component Id='DesktopShortcutComp' Guid='c5c7f1c4-3d8a-4efd-b049-4662d9143dcd'>
|
|
|
|
|
<Shortcut
|
|
|
|
|
Id='DesktopShortcut'
|
|
|
|
|
Name='Open CAD Studio'
|
|
|
|
|
Description='Launch Open CAD Studio'
|
|
|
|
|
Target='[APPLICATIONROOTDIRECTORY]OpenCADStudio.exe'
|
|
|
|
|
WorkingDirectory='APPLICATIONROOTDIRECTORY'
|
|
|
|
|
Icon='AppIcon.ico'
|
|
|
|
|
IconIndex='0' />
|
|
|
|
|
<RegistryValue
|
|
|
|
|
Root='HKCU'
|
|
|
|
|
Key='Software\Open CAD Studio'
|
|
|
|
|
Name='desktop_shortcut'
|
|
|
|
|
Type='integer'
|
|
|
|
|
Value='1'
|
|
|
|
|
KeyPath='yes' />
|
|
|
|
|
</Component>
|
|
|
|
|
</Directory>
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
</Directory>
|
|
|
|
|
|
2026-06-16 04:27:46 +03:00
|
|
|
<Feature Id='Complete' Title='Open CAD Studio' Level='1' Display='expand'>
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
<ComponentRef Id='MainExecutable' />
|
2026-06-12 07:30:49 +00:00
|
|
|
<ComponentRef Id='DefaultPrograms' />
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
<ComponentRef Id='ProgramMenuDirComp' />
|
2026-06-16 04:27:46 +03:00
|
|
|
<!-- Optional, user-deselectable in the feature tree (default on). -->
|
|
|
|
|
<Feature
|
|
|
|
|
Id='DesktopShortcut'
|
|
|
|
|
Title='Desktop shortcut'
|
|
|
|
|
Description='Add a shortcut to Open CAD Studio on the desktop.'
|
|
|
|
|
Level='1'
|
|
|
|
|
Absent='allow'>
|
|
|
|
|
<ComponentRef Id='DesktopShortcutComp' />
|
|
|
|
|
</Feature>
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
</Feature>
|
|
|
|
|
|
2026-06-16 04:27:46 +03:00
|
|
|
<!--
|
|
|
|
|
Refresh the shell after install so the new .dwg / .dxf file-type icons
|
|
|
|
|
and associations appear immediately instead of only after a reboot or an
|
|
|
|
|
icon-cache rebuild. `ie4uinit -show` rebuilds the per-user icon cache.
|
|
|
|
|
Immediate execution keeps property access ([SystemFolder]); Return='ignore'
|
|
|
|
|
means it can never fail the install, and the NOT REMOVE condition skips it
|
|
|
|
|
on uninstall.
|
|
|
|
|
-->
|
|
|
|
|
<CustomAction
|
|
|
|
|
Id='RefreshShellIcons'
|
|
|
|
|
Directory='APPLICATIONROOTDIRECTORY'
|
|
|
|
|
ExeCommand='"[SystemFolder]ie4uinit.exe" -show'
|
|
|
|
|
Execute='immediate'
|
|
|
|
|
Return='ignore' />
|
|
|
|
|
<InstallExecuteSequence>
|
|
|
|
|
<Custom Action='RefreshShellIcons' After='InstallFinalize'>NOT REMOVE</Custom>
|
|
|
|
|
</InstallExecuteSequence>
|
|
|
|
|
|
2026-06-12 07:28:04 +00:00
|
|
|
<!-- Installer UI + finish-screen launch checkbox (see ui.wxs). -->
|
|
|
|
|
<UIRef Id='OpenCADStudioUI' />
|
2026-06-12 07:24:36 +00:00
|
|
|
|
feat(packaging): open files from argv, ship Windows MSI installer (#36)
Cross-platform prerequisite for OS-level file associations: the boot
task now consumes `std::env::args_os().nth(1)` as a path and dispatches
`Message::OpenRecent` for it. Flag-style args (starting with `-`) are
ignored, and `OpenRecent` already does the file-existence check, so a
bogus path lands as a clean command-line error instead of a panic.
Linux: the AppImage's desktop entry adds `image/vnd.dwg` alongside the
existing `image/vnd.dxf` MIME type and grows a `%f` placeholder in
`Exec=` so the launcher forwards the picked file path. Once the
AppImage is integrated with the system (xdg-mime / AppImageLauncher),
double-clicking a .dwg / .dxf opens it in Open CAD Studio.
Windows: new `packaging/windows/main.wxs` defines an MSI installer —
per-machine install to `Program Files\Open CAD Studio`, Start Menu
shortcut, `MajorUpgrade` so newer MSIs replace older ones, and a
single ProgID `OpenCADStudio.Drawing` that owns both `.dwg` and
`.dxf` and launches the exe with the file as `argv[1]`. The icon is
pulled from the SVG logo, converted to multi-resolution ICO at build
time with the runner's pre-installed ImageMagick. CI now also runs
`candle` / `light` (WiX Toolset 3, pre-installed on `windows-latest`)
and uploads both the bare `.exe` (portable) and `.msi` (installer)
to the release.
macOS Info.plist already declares the DWG / DXF UTIs; combined with
the argv-handling change above, double-clicking a drawing in Finder
will open it in Open CAD Studio without further packaging changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:14 +03:00
|
|
|
</Product>
|
|
|
|
|
</Wix>
|