我正在尝试在运行 Windows Server 2016 的离线工作计算机上安装 NuGet。文件可以通过 NAS 上传到该计算机。所有在线计算机都具有有限的管理权限,而离线计算机则具有完全的管理权限。我找到了离线机器的安装指南,但它们都假设在线机器具有管理员权限。
如何在未连接的计算机上安装 PowerShell 的 Nuget 提供程序,以便可以从 PS 命令行安装 nuget 包? [堆栈交换]
这些参考文献建议将 NuGet 安装在在线计算机上(需要管理员权限),然后将安装的 dll 复制到离线计算机上。这是我迄今为止尝试过的:
PS C:\Windows\system32> Get-PackageProvider -ListAvailable
Name Version DynamicOptions
---- ------- --------------
msi 3.0.0.0 AdditionalArguments
msu 3.0.0.0
nuget 2.8.5.208
PowerShellGet 1.0.0.1 PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, ...
Programs 3.0.0.0 IncludeWindowsInstaller, IncludeSystemComponent
请注意,NuGet 没有 DynamicOptions。显然没有正确安装。我对版本 2.8.5.208 和 2.8.5.205 重复了此过程(均失败)。我怀疑我复制到离线计算机的 dll 元数据有问题。
如何在离线计算机上正确安装 NuGet,而无需在线计算机上的管理员权限?
在离线或在线 Windows 计算机上运行
Install-PackageProvider -Name NuGet
如果您收到以下错误
Install-PackageProvider :需要管理员权限才能在“C:\Program Files\PackageManagement\ProviderAssemblies”中安装软件包。 使用具有管理员权限的帐户登录计算机,然后重试, 或通过在命令中添加“-Scope CurrentUser”来安装在“C:\Users\AppData\Local\PackageManagement\ProviderAssemblies”中。您还可以尝试使用提升的权限运行 Windows PowerShell 会话(以管理员身份运行)。 行:1 字符:1 + 安装-PackageProvider -名称 NuGet
然后使用 -Scope CurrentUser
运行它
Install-PackageProvider -Name NuGet -Scope CurrentUser
我们需要收到的错误的 URL
警告:无法从 URI“https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409”下载到“”。 警告:无法下载可用提供商的列表。检查您的互联网连接。 Install-PackageProvider:未找到与提供程序“NuGet”的指定搜索条件匹配的内容。包提供程序需要“PackageManagement”和“Provider”标签。请检查指定的包裹是否有标签。
目前这将是 https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409
因此,转到在线计算机并在浏览器中打开此 URL。
您将收到以下 XML
<?xml version="1.0" encoding="utf-8"?>
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:discovery="http://packagemanagement.org/discovery" patch="false" media="(OS:windows)" name="OneGet.Providers" tagVersion="1" uniqueId="OneGet.Providers.1" version="1.15.194.0" versionScheme="multipartnumeric">
<!--
This swidtag is a Discovery Feed that has pointers to the SWIDTAGs for
the providers that the bootstrapper can download.
-->
<Link href="https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.package.swidtag" type="application/swid-tag+xml" rel="package" discovery:name="nuget" discovery:latest="true" discovery:version="2.8.5.208" media="(OS:windows)" />
<Link href="https://onegetcdn.azureedge.net/providers/psl-1.0.0.210.package.swidtag" type="application/swid-tag+xml" rel="package" discovery:name="psl" discovery:latest="true" discovery:version="1.0.0.210" media="(OS:windows)" />
<Link href="https://onegetcdn.azureedge.net/providers/ChocolateyPrototype-2.8.5.130.package.swidtag" type="application/swid-tag+xml" rel="package" discovery:name="chocolatey" discovery:latest="true" discovery:version="2.8.5.130" media="(OS:windows)" />
<Link href="https://onegetcdn.azureedge.net/providers/nugetv2.feed.swidtag" type="application/swid-tag+xml" rel="feed" discovery:name="nuget" media="(OS:windows)" />
<Link href="https://onegetcdn.azureedge.net/providers/psl.feed.swidtag" type="application/swid-tag+xml" rel="feed" discovery:name="nuget" media="(OS:windows)" />
<Link href="https://onegetcdn.azureedge.net/providers/chocolateyprototype.feed.swidtag" type="application/swid-tag+xml" rel="feed" discovery:name="chocolatey" media="(OS:windows)" />
</SoftwareIdentity>
复制以下表格的网址
https://onegetcdn.azureedge.net/providers/nuget-X.X.X.XXX.package.swidtag
在浏览器中打开此 URL,您将收到以下 XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" xmlns:discovery="http://packagemanagement.org/discovery" xmlns:sha512="http://www.w3.org/2001/04/xmlenc#sha512" name="nuget" versionScheme="multipartnumeric" media="(windows)" tagVersion="1" version="2.8.5.208" uniqueId="nuget.2.8.5.208">
<Meta providerName="nuget" providerVersion="2.8.5.208" summary="NuGet provider for the OneGet meta-package manager" />
<Link href="https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll" type="application/octet-stream" rel="installationmedia" discovery:targetFilename="Microsoft.PackageManagement.NuGetProvider.dll" discovery:type="assembly" media="(OS:windows)" />
</SoftwareIdentity>
您需要来自唯一
href
属性的 URL。.dll
文件。
目前它是https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll
下载后,导航到此
.dll
文件并将其解锁(或使用 Unblock-File
cmdlet)将此文件复制到离线计算机上的
C:\Program Files\PackageManagement\ProviderAssemblies
。
直接安装不行吗? https://www.nuget.org/downloads 将 Windows x86 命令行安装程序下载到拇指驱动器或共享文件夹,并以老式方式或通过脚本安装?