* Release under the SolidCraft name: binaries, assets and installers The desktop binary is now `solidcraft` and the CLI `solidcraft-cli` (the two app packages are renamed; their folders move with the rest of the rename later). Every release asset is named solidcraft-<ver>-… / SolidCraft-<ver>-windows-x64.exe, and the installers show the SolidCraft product name. Kept so existing installs keep updating (docs/compatibility.md): - `solvecraft-cli` alias binary in every package, forwarding to solidcraft-cli with a deprecation note on stderr (tests/legacy_alias.rs). - Linux app ID ai.storyteller.solvecraft (Flatpak ID, desktop entry, Wayland app_id). - MSI UpgradeCode, so the MSI upgrades in place. - deb Replaces/Conflicts/Provides and rpm Obsoletes/Provides solvecraft. - An old-named .zsync copy so earlier AppImages find updates; a legacy .flatpakrepo copy. - .solvecraft file associations; SOLVECRAFT_* fallbacks in the packaging scripts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT * MSI: register the legacy .solvecraft extension without a duplicate open verb Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
140 lines
9.8 KiB
XML
140 lines
9.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
SolidCraft MSI (WiX Toolset v5, plus the UI and Util extensions). Built by package.ps1:
|
|
|
|
wix build solidcraft.wxs -arch x64 -ext WixToolset.UI.wixext -ext WixToolset.Util.wixext
|
|
-culture en-US -loc solidcraft.en-us.wxl -d Version=1.2.3 -d DisplayVersion=1.2.3-rc.1
|
|
-d BinDir=... -d IconPath=... -o out.msi
|
|
|
|
Per-machine install with a setup wizard: Welcome, install folder (Program Files\SolidCraft by
|
|
default, remembered for upgrades), Ready, progress, and a Finish page with a ticked "Launch
|
|
SolidCraft" box. Installs a Start Menu shortcut, solidcraft-cli, the licence files (including
|
|
THIRD-PARTY-LICENSES.txt), makes SolidCraft the owner of `.solidcraft` (and of the pre-rename `.solvecraft`), and offers it under
|
|
"Open with" for STEP, IGES, 3MF and STL. `msiexec /qn` installs silently.
|
|
Adapted from PhotoCraft's (storytold/photocraft, Apache-2.0; see ATTRIBUTION.md).
|
|
-->
|
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
|
xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
|
<!-- Never change the UpgradeCode: it is what lets a new MSI replace every earlier install,
|
|
including those from before the SolveCraft -> SolidCraft rename (docs/compatibility.md). -->
|
|
<Package
|
|
Name="SolidCraft"
|
|
Manufacturer="SolidCraft contributors"
|
|
Version="$(var.Version)"
|
|
UpgradeCode="6A145FD6-D285-428D-AE84-A69570CDF4DB"
|
|
Scope="perMachine"
|
|
Compressed="yes"
|
|
Language="1033">
|
|
<SummaryInformation Description="SolidCraft parametric 3D CAD" Manufacturer="SolidCraft contributors" />
|
|
<!-- Same-version upgrades let successive pre-releases of one X.Y.Z replace each other. -->
|
|
<MajorUpgrade AllowSameVersionUpgrades="yes"
|
|
DowngradeErrorMessage="A newer version of SolidCraft is already installed." />
|
|
<MediaTemplate EmbedCab="yes" CompressionLevel="high" />
|
|
|
|
<!-- Advertised shortcuts to an .exe need an .exe icon identifier (ICE50). -->
|
|
<Icon Id="SolidcraftIcon.exe" SourceFile="$(var.IconPath)" />
|
|
<Property Id="ARPPRODUCTICON" Value="SolidcraftIcon.exe" />
|
|
<Property Id="ARPURLINFOABOUT" Value="https://bherbruck.github.io/solidcraft/" />
|
|
<Property Id="ARPURLUPDATEINFO" Value="https://github.com/bherbruck/solidcraft/releases" />
|
|
<Property Id="ARPHELPLINK" Value="https://github.com/bherbruck/solidcraft/issues" />
|
|
|
|
<StandardDirectory Id="ProgramFiles6432Folder">
|
|
<Directory Id="INSTALLFOLDER" Name="SolidCraft" />
|
|
</StandardDirectory>
|
|
<StandardDirectory Id="ProgramMenuFolder" />
|
|
|
|
<!-- An upgrade installs where the user put the previous version (written by SolidcraftApp). -->
|
|
<!-- Since the rename the folder and this key say SolidCraft. A pre-rename install recorded
|
|
Software\SolveCraft, which isn't read: its upgrade (same UpgradeCode) removes the old
|
|
folder and installs into Program Files\SolidCraft (docs/compatibility.md). -->
|
|
<Property Id="INSTALLFOLDER">
|
|
<RegistrySearch Id="PreviousInstallFolder" Root="HKLM" Key="Software\SolidCraft" Name="InstallDir" Type="raw" />
|
|
</Property>
|
|
|
|
<Feature Id="Main" Title="SolidCraft" Level="1">
|
|
<ComponentGroupRef Id="SolidcraftFiles" />
|
|
</Feature>
|
|
|
|
<!-- WixUI_InstallDir without its licence page (MIT OR Apache-2.0: nothing to accept). -->
|
|
<ui:WixUI Id="WixUI_InstallDir" InstallDirectory="INSTALLFOLDER" />
|
|
<UI>
|
|
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2" Condition="NOT Installed" />
|
|
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2" />
|
|
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchSolidcraft"
|
|
Condition="WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 AND NOT Installed" />
|
|
</UI>
|
|
|
|
<Property Id="SolidcraftVersion" Value="$(var.DisplayVersion)" />
|
|
<Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="SolidCraft $(var.DisplayVersion) is installed. You can start it any time from the Start menu." />
|
|
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch SolidCraft" />
|
|
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />
|
|
<Property Id="WixShellExecTarget" Value="[#SolidcraftExe]" />
|
|
<!-- Runs in the wizard's own (unelevated) process, so the app starts as the user. -->
|
|
<CustomAction Id="LaunchSolidcraft" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" />
|
|
</Package>
|
|
|
|
<Fragment>
|
|
<ComponentGroup Id="SolidcraftFiles" Directory="INSTALLFOLDER">
|
|
<!-- A new GUID with the rename: the key file changed from solvecraft.exe to solidcraft.exe.
|
|
The UpgradeCode above is unchanged, so this MSI major-upgrades a pre-rename install. -->
|
|
<Component Id="SolidcraftApp" Guid="A379D509-D776-4B34-A3A4-71FBF5724971">
|
|
<File Id="SolidcraftExe" Source="$(var.BinDir)\solidcraft.exe" KeyPath="yes">
|
|
<Shortcut Id="StartMenuShortcut" Directory="ProgramMenuFolder" Name="SolidCraft"
|
|
Description="SolidCraft parametric 3D CAD" WorkingDirectory="INSTALLFOLDER" Advertise="yes"
|
|
Icon="SolidcraftIcon.exe" IconIndex="0" />
|
|
</File>
|
|
|
|
<!-- .solidcraft: SolidCraft's own format; SolidCraft is its default app. -->
|
|
<ProgId Id="Solidcraft.Design" Description="SolidCraft Design" Icon="SolidcraftExe" IconIndex="0">
|
|
<Extension Id="solidcraft" ContentType="application/x-solidcraft">
|
|
<Verb Id="open" Command="Open" TargetFile="SolidcraftExe" Argument=""%1"" />
|
|
</Extension>
|
|
</ProgId>
|
|
<!-- Compatibility shim (docs/compatibility.md): designs saved before the rename open as
|
|
the same ProgId. Registered by hand: a second Extension under one ProgId would write
|
|
its open verb twice (WIX0091). -->
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.solvecraft" Value="Solidcraft.Design" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.solvecraft" Name="Content Type" Value="application/x-solvecraft" Type="string" />
|
|
<!-- STEP, IGES and meshes: offered under "Open with", never forced as the default. -->
|
|
<ProgId Id="Solidcraft.Model" Description="3D model" Icon="SolidcraftExe" IconIndex="0" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Solidcraft.Model\shell\open\command" Value=""[#SolidcraftExe]" "%1"" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.step\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.stp\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.igs\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.iges\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.3mf\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\.stl\OpenWithProgids" Name="Solidcraft.Model" Value="" Type="string" />
|
|
|
|
<!-- "Open with" app list and the Run dialog (Win+R "solidcraft"). -->
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe" Name="FriendlyAppName" Value="SolidCraft" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\shell\open\command" Value=""[#SolidcraftExe]" "%1"" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".solidcraft" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".solvecraft" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".step" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".stp" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".igs" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".iges" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".3mf" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\solidcraft.exe\SupportedTypes" Name=".stl" Value="" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\App Paths\solidcraft.exe" Value="[#SolidcraftExe]" Type="string" />
|
|
<RegistryValue Root="HKLM" Key="Software\SolidCraft" Name="InstallDir" Value="[INSTALLFOLDER]" Type="string" />
|
|
</Component>
|
|
|
|
<Component Id="SolidcraftCli">
|
|
<File Id="SolidcraftCliExe" Source="$(var.BinDir)\solidcraft-cli.exe" KeyPath="yes" />
|
|
</Component>
|
|
<!-- Compatibility shim (docs/compatibility.md): the old CLI name, forwarding to solidcraft-cli. -->
|
|
<Component Id="SolidcraftCliAlias">
|
|
<File Id="SolvecraftCliAliasExe" Source="$(var.BinDir)\solvecraft-cli.exe" KeyPath="yes" />
|
|
</Component>
|
|
<!-- Several unversioned files: an explicit GUID (WIX0367). -->
|
|
<Component Id="SolidcraftLicences" Guid="CDEDEE8D-4BE9-4872-A2EA-EE623A6C7E91">
|
|
<File Id="LicenseMit" Source="$(var.BinDir)\LICENSE-MIT" KeyPath="yes" />
|
|
<File Id="LicenseApache" Source="$(var.BinDir)\LICENSE-APACHE" />
|
|
<File Id="Notice" Source="$(var.BinDir)\NOTICE" />
|
|
<File Id="ThirdParty" Source="$(var.BinDir)\THIRD-PARTY-LICENSES.txt" />
|
|
</Component>
|
|
</ComponentGroup>
|
|
</Fragment>
|
|
</Wix>
|