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
Request: Automatically publish new releases of the formatter to Windows Package Manager (winget) #239
I have opened a request to publish the latest version of gdscript-formatter to winget, but it would be nice if the manifest generation and publishing could be automated, so new versions are more readily available.
There are CLI tools available, so it should be relatively easy to do it using CI, like Github Actions.
@NathanLovato would it be okay if I try setting up a GitHub Actions workflow to automate Winget publishing for gdscript-formatter, so new releases can be updated in the Windows Package Manager automatically?
I’m not very familiar with Winget automation yet, so I’d take it step by step while experimenting with it.
Absolutely, yes, your help is most welcome and much appreciated @DevTwilight! These features are beyond the scope of what I can work on myself at the moment and I'm sure people who use the windows package manager will appreciate automatic updates.
Would you be able to handle the initial Winget setup (first package submission) and generate the required PAT (with public_repo scope) for CI? Once that’s done, I can set up the GitHub Actions workflow for automated updates.
Sorry I forgot to get back to you, but yes, absolutely, I can handle the initial setup. I might just take a while to get to it because of my current workload + limited free time (projects like these I maintain in my free time).
Dropping by just to say I'm not forgetting this. I decided to prioritize rewriting the formatter after talking with a contributor and with Godot engine maintainers; I got rid of some dependencies and wanted to really consolidate it and making it a better program for users before publishing the packages (the formatter, while functional, was still a relatively low quality program with its bunch of regex hacks stacked around Topiary)
Since the package is now available via Winget, I think this request has effectively been completed, so it probably makes sense to close this issue. If CI automation for future Winget manifest updates is still desired, that can always be tracked in a separate issue or PR.
Sorry, but this issue was mostly about automating the publishing, so I'm not sure if I'd consider it complete (unless you're closing it as "not planned", which is understandable).
The winget version is already outdated, which might be detrimental to the UX.
@DevTwilight I didn't look too closely at the setup, but couldn't you use the currently published manifest as a base to set up the CI action?
I might also take a stab at it, if you're unavailable.
changed the title [-]Request: Please consider publishing to Windows Package Manager (`winget`)[/-][+]Request: Automatically publish new releases of the formatter to Windows Package Manager (`winget`)[/+]on Jul 29, 2026
Absolutely yes help is most welcome on every open issue, in particular ones like this that need time to learn and test a new tool/environment, even if it's not a huge time commitment; being maintainer of many repositories it all adds up.
Because the executable filename changes with every release, NestedInstallerFiles.RelativeFilePath also needs to change: which is not possible right now i guess
If it's problematic, I'd say let's just remove the version numbers in the artifact files, and then people can run the version flag from the program to get the version or read the version from the release tag.
Actually, for the Godot add on for publishing new versions to the GDQuest website or the asset library, there's the same thing where I cannot give it a regular expression or pattern to read from. It has to be an exact URL that does not change.
For the GDQuest website, I could code something to automatically read a local copy of the formatter repository for last release info but I'd rather not do that if possible for now (because of my available time).
It will just take changes in a couple places. There is the CI, there is also the add on download and install logic, and I will need to also go update a few links here and there across the web.
I think we should close this as out of scope for now.
wingetcreate update --submit cannot currently handle our versioned nested executable automatically because NestedInstallerFiles.RelativeFilePath changes with every release.
Interactive mode can resolve the new path, but it requires an interactive console and therefore isn't suitable for CI. The alternative would be to maintain our own manifest generation/submission flow instead of relying on wingetcreate update --submit, which feels like unnecessary complexity for this project.
We also shouldn't remove the version from the executable filename just to support WinGet. This naming is already relied upon by existing distributions. In particular, changing it could break the AUR packaging that was fixed in #168, as well as the current Godot add-on and potentially the VS Code extension.
Changing the artifact layout would therefore risk breaking existing distribution channels in order to support a new one. That doesn't seem feasible or appropriate.
We can revisit this if wingetcreate gains support for updating versioned nested installer paths non-interactively.
Thanks for looking into this. How about duplicating the Windows build artifact and naming it something stable like winget_build_gdscript_formatter_x64 and whatever other variant needed? So that it does not risk breaking any other distribution.
Thanks for the suggestion! However, I'd prefer to avoid maintaining a duplicate build artifact just to support winget, as it adds unnecessary maintenance overhead.
Fortunately, @damn-good-b0t automatically handles the updates for us whenever a new release goes live—you can look at its latest pull request here: microsoft/winget-pkgs#434463. On top of that, if the package ever happens to lag behind, users can simply open an issue to flag it.
Additionally, I propose that we update PR #313 to remove the winget job that handles publishing, since we don't need to manage it anymore.
Activity
DevTwilight commentedon Jun 5, 2026
Thanks for the suggestion.
@NathanLovato would it be okay if I try setting up a GitHub Actions workflow to automate Winget publishing for
gdscript-formatter, so new releases can be updated in the Windows Package Manager automatically?I’m not very familiar with Winget automation yet, so I’d take it step by step while experimenting with it.
DevTwilight commentedon Jun 5, 2026
here is ci setup
NathanLovato commentedon Jun 5, 2026
Absolutely, yes, your help is most welcome and much appreciated @DevTwilight! These features are beyond the scope of what I can work on myself at the moment and I'm sure people who use the windows package manager will appreciate automatic updates.
For reference, I checked this page from the Microsoft documentation to get some info about how to first publish as well. https://learn.microsoft.com/en-us/windows/powertoys/command-palette/publish-extension-winget
Keeping this around for reference to do the initial publication of the package.
DevTwilight commentedon Jun 6, 2026
Thanks for the confirmation.
From my understanding, setting up Winget publishing requires two steps to get started:
Initial manual publication (first Winget package submission using WingetCreate):
https://github.com/microsoft/winget-create/blob/main/doc/new.md
GitHub Personal Access Token (classic) setup for CI automation:
https://github.com/microsoft/winget-create/blob/main/doc/token.md
Would you be able to handle the initial Winget setup (first package submission) and generate the required PAT (with
public_reposcope) for CI? Once that’s done, I can set up the GitHub Actions workflow for automated updates.DevTwilight commentedon Jun 15, 2026
sorry but any updates
NathanLovato commentedon Jun 15, 2026
Sorry I forgot to get back to you, but yes, absolutely, I can handle the initial setup. I might just take a while to get to it because of my current workload + limited free time (projects like these I maintain in my free time).
DevTwilight commentedon Jun 15, 2026
no problem just make sure to get back after initial publish when u have time
NathanLovato commentedon Jul 11, 2026
Dropping by just to say I'm not forgetting this. I decided to prioritize rewriting the formatter after talking with a contributor and with Godot engine maintainers; I got rid of some dependencies and wanted to really consolidate it and making it a better program for users before publishing the packages (the formatter, while functional, was still a relatively low quality program with its bunch of regex hacks stacked around Topiary)
DevTwilight commentedon Jul 29, 2026
@NathanLovato, just a small update on this issue.
The package has now been published to the Windows Package Manager by @Dragon1573:
Since the package is now available via Winget, I think this request has effectively been completed, so it probably makes sense to close this issue. If CI automation for future Winget manifest updates is still desired, that can always be tracked in a separate issue or PR.
NathanLovato commentedon Jul 29, 2026
Thank you @DevTwilight for the heads up, @rafasoares for bringing it up to the winget tracker and @Dragon1513 for the PR!
rafasoares commentedon Jul 29, 2026
Sorry, but this issue was mostly about automating the publishing, so I'm not sure if I'd consider it complete (unless you're closing it as "not planned", which is understandable).
The winget version is already outdated, which might be detrimental to the UX.
@DevTwilight I didn't look too closely at the setup, but couldn't you use the currently published manifest as a base to set up the CI action?
I might also take a stab at it, if you're unavailable.
DevTwilight commentedon Jul 29, 2026
Since the initial publication is complete, this issue can be considered resolved.
For future releases, we could add a GitHub Actions workflow to automate WinGet updates. A possible workflow:
This would automatically create WinGet update PRs whenever a new release is published.
we only need GitHub Personal Access Token (classic) setup for CI automation:
[-]Request: Please consider publishing to Windows Package Manager (`winget`)[/-][+]Request: Automatically publish new releases of the formatter to Windows Package Manager (`winget`)[/+]DevTwilight commentedon Jul 29, 2026
i want to work on this just let me know if is okay
NathanLovato commentedon Jul 29, 2026
Absolutely yes help is most welcome on every open issue, in particular ones like this that need time to learn and test a new tool/environment, even if it's not a huge time commitment; being maintainer of many repositories it all adds up.
Fix/351 asset store duplicate (#352)
DevTwilight commentedon Sep 15, 2026
We have now automated WinGet publishing in CI using
wingetcreate update --submit.The remaining issue is our versioned Windows executable layout:
Because the executable filename changes with every release,
NestedInstallerFiles.RelativeFilePathalso needs to change: which is not possible right now i guess@NathanLovato what to do now any idea
NathanLovato commentedon Sep 16, 2026
If it's problematic, I'd say let's just remove the version numbers in the artifact files, and then people can run the version flag from the program to get the version or read the version from the release tag.
Actually, for the Godot add on for publishing new versions to the GDQuest website or the asset library, there's the same thing where I cannot give it a regular expression or pattern to read from. It has to be an exact URL that does not change.
For the GDQuest website, I could code something to automatically read a local copy of the formatter repository for last release info but I'd rather not do that if possible for now (because of my available time).
It will just take changes in a couple places. There is the CI, there is also the add on download and install logic, and I will need to also go update a few links here and there across the web.
DevTwilight commentedon Sep 16, 2026
don't worry i will look into and investigate for a solution because removing the version can break #168
just give me some time
DevTwilight commentedon Sep 18, 2026
I think we should close this as out of scope for now.
wingetcreate update --submitcannot currently handle our versioned nested executable automatically becauseNestedInstallerFiles.RelativeFilePathchanges with every release.Interactive mode can resolve the new path, but it requires an interactive console and therefore isn't suitable for CI. The alternative would be to maintain our own manifest generation/submission flow instead of relying on
wingetcreate update --submit, which feels like unnecessary complexity for this project.We also shouldn't remove the version from the executable filename just to support WinGet. This naming is already relied upon by existing distributions. In particular, changing it could break the AUR packaging that was fixed in #168, as well as the current Godot add-on and potentially the VS Code extension.
Changing the artifact layout would therefore risk breaking existing distribution channels in order to support a new one. That doesn't seem feasible or appropriate.
We can revisit this if
wingetcreategains support for updating versioned nested installer paths non-interactively.NathanLovato commentedon Sep 18, 2026
Thanks for looking into this. How about duplicating the Windows build artifact and naming it something stable like
winget_build_gdscript_formatter_x64and whatever other variant needed? So that it does not risk breaking any other distribution.DevTwilight commentedon Sep 19, 2026
Thanks for the suggestion! However, I'd prefer to avoid maintaining a duplicate build artifact just to support
winget, as it adds unnecessary maintenance overhead.Fortunately, @damn-good-b0t automatically handles the updates for us whenever a new release goes live—you can look at its latest pull request here: microsoft/winget-pkgs#434463. On top of that, if the package ever happens to lag behind, users can simply open an issue to flag it.
Additionally, I propose that we update PR #313 to remove the
wingetjob that handles publishing, since we don't need to manage it anymore.NathanLovato commentedon Sep 19, 2026
Okay, sounds good, let's do that then, If the update automation is already handled by a bot that works