PowerShell packagmanagement,如何卸载包提供程序



为了解决问题,我想我应该尝试重新安装Chocolatey软件包提供程序。似乎没有cmlet来删除或卸载包提供程序。我指的不是删除包源或包。我在Windows 10上使用PowerShell 5。

是否有卸载包提供程序的方法?

包提供程序与WMF安装捆绑在一起。

如果你知道搜索位置(甚至你自己的自定义包提供程序),你可以很容易地添加(和删除)包提供程序。

查找软件包提供程序的安装位置:

$p = (Get-packageProvider -name Chocolatey);
$p.ProviderPath

如果你删除/移动程序集到提供程序默认搜索路径之外的某个地方;它将不可用(注意:重新启动您的主机,看看效果)。

同样,您可以通过复制实现packageprovider规范的exe/dll到搜索位置来添加包提供程序。

更多文档可以在这里找到(实现您自己的和默认的搜索位置):

https://github.com/OneGet/oneget/wiki/Provider-assembly-search-locationshttps://github.com/OneGet/oneget/wiki/ImplementingPackageProvider

如何删除NuGet提供程序的简单示例

(Get-PackageProvider|where-object{$_.name -eq "nuget"}).ProviderPath|Remove-Item -force
Restart-Computer

补充Harald F的有用答案,考虑到版本1.4.7的PackageManagement模块仍然有没有 Uninstall-PackageProvider命令(参见Get-Command -Module PackageManagement模块附带的所有命令):

注意:为了能够在以后撤销此更改,请记下(Get-PackageProvider NuGet).ProviderPath报告的路径并对该文件进行备份。

删除NuGet包提供程序的分步说明,例如:

  • Windows :

    • 将NuGet包提供程序集(DLL)的路径复制到剪贴板:

      • (Get-PackageProvider NuGet).ProviderPath | Set-Clipboard
    • 启动提升的PowerShell会话(以admin身份运行-需要管理员凭据)。要从现有(非提升)会话执行此操作,请运行:

      • Start-Process -Verb RunAs (Get-Process -Id $PID).Path
    • 在继续之前,关闭所有其他PowerShell会话,这可能包括需要退出Visual Studio Code。

      • 如果当前没有会话加载DLL,则删除DLL将成功;如果没有保证,你会得到一个Access denied错误,即使有海拔。
    • 提升的会话中(在此会话中您必须没有提交任何PackageManagement命令),提交以下命令以删除NuGet包提供程序集(DLL):

      • Remove-Item -Force <paste-the-previously-copied-path-here>
  • macOS和Linux上:

    • 使用sudo启动PowerShell会话。要从现有(非提升)会话执行此操作,请运行:

      • sudo pwsh
    • 提交以下命令删除NuGet包提供程序集(DLL):

      • (Get-PackageProvider NuGet).ProviderPath | Remove-Item -Force
  • 其余步骤适用于所有平台:

    • 退出升高的/sudo会话。

    • 启动新的(非提升)会话以使更改生效:Get-PackageProvider应该不再列出NuGet提供者。

如果我明白你想要什么:

Uninstall-Package [-Id] [-RemoveDependencies] [-ProjectName][-Force] [-Version] [-WhatIf]

使用-Force选项强制卸载一个包。

相关内容

  • 没有找到相关文章

最新更新