Làm cách nào tôi có thể cài đặt tiện ích mở rộng Visual Studio Code ngoại tuyến?


130

Tôi đã cài đặt Visual Studio Code trên một máy không và không thể kết nối với Internet. Theo tài liệu , tôi có thể cài đặt tiện ích mở rộng từ dòng lệnh nếu tôi có .vsix, nhưng tôi không biết cách lấy .vsixtừ thị trường.

Làm cách nào tôi có thể tải xuống .vsixphần mở rộng được lưu trữ trên thị trường ?


Sử dụng download-vsix tải xuống vsix. tức là) rajasimon.github.io/
Raja Simon

Câu trả lời:


202

CẬP NHẬT 2017-12-13

Bây giờ bạn có thể tải xuống phần mở rộng trực tiếp từ thị trường .

Nhập mô tả hình ảnh ở đây

Kể từ Visual Studio Code 1.7.1, kéo hoặc mở tiện ích mở rộng không hoạt động nữa. Để cài đặt thủ công, bạn cần phải:

  • mở thanh bên tiện ích mở rộng
  • nhấp vào dấu chấm lửng ở góc trên bên phải
  • chọn Cài đặt từ VSIX

Cài đặt từ VSIX ...


Phương pháp cũ

Theo tài liệu có thể tải xuống một phần mở rộng trực tiếp:

URL tải xuống trực tiếp của tiện ích mở rộng có dạng:

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

Điều này có nghĩa là để tải xuống tiện ích mở rộng bạn cần biết

  • tên nhà xuất bản
  • phiên bản
  • tên mở rộng

Bạn có thể tìm thấy tất cả thông tin này trong URL.

Thí dụ

Đây là một ví dụ để tải xuống phần cài đặt tiện ích mở rộng C # v1.3.0 :

Nhà xuất bản, Gia hạn và Phiên bản

Bạn có thể tìm thấy nhà xuất bản và tên tiện ích mở rộng trên trang chủ của tiện ích mở rộng bên trong URL của nó:

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

Ở đây nhà xuất bản là ms-vscodevà tên mở rộng là csharp.

Phiên bản có thể được tìm thấy ở phía bên phải trong khu vực Thông tin khác .

Để tải xuống, bạn cần tạo một liên kết từ mẫu ở trên:

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

Tất cả các gói sẽ có cùng tên Microsoft.VisualStudio.Service.VSIXPackage , vì vậy bạn sẽ cần đổi tên nó sau khi tải xuống nếu bạn muốn biết gói nào sau đó.

Cài đặt

Để cài đặt tiện ích mở rộng

  • Đổi tên tệp và cung cấp cho nó *.vsixphần mở rộng
  • Mở Visual Studio Code, chuyển đến menu TệpMở tệp ... hoặc Ctrl+ Ovà chọn .vsixtệp
  • Nếu mọi thứ đều ổn, bạn sẽ thấy thông báo này ở đầu cửa sổ:

Tiện ích mở rộng đã được cài đặt thành công. Khởi động lại để kích hoạt nó.


10
Tôi đã tạo một bookmarklet để sử dụng trên trang mở rộng. Chúng ta hãy xem nó hoạt động được bao lâu!:javascript:(function() {var ver = document.querySelector("[data-bind='text: version']").innerText; var pub = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$1"); var name = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$2"); window.location = "https://" + pub + ".gallery.vsassets.io/_apis/public/gallery/publisher/" + pub + "/extension/" + name + "/" + ver + "/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage";})()
TheQuickBrownFox

Bước cài đặt không hoạt động đối với tôi, trong Mã VS 1.7.1 (tháng 10 năm 2016).
Roy Dictus

@RoyDictus ideed, VSCode hiển thị liên kết đến các tiện ích mở rộng thay vì cài đặt nó: - | họ phải thay đổi một cái gì đó
t3chb0t

@RoyDictus xem bản cập nhật - cái này sẽ phù hợp với bạn. Tôi sẽ đính kèm ảnh chụp màn hình một lần khác.
t3chb0t

2
Câu trả lời này có thông tin tốt; tuy nhiên, C # là một ví dụ tồi, đặc biệt là khi câu hỏi nêu rõ "một máy không phải và không thể kết nối với internet" . Tiện ích mở rộng C # không thể được cài đặt ngoại tuyến như được mô tả ở đây vì nó cố tải xuống các thành phần dành riêng cho nền tảng sau khi kích hoạt và thay vào đó phải xây dựng gói ngoại tuyến cụ thể .
Herohtar

19

thêm vào câu trả lời của t3chb0t, không chắc tại sao tùy chọn tải xuống không hiển thị, vì vậy đã tạo một bản vá cho những người sử dụng GreasMonkey / TamperMonkey: bạn có thể tìm thấy mã chính ở đây

Hoặc bạn chỉ có thể dán các dòng dưới đây trong bảng điều khiển trình duyệt của mình và liên kết sẽ xuất hiện một cách kỳ diệu:

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);

Đẹp nhưng dư thừa vì VSCode hiện cung cấp liên kết trên trang web của họ
Blowsie

1
@Blowsie không nhất quán, trên Windows tôi thấy liên kết, trên Linux Tôi không
kbolino 20/03/18

15

Tất cả những đề xuất này đều tuyệt vời, nhưng thật đau đớn khi làm theo vì thực thi mã để xây dựng URL hoặc xây dựng URL điên đó bằng tay là một loại phiền phức ...

Vì vậy, tôi đã cùng nhau tạo ra một ứng dụng web nhanh chóng để làm cho mọi thứ dễ dàng hơn. Chỉ cần dán URL của tiện ích mở rộng bạn muốn và ra là bản tải xuống của tiện ích mở rộng đã được đặt tên chính xác: nhà xuất bản-tiện ích mở rộng-phiên bản.vsix.

Hy vọng ai đó thấy nó hữu ích: http://vscode-offline.herokuapp.com/


Đẹp nhưng dư thừa vì VSCode hiện cung cấp liên kết trên trang web của họ
Blowsie

Chính xác. Đó là một bổ sung gần đây về phía họ. Tôi có thể sẽ đưa dịch vụ của tôi xuống trong tương lai gần.
Yaakov Chaikin

@YaakovChaikin liên kết không phải lúc nào cũng hiển thị, nhưng dịch vụ của bạn hoạt động ổn định
kbolino

Điều này thật tuyệt Thật không may khi những người khác đã làm những điều tương tự trên các trang GitHub thay vì Heroku, những người dùng như ChrisF đã xóa họ nói rằng "không liên kết với GitHub của bạn". Thật buồn khi người điều hành trở thành kẻ bắt nạt.
iconoclast

4

Kể từ hôm nay, URL tải xuống cho phiên bản mới nhất của tiện ích mở rộng được nhúng nguyên văn vào nguồn của trang trên Marketplace, ví dụ: nguồn tại URL:

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

chứa chuỗi:

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

Tôi sử dụng regrec Python sau để trích xuất URL dl:

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

3

Tôi muốn ném tùy chọn tải xuống PowerShell vào đống trong trường hợp có ai khác gặp phải điều này. Tôi có một số tình huống ngoại tuyến và tôi chạy nó trong một vòng lặp để tải xuống và cập nhật tất cả các tiện ích mở rộng tôi sử dụng ngoại tuyến.

$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

Thêm vào câu trả lời tuyệt vời của t3chb0t - Sử dụng các lệnh PowerShell này để cài đặt tất cả các tiện ích mở rộng VSCode trong một thư mục:

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

Sau đó, tải lại VSCode để hoàn tất cài đặt.


1

Bây giờ bạn có thể tải xuống một tiện ích mở rộng trực tiếp trong phần "Tài nguyên", có liên kết "Tải xuống tiện ích mở rộng", tôi hy vọng thông tin này vẫn hữu ích.


1

Tôi đã lưu trữ tập lệnh trong ý chính của mình để tải xuống tiện ích mở rộng từ thị trường bằng cách sử dụng tập lệnh PowerShell. Hãy bình luận chia sẻ nó.

https://gist.github.com/azurekid/ca641c47981cf8074aeaf6218bb9eb58

[CmdletBinding()]
param
(
    [Parameter(Mandatory = $true)]
    [string] $Publisher,

    [Parameter(Mandatory = $true)]
    [string] $ExtensionName,

    [Parameter(Mandatory = $true)]
    [ValidateScript( {
            If ($_ -match "^([0-9].[0-9].[0-9])") {
                $True
            }
            else {
                Throw "$_ is not a valid version number. Version can only contain digits"
            }
        })]
    [string] $Version,

    [Parameter(Mandatory = $true)]
    [string] $OutputLocation
)

Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"

Write-Output "Publisher:        $($Publisher)"
Write-Output "Extension name:   $($ExtensionName)"
Write-Output "Version:          $($Version)"
Write-Output "Output location   $($OutputLocation)"

$baseUrl = "https://$($Publisher).gallery.vsassets.io/_apis/public/gallery/publisher/$($Publisher)/extension/$($ExtensionName)/$($Version)/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
$outputFile = "$($Publisher)-$($ExtensionName)-$($Version).visx"

if (Test-Path $OutputLocation) {
    try {
        Write-Output "Retrieving extension..."
        [uri]::EscapeUriString($baseUrl) | Out-Null
        Invoke-WebRequest -Uri $baseUrl -OutFile "$OutputLocation\$outputFile"
    }
    catch {
        Write-Error "Unable to find the extension in the marketplace"
    }
}
else {
    Write-Output "The Path $($OutputLocation) does not exist"
}

0

Đối với người dùng Python, mẫu được sử dụng với câu trả lời tuyệt vời của t3chbot trông giống như:

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

hãy chắc chắn cuộn sang phải để xem nơi bạn phải nhập số phiên bản.


0

Nếu bạn đang tìm kiếm một giải pháp kịch bản:

  1. Nhận URL tải xuống nhị phân: bạn có thể sử dụng API, nhưng được cảnh báo rằng không có tài liệu nào cho nó. API này có thể trả về một URL để tải xuống .vsixcác tệp (xem ví dụ bên dưới)
  2. Tải về nhị phân
  3. Cẩn thận unzipnhị phân vào ~/.vscode/extensions/: bạn cần sửa đổi tên thư mục đã giải nén, xóa một tệp và di chuyển / đổi tên một tệp khác.

Để bắt đầu API bằng cách xem ví dụ sau và để biết gợi ý cách sửa đổi đầu yêu cầu thành https://github.com/Microsoft/vscode/blob/master/src/vs/pl platform / textMan Quản lý / node / extGGeryeryService.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,
}

Giải thích cho ví dụ trên:

  • "filterType": 8- FilterType.Target thêm FilterTypes
  • "filterType": 7- FilterType.ExtensionName thêm FilterTypes
  • "flags": 514- 0x2 | 0x200- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly- thêm cờ
    • để có được giá trị thập phân cờ bạn có thể chạy python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]- để chỉ nhận liên kết đến .vsixtệp AssetTypes khác

0

Nếu bạn có phiên bản VSCode (kế thừa) cụ thể trên phiên bản ngoại tuyến của mình, việc kéo các tiện ích mở rộng mới nhất có thể không được tích hợp đúng cách.

Để đảm bảo rằng VSCode và các phần mở rộng hoạt động cùng nhau, tất cả chúng phải được cài đặt cùng nhau trên máy trực tuyến. Điều này giải quyết mọi phụ thuộc (với các phiên bản cụ thể) và đảm bảo cấu hình chính xác của phiên bản ngoại tuyến.

Bước nhanh:

Cài đặt phiên bản VSCode, tắt cập nhật và cài đặt các tiện ích mở rộng. Sao chép các phần mở rộng từ vị trí đã cài đặt và đặt chúng vào máy đích.

Các bước chi tiết:

Cài đặt phiên bản chính xác của VSCode trên máy trực tuyến. Sau đó tắt cập nhật bằng cách đi đến File -> Preferences -> Settings. Trong Settingscửa sổ, dưới User Settings -> Application, đi đến Updatephần và thay đổi các tham số cho Channeltới none. Điều này ngăn VSCode tiếp cận với internet và tự động cập nhật các phiên bản mới nhất của bạn.

Sau đó, đi đến phần tiện ích mở rộng VSCode và cài đặt tất cả các tiện ích mở rộng mong muốn của bạn. Sao chép các tiện ích mở rộng đã cài đặt từ vị trí cài đặt của chúng (có cửa sổ C:\Users\<username>\.vscode\extensions) vào cùng vị trí trên máy đích.

Hoạt động hoàn hảo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.