ฉันจะติดตั้งส่วนขยาย Visual Studio Code แบบออฟไลน์ได้อย่างไร


130

ฉันได้ติดตั้ง Visual Studio Code บนเครื่องที่ไม่ได้และไม่สามารถเชื่อมต่อกับอินเทอร์เน็ตได้ ตามเอกสารประกอบฉันสามารถติดตั้งส่วนขยายจากบรรทัดคำสั่งได้หากมี.vsixแต่ฉันไม่รู้วิธีรับ.vsixจากตลาดกลาง

ฉันจะดาวน์โหลด.vsixสำหรับส่วนขยายที่โฮสต์บนตลาดกลางได้อย่างไร


ใช้download-vsixดาวน์โหลด vsix ie) rajasimon.github.io/…
Raja Simon

คำตอบ:


202

อัพเดท 2017-12-13

ตอนนี้คุณสามารถดาวน์โหลดส่วนขยายโดยตรงจากตลาด

ใส่คำอธิบายภาพที่นี่

ในขณะที่ Visual Studio Code 1.7.1 การลากหรือเปิดส่วนขยายจะไม่ทำงานอีกต่อไป ในการติดตั้งด้วยตนเองคุณต้อง:

  • เปิดแถบด้านข้างส่วนขยาย
  • คลิกที่จุดไข่ปลาที่มุมบนขวา
  • เลือกติดตั้งจาก VSIX

ติดตั้งจาก VSIX ...


วิธีการเก่า

ตามเอกสารนี้คุณสามารถดาวน์โหลดส่วนขยายได้โดยตรง:

URL ดาวน์โหลดโดยตรงของส่วนขยายอยู่ในรูปแบบ:

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

ซึ่งหมายความว่าในการดาวน์โหลดส่วนขยายที่คุณต้องรู้

  • ชื่อผู้จัดพิมพ์
  • เวอร์ชัน
  • ชื่อนามสกุล

คุณสามารถค้นหาข้อมูลทั้งหมดนี้ได้ใน URL

ตัวอย่าง

นี่คือตัวอย่างสำหรับการดาวน์โหลดการติดตั้งส่วนขยายC # v1.3.0 :

ผู้เผยแพร่ส่วนขยายและเวอร์ชัน

คุณสามารถค้นหาผู้เผยแพร่และชื่อส่วนขยายได้ในหน้าแรกของส่วนขยายภายใน URL:

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ดังนั้นคุณจะต้องเปลี่ยนชื่อหลังจากดาวน์โหลดหากคุณต้องการทราบว่าเป็นแพ็คเกจอะไรในภายหลัง

การติดตั้ง

ในการติดตั้งส่วนขยาย

  • เปลี่ยนชื่อไฟล์และตั้ง*.vsixนามสกุล
  • เปิด Visual Studio Code ไปที่เมนูFileOpen File ...หรือCtrl+ Oแล้วเลือก.vsixไฟล์
  • หากทุกอย่างเรียบร้อยดีคุณจะเห็นข้อความนี้ที่ด้านบนของหน้าต่าง:

ติดตั้งส่วนขยายสำเร็จแล้ว รีสตาร์ทเพื่อเปิดใช้งาน


10
ฉันทำ bookmarklet เพื่อใช้ในหน้าส่วนขยาย มาดูกันว่ามันใช้งานได้นานแค่ไหน: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

ขั้นตอนการติดตั้งไม่ได้ผลสำหรับฉันใน VS Code 1.7.1 (ตุลาคม 2016)
Roy Dictus

@RoyDictus ideed VSCode แสดงลิงก์ไปยังส่วนขยายแทนการติดตั้ง: - | พวกเขาต้องเปลี่ยนแปลงอะไรบางอย่าง
t3chb0t

@RoyDictus ดูการอัปเดต - สิ่งนี้น่าจะเหมาะกับคุณ ฉันจะแนบภาพหน้าจออีกครั้ง
t3chb0t

2
คำตอบนี้มีข้อมูลที่ดี แต่ C # เป็นตัวอย่างที่ไม่ดีโดยเฉพาะอย่างยิ่งตั้งแต่รัฐคำถาม"เครื่องที่ไม่ได้เป็นและไม่สามารถเชื่อมต่อกับอินเทอร์เน็ต" นามสกุล C # ไม่สามารถติดตั้งแบบออฟไลน์ตามที่อธิบายไว้ที่นี่เพราะมันพยายามที่จะดาวน์โหลดส่วนประกอบแพลตฟอร์มเฉพาะหลังจากการเปิดใช้งานและแทนที่จะแพคเกจแบบออฟไลน์ที่เฉพาะเจาะจงจะต้องสร้างขึ้น
Herohtar

19

เพิ่มในคำตอบของ t3chb0t ไม่แน่ใจว่าทำไมตัวเลือกในการดาวน์โหลดจึงไม่ปรากฏให้เห็นจึงสร้างโปรแกรมแก้ไขสำหรับผู้ที่ใช้ GreaseMonkey / TamperMonkey: คุณสามารถค้นหารหัสสำคัญได้ที่นี่

หรือคุณสามารถวางบรรทัดด้านล่างในคอนโซลเบราว์เซอร์ของคุณจากนั้นลิงก์จะปรากฏขึ้นอย่างน่าอัศจรรย์:

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

ดี แต่ซ้ำซ้อนเนื่องจาก VSCode มีลิงค์บนเว็บไซต์ของพวกเขาแล้ว
Blowsie

1
@Blowsie ไม่สม่ำเสมอบน Windows ฉันเห็นลิงก์บน Linux ฉันไม่ทำ
kbolino

15

คำแนะนำทั้งหมดนี้ดีมาก แต่ก็เจ็บปวดที่ต้องปฏิบัติตามเพราะการรันโค้ดเพื่อสร้าง URL หรือสร้าง URL ที่บ้าคลั่งด้วยมือเป็นเรื่องที่น่ารำคาญ ...

ดังนั้นฉันจึงรวบรวมเว็บแอปด่วนเพื่อให้สิ่งต่างๆง่ายขึ้น เพียงวาง URL ของส่วนขยายที่คุณต้องการและดาวน์โหลดส่วนขยายของคุณที่ตั้งชื่ออย่างถูกต้องแล้ว: publisher-extension-version.vsix

หวังว่าจะมีคนพบว่ามีประโยชน์: http://vscode-offline.herokuapp.com/


ดี แต่ซ้ำซ้อนเนื่องจาก VSCode มีลิงค์บนเว็บไซต์ของพวกเขาแล้ว
Blowsie

แก้ไข. นั่นเป็นการเพิ่มล่าสุดในส่วนของพวกเขา ฉันอาจจะเลิกบริการในอนาคตอันใกล้นี้
Yaakov Chaikin

@YaakovChaikin ลิงก์ไม่ปรากฏเสมอ แต่บริการของคุณทำงานได้อย่างสม่ำเสมอ
kbolino

ที่นี่หนาว. น่าเสียดายที่เมื่อคนอื่นทำสิ่งที่คล้ายกันในหน้า GitHub แทนที่จะเป็น Heroku ผู้ใช้เช่น ChrisF ได้ลบพวกเขาโดยบอกว่า "อย่าลิงก์กับ GitHub ของคุณ" เป็นเรื่องน่าเศร้าเมื่อผู้ดูแลกลายเป็นคนพาล
iconoclast

4

ณ วันนี้ URL ดาวน์โหลดสำหรับส่วนขยายเวอร์ชันล่าสุดถูกฝังแบบคำต่อคำในแหล่งที่มาของหน้าบน Marketplace เช่นแหล่งที่มาที่ URL:

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 regexp ต่อไปนี้เพื่อแยก URL ของ dl:

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

ตอนนี้คุณสามารถดาวน์โหลดส่วนขยายได้โดยตรงในส่วน "ทรัพยากร" มีลิงก์ "ดาวน์โหลดส่วนขยาย" ฉันหวังว่าข้อมูลนี้จะยังคงเป็นประโยชน์


1

ฉันได้เก็บสคริปต์ไว้ในส่วนสำคัญเพื่อดาวน์โหลดส่วนขยายจากตลาดโดยใช้สคริปต์ PowerShell อย่าลังเลที่จะแสดงความคิดเห็นแบ่งปัน

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

สำหรับผู้ใช้ 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,
}

คำอธิบายตัวอย่างข้างต้น:


0

หากคุณมี VSCode เวอร์ชันเฉพาะ (เดิม) ในอินสแตนซ์ออฟไลน์ของคุณการดึงส่วนขยายล่าสุดอาจรวมเข้าด้วยกันไม่ถูกต้อง

เพื่อให้แน่ใจว่า VSCode และส่วนขยายทำงานร่วมกันได้ทั้งหมดจะต้องติดตั้งร่วมกันบนเครื่องออนไลน์ สิ่งนี้จะแก้ไขการอ้างอิงใด ๆ (กับเวอร์ชันเฉพาะ) และทำให้มั่นใจได้ถึงการกำหนดค่าที่แน่นอนของอินสแตนซ์ออฟไลน์

ขั้นตอนด่วน:

ติดตั้งเวอร์ชัน VSCode ปิดการอัปเดตและติดตั้งส่วนขยาย คัดลอกส่วนขยายจากตำแหน่งที่ติดตั้งและวางไว้บนเครื่องเป้าหมาย

ขั้นตอนโดยละเอียด:

ติดตั้ง VSCode เวอร์ชันที่แน่นอนบนเครื่องออนไลน์ File -> Preferences -> Settingsจากนั้นปิดการปรับปรุงโดยไปที่ ในSettingsหน้าต่างภายใต้User Settings -> Applicationไปที่Updateส่วนและเปลี่ยนพารามิเตอร์สำหรับการChannel noneซึ่งจะป้องกันไม่ให้ VSCode เข้าถึงอินเทอร์เน็ตและอัปเดตเวอร์ชันของคุณให้เป็นเวอร์ชันล่าสุดโดยอัตโนมัติ

จากนั้นไปที่ส่วนขยาย VSCode และติดตั้งส่วนขยายที่คุณต้องการทั้งหมด คัดลอกส่วนขยายที่ติดตั้งจากตำแหน่งติดตั้ง (ที่มีหน้าต่างC:\Users\<username>\.vscode\extensions) ไปยังตำแหน่งเดียวกันบนเครื่องเป้าหมาย

ทำงานได้อย่างสมบูรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.