Skip to content

Conversation

@eff3ry
Copy link

@eff3ry eff3ry commented Aug 12, 2025

Progress towards #3118 as an installer of sorts is needed for a WinGet package

This pull request adds support for building a Windows MSI installer for SuperSlicer using the WiX Toolset. The changes automate the creation of an MSI package in the CI workflow and introduce a new WiX installer definition.

MSI Installer Build Integration:

  • Updated .github/workflows/ccpp_win.yml to install WiX Toolset, harvest build files, generate a versioned installer, build the MSI using WiX, and upload the resulting artifact.

WiX Installer Definition:

  • Added a new installer.wxs file that defines the structure and behavior of the MSI installer, including, uninstall cleanup

supermerill and others added 30 commits February 1, 2025 12:37
On the first layer, after a travel:
move a bit of the extrusion at the start, while not moving, do increase the squish of the start.
when two parts in the same object have a different extruder:
slice_merge_min_width: don't remove areas thinner than that fromother parts, remove it from yourself (if it intersect).
slice_merge_dent: when another part remove areas from you, keep this width from the removal.
resolve WipeTowerIntegration.cpp / filament_pressure_advance
…safe it by using double or by shifting the bits to remove enough of the epsilon-part to be safe to multiply.

note: when doing dot or other computation, the removal of the epsilon part when trying to simplify by epsilon lead to great imprecision.
note: simplify_quick coded but not tested (only suitable for EPSILON-like simplification)
note: need to check which version (int vs double) is the quickest.
note: need to optimize the douglas-peuker for the worst case (nothing to remove)
…ngs avoid_travel_island & avoid_travel_island_weight)
…uded this layer for each extruder (vector of float).

supermerill: updated to comply with 2.7, remove the variable in the stat, it's not needed rn.
supermerill#4380
Add extra perimeters where the area is smaller than the setting value.
@eff3ry
Copy link
Author

eff3ry commented Aug 19, 2025

its probably not very polished right now, kinda short on time as well :)

@eff3ry
Copy link
Author

eff3ry commented Aug 27, 2025

Currently the version number is extracted from version.inc i.e. SLIC3R_VERSION_FULL "2.7.62.0"
for the nightly workflow file the trailing 0 is replaced by the current date i.e. yyMMdd
and on the release candidate workflow the version number is just used as is from the version.inc file

also on the nightly workflow file the product name is set with a suffix so the full product name is like SuperSlicer-Beta-Nightly

@eff3ry eff3ry marked this pull request as ready for review August 27, 2025 07:09
@eff3ry eff3ry requested a review from supermerill as a code owner August 27, 2025 07:09
@eff3ry
Copy link
Author

eff3ry commented Sep 2, 2025

Sorry had to fix some names from nightly to rc on the Release Candidate workflow, should be fixed now :)

@supermerill
Copy link
Owner

tried it.
Had to change the name of the import for rc to rc (like you just did).
The nightly seems to work, have to retry the rc one next time.

@supermerill
Copy link
Owner

supermerill commented Sep 5, 2025

D:\a\SuperSlicer\SuperSlicer\winInstaller.wxs(2) : error CNDL0108 : The Product/@Version attribute's value, '2.7.61.9.250904', is not a valid version. Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534.

But it succeed with 2.7.62.250901
Should I remove the latest version bit (here the '9') to put the date?

Also, it seems like the upper limit of 65534 isn't enforced.

@eff3ry
Copy link
Author

eff3ry commented Sep 6, 2025

D:\a\SuperSlicer\SuperSlicer\winInstaller.wxs(2) : error CNDL0108 : The Product/@Version attribute's value, '2.7.61.9.250904', is not a valid version. Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534.

But it succeed with 2.7.62.250901 Should I remove the latest version bit (here the '9') to put the date?

Also, it seems like the upper limit of 65534 isn't enforced.

oh yeah, the workflow is trying to replace the last 0 in the version number with the date,
we could change this to just use the version number as it is from the version file

@supermerill
Copy link
Owner

I've updated the msi creation with 4ac150f
it move the windows fil in the windows-only directory, and I changed from hardcoded names to using the ones from the version.ini
I'll integrate your last two commit rn.

@supermerill
Copy link
Owner

supermerill commented Sep 17, 2025

I'll replace ProgramFilesFolder by ProgramFiles64Folder, as it's a 64b program.

I have some questions:

  • how did you get/generate the guid (Product -> UpgradeCode). It seems used to identify the software, and if used by a fork, it wants to erase superslicer, so I need a way to generate new ones.
  • How to have the currently used path when you upgrade? Currently, it display c:/program files/superslicer even if I installed it somewhere else. I saw that https://stackoverflow.com/questions/55964/make-wix-installation-set-upgrade-to-the-same-folder and I guess I need to save the path in a registry key (where do I need to put the RegistryValue item?) and then use the <Property Id="INSTALLDIR"> <RegistrySearch ... to get it and set it inside the INSTALLDIR before the <Directory item?

@eff3ry
Copy link
Author

eff3ry commented Sep 20, 2025

hey, no worries

  1. I generated the GUID via powershell running [guid]::NewGuid() i suppose you can generate this once and keep it in github secrets, and load it in via the workflow that way no other programs can use the same GUID

  2. it seems you're correct about the registry entry, ill look into it and see if i can get something working

@eff3ry
Copy link
Author

eff3ry commented Sep 20, 2025

also if the licence file is saying AGPLv3 instead of GPLv3 it will be a processing error i believe

The installer now reads and writes the installation directory to the HKCU\Software\SuperSlicer registry key. This enables detection of previous install locations
@supermerill supermerill force-pushed the nightly_dev branch 5 times, most recently from fe5af4c to e5004df Compare November 27, 2025 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants