PowerShell / PSResourceGet

PSResourceGet is the package manager for PowerShell
https://www.powershellgallery.com/packages/Microsoft.PowerShell.PSResourceGet
MIT License
495 stars 94 forks source link

Add Scope to Repositories #616

Open SydneyhSmith opened 2 years ago

SydneyhSmith commented 2 years ago

Summary of the new feature / enhancement

In order to make repository registration available system-wide we should add a -Scope parameter toRegister-PSRepository. This parameter will determine the file path where the repository metadata is stored and therefore determine whether all users can access the repository registration. This change will also introduce the following parameters:

Proposed technical implementation details (optional)

CurrentUser will remain the default behavior even with these changes. We will not enforce uniqueness across scope, and therefore need additional parameters to indicate repository scope.

StevenBucher98 commented 2 years ago

Be sure permissions for ubuntu are also taken into consideration with install scope parameter, related isse #364

weyCC81 commented 2 years ago

Please review the "CurrentUser" default as more and more users have "Back up important PC folders to OneDrive" Enabled in OneDrive: https://github.com/PowerShell/PowerShellGet/issues/195, https://github.com/PowerShell/PowerShellGet/issues/724, https://github.com/PowerShell/PowerShellGet/issues/627

PS: The problem around this request has in two-weeks it's two-year anniversary on Nov 21, 2022!

anamnavi commented 2 years ago

@weyCC81 thanks for reaching out. There's an issue to track this in the PowerShell repository: https://github.com/PowerShell/PowerShell/issues/15552

It is being worked on and will be addressed from the PowerShell side.

JustinGrote commented 2 years ago

At the very least, allow for a -Path or -Destination parameter to Install-PSResource to override the -Scope parameter, and at best, allow for an environment variable, ps variable, powershell.config.json entry, or otherwise to opt in to a new default folder. This is work that can be done here while waiting on a PS result

anamnavi commented 2 years ago

@JustinGrote We have Save-PSResource with the -IncludeXML parameter that would essentially give the desired outcome. The reason we didn't include -Path or -Destination parameter for Install-PSResource is because it would be redundant with Save-PSResource behavior.

kilasuit commented 1 year ago

@SydneyhSmith this was asked about in the PSConfEU Mini Con chat today and would be great to get into a v1.1 if possible

vandre commented 1 year ago

+1 For this. As it is right-now it is impossible to upgrade a package that was installed with a private repository using Install-PsResource -Scope AllUsers

# Import Module works as expected (Module installed -Scope AllUsers)
import-module mymodule

# throws error Update-PSResource: No installed packages were found with name 'mymodule' in scope 'CurrentUser'.
Update-PsResource mymodule

# throws error Update-PSResource: Package 'mymodule' could not be found in any registered repositories.
Update-PSResource mymodule  -Scope AllUsers

Edit: I just realized that this is the same as #84