Skip to content
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

Setup releases to publish to choco and/or winget package managers #417

Open
ChristopherHaws opened this issue Jun 2, 2023 · 22 comments
Open

Comments

@ChristopherHaws
Copy link

Hey there!

I like to keep all my software up to date by using package managers such as apt, choco, winget, etc. I was wondering if it would be possible to setup an automated release to a package manager so that the Artifacts Credential Provider can be updated along with my other software rather than me having to subscribe to releases on github to learn about new versions?

Thanks!

@XVII
Copy link

XVII commented Jun 5, 2023

I had mentioned something similar in #370 but they won't accept feature requests here.

If you would like to upvote/comment on the following it might help get some attention:
https://developercommunity.visualstudio.com/t/Add-installer-options-for-Azure-Artifact/10308779

@JohnSchmeichel
Copy link
Member

We're no longer forwarding to the developer community, so having issues here is appropriate.

@XVII
Copy link

XVII commented Jun 7, 2023

@JohnSchmeichel , great another overnight change :), so the two issues that were closed #370 and #379 can be added to this request. I'll reiterate my comments here.

An installer or winget package would help deployment at a larger scale though services like InTune or other software management tools.
This might be an MSI, Exe or winget based deployment options.

At the moment the only installation options are a Zip of un-trusted PS scripts.

@github-actions
Copy link

github-actions bot commented Sep 5, 2023

This issue has had no activity in 90 days. Please comment if it is not actually stale.

@github-actions github-actions bot added the stale This hasn't had any recent activity label Sep 5, 2023
@XVII
Copy link

XVII commented Sep 6, 2023

Not stale.

@github-actions github-actions bot removed the stale This hasn't had any recent activity label Sep 6, 2023
Copy link

github-actions bot commented Dec 5, 2023

This issue has had no activity in 90 days. Please comment if it is not actually stale.

@github-actions github-actions bot added the stale This hasn't had any recent activity label Dec 5, 2023
@XVII
Copy link

XVII commented Dec 6, 2023

🙄

@github-actions github-actions bot removed the stale This hasn't had any recent activity label Dec 6, 2023
@jeffreyrivor
Copy link

It seems like this should be possible now in winget now that Windows Package Manager manifests allow portable zip, although I can't tell at first glance if the zip must contain an installer or if the contents can just be extracted into a directory directly as the "installation."

@jeffreyrivor
Copy link

jeffreyrivor commented Jan 3, 2024

I just linked a PR in winget-pkgs to this issue that takes a crack at integrating into winget, but the standalone zip with lack of an installer (WiX/Nullsoft/etc.) seems to make it unable to be fully automatic with winget; the install location can't be preset to the NuGet plugin directory, or if this can be set in the manifest I couldn't tell what YAML property would do it.

And I guess requiring the --location argument to be specified manually on install is preventing the PR build validation from succeeding, but the failure in the PR build is opaque so I'm not sure.

Update: the issue appears to be due to the default symlinking winget does to add the CredentialManager.Microsoft.exe to the PATH and the test case of launch the console app via the PATH symlink fails due to inability to find dependent DLLs (the DLL loading algorithm doesn't use the actual location of the exe as the DLL search path). That said, there seems to be no mechanism to just "extract the zip here and don't add it to PATH" in winget.

@Dan-Albrecht
Copy link
Member

@jeffreyrivor, is there an actual plan here? I'm setting up a new machine now and cannot use your official install script https://aka.ms/install-artifacts-credprovider.ps1, because of the rate limit problems mentioned in multiple other won't fix issues (#244, #369, #380).

image

Supporting winget would be perfect here.

@jeffreyrivor
Copy link

Unfortunately, winget doesn't support raw zip (e.g. no nested installer exe/msi/etc) in the structure that would be required to place the artifacts credprovider in the NuGet plugin location.

  1. As noted in the linked PR, the --location argument would need to be manually specified to the NuGet plugin directory %USERPROFILE%\.nuget\plugins, there's no way in the winget YAML definition to default this value.
  2. winget adds the executable extracted from the raw zip to PATH via a symlink.
  3. Additionally, winget PRs are tested against an integration that attempts to ensure that raw zips that just extract an executable (and not launch the extracted executable as an installer) that are added to PATH are executable on that PATH; this test fails because the credprovider needs to load DLL dependencies that fail to handle symlinking properly. This is blocking the PR in its current state.

In summary, unless winget changes to allow a different default location (in this case, the NuGet plugin directory) and to allow disabling symlinking and adding to PATH for raw zipped exe extraction (NuGet doesn't need to use PATH to locate it anyhow), the credprovier will have to be packaged into an actual installer (using WiX/Nullsoft/Inno/etc) in order to be ingested into winget.

@kimsey0
Copy link

kimsey0 commented Mar 26, 2024

Can we package it into an actual installer? If so, is there a preferred install system, for example one of those you mentioned (WiX/Nullsoft/Inno)? I guess the installer should just reproduce the behavior of the current install script closely.

@namra98
Copy link

namra98 commented Apr 12, 2024

Best solution would be to make MSI out of it and publish to winget? since all this script is doing is some installation?

@kimsey0
Copy link

kimsey0 commented Apr 12, 2024

The script has a bit of logic to handle .NET versions, but other than that, it just copies a DLL into a specific folder.

@kimsey0
Copy link

kimsey0 commented Apr 12, 2024

And if we're to make an MSI, we need to decide on an MSI creation tool, like WiX or NSIS mentioned above.

Copy link

This issue has had no activity in 90 days. Please comment if it is not actually stale.

@github-actions github-actions bot added the stale This hasn't had any recent activity label Jul 12, 2024
@XVII
Copy link

XVII commented Jul 12, 2024

Not actually stale.

@github-actions github-actions bot removed the stale This hasn't had any recent activity label Jul 12, 2024
Copy link

This issue has had no activity in 90 days. Please comment if it is not actually stale.

@github-actions github-actions bot added the stale This hasn't had any recent activity label Oct 10, 2024
@kimsey0
Copy link

kimsey0 commented Oct 10, 2024

This would still be very useful.

@github-actions github-actions bot removed the stale This hasn't had any recent activity label Oct 11, 2024
@PSFW
Copy link

PSFW commented Oct 15, 2024

This would be very useful. It's amazing that Microsoft is still putting out tools that are not included in WinGet. It's a disjointed user experience.

Copy link

This issue has had no activity in 90 days. Please comment if it is not actually stale.

@github-actions github-actions bot added the stale This hasn't had any recent activity label Jan 13, 2025
@kimsey0
Copy link

kimsey0 commented Jan 13, 2025

Bump.

@github-actions github-actions bot removed the stale This hasn't had any recent activity label Jan 14, 2025
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 a pull request may close this issue.

8 participants