如何离线安装VSCode扩展?

问题描述 投票:102回答:8

我已经在没有,也不能连接到互联网的机器上安装了VS Code。 According to the docs,如果我有.vsix,我可以从命令行安装扩展,但我不知道如何从市场上获得.vsix

如何下载.vsix for the marketplace上的扩展程序?

visual-studio-code
8个回答
171
投票

UPDATE 2017-12-13

您现在可以直接从marketplace下载扩展程序。

enter image description here

从VSCode 1.7.1开始,拖动或打开扩展程序不再起作用。要手动安装,您需要:

  • 打开扩展侧栏
  • 单击右上角的省略号
  • 选择从VSIX安装

Install from VSIX...


Old Method

根据documentation,可以直接下载扩展名:

扩展程序的直接下载URL格式如下:

https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

这意味着要下载您需要知道的扩展程序

  • 出版商名称
  • 版本
  • 扩展名

您可以在网址中找到所有这些信息。

以下是下载安装C# v1.3.0扩展的示例:

Publisher, Extension and Version

您可以在其网址的扩展程序主页上找到发布者和扩展名:

https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp

这里的出版商是ms-vscode,扩展名是csharp

该版本可以在更多信息区域的右侧找到。

要下载它,您需要从上面的模板创建一个链接:

https://ms-vscode.gallery.vsassets.io/_apis/public/gallery/publisher/ms-vscode/extension/csharp/1.3.0/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

所有软件包都具有相同的名称Microsoft.VisualStudio.Services.VSIXPackage,因此如果您想知道以后的软件包,下载后需要重命名。

Installation

为了安装扩展程序

  • 重命名文件并为其提供*.vsix扩展名
  • 打开VS Code,转到File > Open File...Ctrl+O并选择.vsix文件
  • 如果一切顺利,您应该在窗口顶部看到此消息:

扩展已成功安装。重新启动以启用它。


19
投票

添加到t3chb0t的答案,不知道为什么下载选项不可见,所以为使用GreaseMonkey / TamperMonkey的人创建了一个补丁:你可以找到gist代码here

或者您可以在浏览器控制台中粘贴以下行,并且链接会神奇地显示:

let version = document.querySelector('.ux-table-metadata > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1)').innerText
    , itemDetails = window.location.search.replace('?', '').split('&').filter(str => !str.indexOf('itemName')).map(str => str.split('=')[1])[0]
    , [author, extension] = itemDetails.split('.')
    , lAuthor = author.toLowerCase()
    , href = `https://${lAuthor}.gallery.vsassets.io:443/_apis/public/gallery/publisher/${author}/extension/${extension}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage`
    , element = document.createElement('a');


element.href = href;
element.className = 'vscode-moreinformation dark';
element.innerHTML = 'download .vsix file';
element.download  = `${extension}.${version}.vsix`;
document.querySelector('.vscode-install-info-container').appendChild(element);

14
投票

所有这些建议都很棒,但有点痛苦,因为执行代码来构建URL或手工构建那个疯狂的URL有点烦人......

所以,我把一个快速的网络应用程序放在一起,以使事情变得更容易只需粘贴您想要的扩展程序的URL,即可下载已正确命名的扩展程序:publisher-extension-version.vsix。

希望有人觉得它有用:http://vscode-offline.herokuapp.com/


4
投票

截至今天,最新版本扩展程序的下载网址逐字嵌入到Marketplace上的页面源中,例如网址来源:

https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync

包含字符串:

https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage

我使用以下Python正则表达式来提取dl URL:

urlre = re.search(r'source.+(http.+Microsoft\.VisualStudio\.Services\.VSIXPackage)', content)
if urlre:
    return urlre.group(1)

3
投票

我想抛出一个PowerShell下载选项,万一其他人遇到这个。我有几个离线方案,我在循环中运行它来下载和更新我离线使用的所有扩展。

$page = Invoke-WebRequest -Uri 'https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell'

$details = ( $page.Scripts | ? {$_.class -eq 'vss-extension'}).innerHTML | Convertfrom-Json

$extensionName = $details.extensionName 
$publisher     = $details.publisher.publisherName
$version       = $details.versions.version

Invoke-WebRequest -uri "$($details.versions.fallbackAssetUri)/Microsoft.VisualStudio.Services.VSIXPackage" `
                  -OutFile "C:\Scripts\extensions\$publisher.$extensionName.$version.VSIX"

2
投票

添加到t3chb0t的优秀答案 - 使用这些PowerShell命令在文件夹中安装所有VSCode扩展:

cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }

然后,重新加载VSCode以完成安装。


1
投票

现在您可以直接在“资源”部分下载扩展,有一个“下载扩展”链接,我希望这些信息仍然有用。


0
投票

对于Python用户,使用t3chbot的优秀答案的模式如下:

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage

请务必向右滚动以查看您必须输入版本号的位置。


0
投票

如果您正在寻找脚本解决方案:

  1. 获取二进制下载URL:您可以使用API​​,但要注意它没有文档。此API可以返回一个URL来下载.vsix文件(参见下面的示例)
  2. 下载二进制文件
  3. 小心unzip二进制到~/.vscode/extensions/:您需要修改解压缩的目录名称,删除一个文件并移动/重命名另一个文件。

对于API,请查看以下示例,以及有关如何将请求头修改为https://github.com/Microsoft/vscode/blob/master/src/vs/platform/extensionManagement/node/extensionGalleryService.ts的提示。

POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=5.1-preview HTTP/1.1
content-type: application/json

{
    "filters": [
        {
        "criteria": [
            {
                "filterType": 8,
                "value": "Microsoft.VisualStudio.Code",
            },
            {
                "filterType": 7,
                "value": "ms-python.python",
            }
        ],
        "pageNumber": 1,
        "pageSize": 10,
        "sortBy": 0,
        "sortOrder": 0,
        }
    ],
    "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"],
    "flags": 514,
}

对上述例子的解释:

  • "filterType": 8 - FilterType.Target more FilterTypes
  • "filterType": 7 - FilterType.ExtensionName more FilterTypes
  • qazxsw poi - qazxsw poi - qazxsw poi - "flags": 514 要获得标志十进制值,您可以运行0x2 | 0x200
  • Flags.IncludeFiles | Flags.IncludeLatestVersionOnly - 只获得more Flags文件python -c "print(0x2|0x200)"的链接
© www.soinside.com 2019 - 2024. All rights reserved.