You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Investigate and make use of Windows Installer code in NUT for Windows codebase #1485
Now build-mingw-nut.sh has a couple of routines to do a recursive walk to fetch many (open-source third-party) DLLs from mingw build environment. In the end they are dumped to bin dir (for drivers and tools), with links added later into sbin dir per needs of system daemons, because run-time DLLs must be near EXE (if not in system paths).
This logic can be extracted to standalone script to use in package (or other bundling) preparation.
...such component GUIDs effectively encode the full packaged path to installed file (whatever version), to the point that "*" or "\*" might be used for WIX to generate one unambiguously. They should not be updated for newer releases of the component files, if they land to the same location. There are also product GUIDs that should differ for each release (each build from separate source revisions?) and can also be generated by an asterisk. So one big headache less here.
There is also a recently revived effort for WixEdit GUI editor to help with the package recipe maintenance:
Also took a quick look at other popular options, e.g.:
Nullsoft Scriptable Install System (NSIS) - https://sourceforge.net/projects/nsis/ only seems to allow creating Setup.exe style distributions (MSI made by WIX is allegedly better integrated for corporate automated installations/updates across many systems, which may be fairly important for NUT in a Windows-centric data center).
InnoSetup https://jrsoftware.org/isdl.php also seems to only allow EXE distros, and is not FOSS (Free and Source Available via https://github.com/jrsoftware/issrc, but with a special license. Also seems to only run on Windows, so harder to use for cross-builds with CI (AppVeyor with native Windows runners is an option though).
In that case its scripting is geared towards Fedora or compatible systems, and Wine for some systems probing, but that should not be a big problem. Probably we can also spin this up on Appveyor CI to package natively from Windows, using artifacts from https://github.com/wixtoolset/wix/releases (or maybe not, as we have a 1hr timeout for builds there anyway, which we randomly often exceed; perhaps a GHA job would fare better whether to package the tarball from Appveyor, or do the whole dance in mingw - maybe need to add the capability in existing jobs that build on lots of platforms including mingw on Debian/Ubuntu).
Side note is that now there is an Open-Source Maintenance Fee applied to the project, although per early terms it has practical effect only for revenue-generating users who download binary builds from the project. Self-compilation, distro packages, etc. are also exempt. Details at https://github.com/wixtoolset/wix/blob/main/OSMFEULA.txt
Activity
jimklimov commentedon Aug 11, 2022
Now
build-mingw-nut.shhas a couple of routines to do a recursive walk to fetch many (open-source third-party) DLLs from mingw build environment. In the end they are dumped tobindir (for drivers and tools), with links added later intosbindir per needs of system daemons, because run-time DLLs must be near EXE (if not in system paths).This logic can be extracted to standalone script to use in package (or other bundling) preparation.
jimklimov commentedon Aug 23, 2022
Check with comments in:
Loosely related to
jimklimov commentedon Jun 12, 2024
One stumbling block with making sense of older recipes was the use of GUIDs in them. Per sources like:
...such component GUIDs effectively encode the full packaged path to installed file (whatever version), to the point that
"*"or"\*"might be used for WIX to generate one unambiguously. They should not be updated for newer releases of the component files, if they land to the same location. There are also product GUIDs that should differ for each release (each build from separate source revisions?) and can also be generated by an asterisk. So one big headache less here.There is also a recently revived effort for WixEdit GUI editor to help with the package recipe maintenance:
...and a number of other editors (mostly plugins for Windows-based IDEs) listed at https://robmensching.com/blog/posts/2007/11/20/wix-editors/ (old post, regularly updated) and https://www.installsite.org/pages/en/msi/authoring.htm (in WiX section)
Also took a quick look at other popular options, e.g.:
Setup.exestyle distributions (MSI made by WIX is allegedly better integrated for corporate automated installations/updates across many systems, which may be fairly important for NUT in a Windows-centric data center).jimklimov commentedon Dec 24, 2025
A very promising example of using WiX Toolset for multiple optional sub-package installation is at https://github.com/virtio-win/virtio-win-guest-tools-installer
In that case its scripting is geared towards Fedora or compatible systems, and Wine for some systems probing, but that should not be a big problem. Probably we can also spin this up on Appveyor CI to package natively from Windows, using artifacts from https://github.com/wixtoolset/wix/releases (or maybe not, as we have a 1hr timeout for builds there anyway, which we randomly often exceed; perhaps a GHA job would fare better whether to package the tarball from Appveyor, or do the whole dance in mingw - maybe need to add the capability in existing jobs that build on lots of platforms including mingw on Debian/Ubuntu).
Side note is that now there is an Open-Source Maintenance Fee applied to the project, although per early terms it has practical effect only for revenue-generating users who download binary builds from the project. Self-compilation, distro packages, etc. are also exempt. Details at https://github.com/wixtoolset/wix/blob/main/OSMFEULA.txt
docs(install): document WinUSB/Zadig setup for USB devices
docs(install): document WinUSB/Zadig setup for USB devices