Files
deckcraft/packaging/windows/slidecraft.wxs
T
Brandon ThomasandClaude Opus 5.5 0b394ad433 Web build and release CI: slidecraft-web, packaging, release workflow
- apps/slidecraft-web: SlideApp in the browser via eframe's web runner (trunk; WebGPU with
  WebGL2 fallback). Opens the sample deck (?blank for empty, ?show to present, ?webgl to force
  WebGL2). Open/Insert use the browser file picker through Services::open_async + inbox;
  Save/Export download; dropped files are read asynchronously.
- ui-egui: native-only synchronous drop handling (wasm uses the inbox), real clock on wasm
  (js_sys::Date::now), About shows build commit/date when SLIDECRAFT_BUILD_SHA/DATE are set.
- .github/workflows/release.yml (push to `release` / workflow_dispatch): macOS universal
  signed+notarized dmg, Windows x64/x86 signed msi + portable zip, Linux AppImage/deb/rpm/tar.gz
  (x86_64, aarch64), Flatpak bundle, FreeBSD tar.gz (vmactions), web zip; draft GitHub Release
  "SlideCraft v<version>" from [workspace.package] version. Same secret names as DesignCraft.
- freebsd.yml and packaging-lint.yml CI, ported from DesignCraft.
- packaging/: macOS (Info.plist, entitlements, cert import), Windows (WiX with new UpgradeCode,
  .slidecraft ProgId, Open-with for pptx), Linux (.desktop, AppStream, MIME, nfpm, Flatpak),
  FreeBSD and web scripts; shared setup in packaging/common.sh.
- apps/slidecraft/build.rs embeds icon + VERSIONINFO on Windows; slidecraft.icns/.ico generated
  from the committed PNGs by packaging/icons.sh.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:53:58 -04:00

81 lines
4.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
SlideCraft MSI (WiX Toolset v5: `dotnet tool install -g wix`). Built by package.ps1:
wix build slidecraft.wxs -arch x64 -d Version=1.2.3 -d BinDir=... -d IconPath=... -o out.msi
Per-machine install into Program Files, a Start Menu shortcut, `.slidecraft` owned by
SlideCraft, and SlideCraft offered under "Open with" for .pptx/.potx/.ppsx (without taking over
the user's default app for them).
UpgradeCode is fixed for SlideCraft forever (playbook §6); never change it.
-->
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Package
Name="SlideCraft"
Manufacturer="Learning Machines LLC"
Version="$(var.Version)"
UpgradeCode="6F9C69E7-7825-40D2-BF26-C274DA676425"
Scope="perMachine"
Compressed="yes"
Language="1033">
<SummaryInformation Description="SlideCraft presentations and slide shows" Manufacturer="Learning Machines LLC" />
<!-- Same-version upgrades let successive pre-releases of one X.Y.Z replace each other
(MSI versions are numeric, so 1.2.3-rc.1 and 1.2.3-rc.2 are both 1.2.3). -->
<MajorUpgrade AllowSameVersionUpgrades="yes"
DowngradeErrorMessage="A newer version of SlideCraft is already installed." />
<MediaTemplate EmbedCab="yes" CompressionLevel="high" />
<Icon Id="SlidecraftIcon.ico" SourceFile="$(var.IconPath)" />
<Property Id="ARPPRODUCTICON" Value="SlidecraftIcon.ico" />
<Property Id="ARPURLINFOABOUT" Value="https://getartcraft.com/apps/slidecraft" />
<Property Id="ARPURLUPDATEINFO" Value="https://getartcraft.com/apps/slidecraft" />
<Property Id="ARPHELPLINK" Value="https://discord.gg/artcraft" />
<StandardDirectory Id="ProgramFiles6432Folder">
<Directory Id="INSTALLFOLDER" Name="SlideCraft" />
</StandardDirectory>
<StandardDirectory Id="ProgramMenuFolder" />
<Feature Id="Main" Title="SlideCraft" Level="1">
<ComponentGroupRef Id="SlidecraftFiles" />
</Feature>
</Package>
<Fragment>
<ComponentGroup Id="SlidecraftFiles" Directory="INSTALLFOLDER">
<Component Id="SlidecraftApp" Guid="D87EA444-41A4-4C19-922E-66D1A29461FF">
<File Id="SlidecraftExe" Source="$(var.BinDir)\slidecraft.exe" KeyPath="yes">
<Shortcut Id="StartMenuShortcut" Directory="ProgramMenuFolder" Name="SlideCraft"
Description="SlideCraft presentations and slide shows" WorkingDirectory="INSTALLFOLDER" Advertise="yes"
Icon="SlidecraftIcon.ico" IconIndex="0" />
</File>
<!-- .slidecraft: SlideCraft's own format. -->
<ProgId Id="SlideCraft.Presentation" Description="SlideCraft Presentation" Icon="SlidecraftExe" IconIndex="0">
<Extension Id="slidecraft" ContentType="application/x-slidecraft">
<Verb Id="open" Command="Open" TargetFile="SlidecraftExe" Argument="&quot;%1&quot;" />
</Extension>
</ProgId>
<!-- "Open with" for PowerPoint formats, without becoming the default. -->
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe" Name="FriendlyAppName" Value="SlideCraft" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe\shell\open\command" Value="&quot;[#SlidecraftExe]&quot; &quot;%1&quot;" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe\SupportedTypes" Name=".slidecraft" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe\SupportedTypes" Name=".pptx" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe\SupportedTypes" Name=".potx" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\Applications\slidecraft.exe\SupportedTypes" Name=".ppsx" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\.pptx\OpenWithProgids" Name="SlideCraft.Presentation" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\.potx\OpenWithProgids" Name="SlideCraft.Presentation" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Classes\.ppsx\OpenWithProgids" Name="SlideCraft.Presentation" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\App Paths\slidecraft.exe" Value="[#SlidecraftExe]" Type="string" />
</Component>
<Component Id="SlidecraftCli">
<File Id="SlidecraftCliExe" Source="$(var.BinDir)\slidecraft-cli.exe" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>