-
-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build a windows installer #2071
Comments
You can use an msi instead. I've seen plenty of those in winget too. But msix does provide the most security. However it does have one critical flaw: disconnected systems that install msix manually rather than through the MS Store are unable to activate due to an online verification failing (this prevents the user from using the msix app normally and have to unpackage it same way as a zip file). So msi might be a better choice. |
https://wiki.gnome.org/msitools looks like it might work for us |
otherwise, WIX might be the way to go: |
according to wixtoolset/issues#4381, wix might not be available in linux. with that said, we'd be building our windows installer from a windows machine, within msys2, so i guess linux availability doesn't matter? hrmm. |
so it looks like what we need do is make an installer that has our DLLs in it (along with any binaries we want to install), and probably also all our dependency DLLs. we can maybe make installation of the latter optional, unsure, but it definitely seems we are expected to distribute all files on which we depend. we then throw everything into a single target directory. i don't think we'll need the msys files (since we're targeting ucrt) and we definitely shouldn't need the windows ucrt files. |
As far as I'm aware, you still require WIX when building a MSI. Still, MSITools is interesting project and if it works without WIX, that probably would make it alot easier for you. People can always use WINE to emulate the windows binary of notcurses if needed for some windows TUI application that doesn't have a Linux equivalent. |
FWIW I would not recommend MSIX for this. It's got a lot of baggage related to the last decade of "modern Windows" attempts, and in my experience it's unreliable and poorly documented. Most MSIX use is because it's a requirement in the Microsoft Store, but MS is dropping that requirement with Windows 11. It's very rare to see MSIX packages outside the Store (even for Microsoft software). Inno Setup might be worth considering. It's rock-solid (VS Code uses it!) and pretty easy to script. |
the microsoft store requirement was my entire reason for thinking MSIX the way to go, so this is a very relevant fact. thank you, kind stranger (i assume i've never met you, though if you're in vancouver, i thank you for goodly British Columbian herbs, the mainstay of my twenties)! |
missing icon in the add/remove programs view, yuck |
some problems:
|
we're using OpenImageIO instead of ffmpeg at the moment to work around #2355, but know that this requires about 40 extra DLL files, and blows up our installer/installed by about 200MB (from 50MB). |
so i made one, and submitted a winget package around it. we'll want to automate this process, but for now, i'm calling this done. yay! |
Amazing work, thanks! |
presumably an MSIX file. https://docs.microsoft.com/en-us/windows/msix/
this is necessary for getting into winget (#2070).
https://docs.microsoft.com/en-us/windows/msix/desktop/source-code-overview
i guess we probably need stick all our dependencies in there, as well? and we're just abandoning any attempt at using e.g. a system-wide ffmpeg? i think so, unless such a thing is available via winget. if it is, we should probably use that.
The text was updated successfully, but these errors were encountered: