我正在尝试在运行Windows Server 2016的脱机工作计算机上安装NuGet。可以通过NAS将文件上传到此计算机。所有联机计算机都具有受限的管理员权限,而脱机计算机具有完整的管理员权限。我已经找到了脱机计算机的安装指南,但是它们都假定该脱机计算机具有管理员权限。
How to get PowerShellGet working with no Internet access [Intrepid Integration]
这些参考文献建议将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正确安装在脱机计算机上?
答案 0 :(得分:3)
在您的离线或在线 Windows 机器上运行
Install-PackageProvider -Name NuGet
如果您收到以下错误
Install-PackageProvider : Administrator rights are required to install packages in 'C:\Program Files\PackageManagement\ProviderAssemblies'. Log on to the computer with an account that has Administrator rights, and then try again, or install in 'C:\Users\\AppData\Local\PackageManagement\ProviderAssemblies' by adding "-Scope CurrentUser" to your command. You can also try running the Windows PowerShell session with elevated rights (Run as Administrator). At line:1 char:1 + Install-PackageProvider -Name NuGet
然后使用 -Scope CurrentUser
运行
Install-PackageProvider -Name NuGet -Scope CurrentUser
我们需要收到错误的网址
WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''. WARNING: Unable to download the list of available providers. Check your internet connection. Install-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package has the tags.
目前这将是 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>
复制以下表单的 URL https://onegetcdn.azureedge.net/providers/nuget-X.X.X.XXX.package.swidtag
目前是https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.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 允许您下载当前用于 PowerShell 的 NuGet 提供程序的当前 .dll
文件。
目前是https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll
下载后,导航到此 .dll
文件并解锁(或使用 Unblock-File
cmdlet)
将此文件复制到您离线机器上的 C:\Program Files\PackageManagement\ProviderAssemblies
。
答案 1 :(得分:0)
不能安装吗? https://www.nuget.org/downloads 将Windows x86 Commandline安装程序下载到拇指驱动器或共享文件夹,然后以旧方式或通过脚本进行安装?