मैं Visual Studio कोड एक्सटेंशन को ऑफ़लाइन कैसे स्थापित कर सकता हूं?


130

मैंने विज़ुअल स्टूडियो कोड एक ऐसी मशीन पर स्थापित किया है जो इंटरनेट से जुड़ी नहीं है और न ही हो सकती है। प्रलेखन के अनुसार , यदि मेरे पास है तो मैं कमांड लाइन से एक्सटेंशन स्थापित कर सकता हूं .vsix, लेकिन मुझे नहीं पता कि .vsixमार्केटप्लेस से कैसे प्राप्त किया जाए ।

मैं बाज़ार.vsix पर होस्ट किए गए एक्सटेंशन के लिए कैसे डाउनलोड कर सकता हूं ?


डाउनलोड- vsix का उपयोग करें vsix डाउनलोड करें। यानी) rajasimon.github.io/…
राजा साइमन

जवाबों:


202

UPDATE 2017-12-13

अब आप बाज़ार से सीधे एक्सटेंशन डाउनलोड कर सकते हैं ।

यहां छवि विवरण दर्ज करें

विज़ुअल स्टूडियो कोड 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सी तेज

यहाँ प्रकाशक है 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 एक्सटेंशन दें
  • विज़ुअल स्टूडियो कोड खोलें, मेनू फ़ाइल पर जाएँफ़ाइल खोलें ... या Ctrl+ Oचुनें और चुनें.vsix फ़ाइल का
  • यदि सब कुछ ठीक हो गया है, तो आपको यह संदेश विंडो के शीर्ष पर देखना चाहिए:

एक्सटेंशन सफलतापूर्वक स्थापित किया गया था। इसे सक्षम करने के लिए पुनरारंभ करें।


10
मैंने विस्तार पृष्ठ पर उपयोग करने के लिए एक बुकमार्कलेट बनाया। देखते हैं कि यह कितने समय तक काम करता है !: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

वीएस कोड 1.7.1 (अक्टूबर 2016) में इंस्टालेशन स्टेप मेरे लिए कारगर नहीं था।
रॉय डिक्टस

@RoyDictus विचारधारा, VSCode इसे स्थापित करने के बजाय एक्सटेंशन का लिंक दिखाता है: - | उन्होंने कुछ बदला होगा।
t3chb0t

@RoyDictus अपडेट देखें - यह आपके लिए काम करना चाहिए। मैं दूसरी बार स्क्रीनशॉट संलग्न करूंगा।
t3chb0t

2
इस उत्तर में अच्छी जानकारी है; हालाँकि, C # एक बुरा उदाहरण है, खासकर जब से सवाल "एक मशीन है जो नहीं है, और नहीं हो सकता है, इंटरनेट से जुड़ा हुआ है" । C # एक्सटेंशन को यहां वर्णित के रूप में ऑफ़लाइन इंस्टॉल नहीं किया जा सकता क्योंकि यह सक्रियण के बाद प्लेटफ़ॉर्म-विशिष्ट घटकों को डाउनलोड करने का प्रयास करता है, और इसके बजाय एक विशिष्ट ऑफ़लाइन पैकेज बनाया जाना चाहिए
हेरोहटेर

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
@ बिल्लो लगातार नहीं, विंडोज पर मैं लिंक देखता हूं, लिनक्स पर मैं नहीं
kbolino

15

ये सभी सुझाव महान हैं, लेकिन अनुसरण करने के लिए इस तरह के दर्दनाक हैं क्योंकि URL का निर्माण करने के लिए कोड निष्पादित करना या हाथ से उस पागल URL का निर्माण करना कष्टप्रद है ...

इसलिए, मैंने चीजों को आसान बनाने के लिए एक त्वरित वेब ऐप को एक साथ फेंक दिया। जिस एक्सटेंशन को आप चाहते हैं उसका URL पेस्ट करें और आपके एक्सटेंशन का डाउनलोड पहले से ही ठीक से नाम: प्रकाशक-एक्सटेंशन- version.vsix पर आता है।

आशा है कि किसी को यह उपयोगी लगता है: http://vscode-offline.herokuapp.com/


VSCode के रूप में अच्छा लेकिन बेमानी अब उनकी वेबसाइट पर लिंक प्रदान करता है
Blowsie

सही बात। यह उनकी ओर से बहुत हालिया जोड़ है। मैं शायद निकट भविष्य में अपनी सेवा को नीचे ले जाऊंगा।
याकोव चाकिन

@YaakovChaikin लिंक हमेशा दिखाई नहीं देता है, लेकिन आपकी सेवा लगातार काम करती है
kbolino

यह अच्छा है। दुर्भाग्य से जब अन्य लोगों ने हेरोकू के बजाय गीथहब पृष्ठों पर इसी तरह का काम किया, तो क्रिसफ जैसे उपयोगकर्ताओं ने उन्हें यह कहते हुए हटा दिया कि "अपने गीथहब से लिंक न करें"। यह दुख की बात है जब मध्यस्थ बुलबुल बन जाते हैं।
नवंबर को iconoclast

4

आज तक एक्सटेंशन के नवीनतम संस्करण के लिए डाउनलोड URL मार्केटप्लेस पर पृष्ठ के स्रोत में एम्बेडेड शब्दशः एम्बेड किया गया है, जैसे 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

मैं 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 के उत्कृष्ट उत्तर में जोड़ना - किसी फ़ोल्डर में सभी VSCode एक्सटेंशन को स्थापित करने के लिए इन PowerShell कमांड का उपयोग करें:

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

पायथन उपयोगकर्ताओं के लिए t3chbot के उत्कृष्ट उत्तर के साथ उपयोग करने के लिए पैटर्न दिखता है:

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

यह देखने के लिए दाईं ओर स्क्रॉल करना सुनिश्चित करें कि आपको संस्करण संख्या कहां दर्ज करनी है।


0

यदि आप एक स्क्रिप्टेड समाधान की तलाश में हैं:

  1. बाइनरी डाउनलोड URL प्राप्त करें: आप एक एपीआई का उपयोग कर सकते हैं, लेकिन चेतावनी दी जाती है कि इसके लिए कोई दस्तावेज नहीं है। यह एपीआई डाउनलोड करने के लिए एक URL लौटा सकता है.vsix फ़ाइलों (नीचे उदाहरण देखें)
  2. बाइनरी डाउनलोड करें
  3. ध्यान unzipसे द्विआधारी में ~/.vscode/extensions/: आपको अनजिप निर्देशिका नाम को संशोधित करने की जरूरत है, एक फ़ाइल को हटा दें और किसी अन्य को स्थानांतरित करें / नाम बदलें।

निम्नलिखित उदाहरणों को देखकर एपीआई शुरू करें, और संकेत के लिए https://github.com/Microsoft/vscode/blob/master/src/vs/platform/extensionManagement/node/extroGalleryService.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 अधिक FilterTypes
  • "filterType": 7- FilterType.ExtensionName अधिक FilterTypes
  • "flags": 514- 0x2 | 0x200- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly- अधिक झंडे
    • फ्लैग दशमलव मान प्राप्त करने के लिए आप चला सकते हैं python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]- अधिक एसेटटाइप्स.vsix फाइल करने के लिए केवल लिंक प्राप्त करने के लिए

0

यदि आपके पास अपने ऑफ़लाइन उदाहरण पर VSCode का एक विशिष्ट (विरासत) संस्करण है, तो नवीनतम एक्सटेंशन को खींचना ठीक से एकीकृत नहीं हो सकता है।

यह सुनिश्चित करने के लिए कि VSCode और एक्सटेंशन एक साथ काम करते हैं, उन्हें सभी को एक साथ ऑनलाइन मशीन पर स्थापित करना होगा। यह किसी भी निर्भरता (विशिष्ट संस्करणों के साथ) को हल करता है, और ऑफ़लाइन उदाहरण के सटीक कॉन्फ़िगरेशन को सुनिश्चित करता है।

त्वरित कदम:

VSCode संस्करण स्थापित करें, अपडेट बंद करें और एक्सटेंशन इंस्टॉल करें। इंस्टॉल किए गए स्थान से एक्सटेंशन कॉपी करें और उन्हें लक्ष्य मशीन पर रखें।

विस्तृत कदम:

ऑनलाइन मशीन पर VSCode का सटीक संस्करण स्थापित करें। इसके बाद अपडेट को बंद कर दें File -> Preferences -> Settings। में Settingsखिड़की, के तहत User Settings -> Application, के लिए जाने के Updateअनुभाग, और के लिए मानदंड को बदलना Channelकरने के लिएnone । यह VSCode को इंटरनेट तक पहुंचने से रोकता है और आपके संस्करणों को नवीनतम रूप से अपडेट करता है।

फिर VSCode एक्सटेंशन अनुभाग पर जाएं और अपने सभी वांछित एक्सटेंशन इंस्टॉल करें। C:\Users\<username>\.vscode\extensionsलक्ष्य मशीन पर एक ही स्थान पर अपने इंस्टॉल स्थान (इसकी विंडोज़ के साथ ) से स्थापित एक्सटेंशन की प्रतिलिपि बनाएँ ।

अच्छी तरह से काम।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.