Visual Studio Code 확장을 오프라인으로 설치하려면 어떻게해야합니까?


130

인터넷에 연결되어 있지 않거나 연결할 수없는 컴퓨터에 Visual Studio Code를 설치했습니다. 문서에 따르면 ,이 있으면 명령 줄에서 확장을 설치할 수 .vsix있지만 .vsix시장에서 얻는 방법을 모르겠습니다 .

마켓 플레이스에서.vsix 호스팅되는 확장 프로그램을 다운로드하려면 어떻게 해야합니까?


download-vsix를 사용 하여 vsix를 다운로드하십시오. 즉) 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 . 날카로운

여기에 게시자는 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를 엽니 코드, 메뉴로 이동 파일파일 열기 ... 또는 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

VS Code 1.7.1 (2016 년 10 월)에서 설치 단계가 작동하지 않았습니다.
Roy Dictus

@RoyDictus는 IDE를 설치했지만 VSCode는 확장 프로그램을 설치하는 대신 링크를 보여줍니다. 그들은 무언가를 변경했을 것입니다.
t3chb0t

@RoyDictus는 업데이트를 참조하십시오-이것이 효과가 있습니다. 다른 시간에 스크린 샷을 첨부하겠습니다.
t3chb0t

2
이 답변에는 좋은 정보가 있습니다. 그러나 C #은 "인터넷에 연결되지 않았거나 연결할 수없는 컴퓨터"라는 질문 때문에 특히 잘못된 예 입니다 . C # 확장은 활성화 후 플랫폼 별 구성 요소를 다운로드하려고하기 때문에 여기에 설명 된대로 오프라인으로 설치할 수 없으며 대신 특정 오프라인 패키지를 빌드해야합니다 .
Herohtar 2019

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

이것은 멋지다. 불행히도 다른 사람들이 Heroku 대신 GitHub 페이지에서 유사한 작업을 수행했을 때 ChrisF와 같은 사용자는 "GitHub에 링크하지 마십시오"라는 말을 삭제했습니다. 중재자가 괴롭힘을 당하면 슬픈 일입니다.
iconoclast 2019

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

dl URL을 추출하기 위해 다음 Python regexp를 사용합니다.

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

파이썬 사용자의 경우 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 더 많은 필터 유형
  • "filterType": 7- FilterType.ExtensionName 더 많은 필터 유형
  • "flags": 514- 0x2 | 0x200- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly- 더 플래그
    • 당신이 실행할 수있는 플래그 십진수 값을 얻으려면 python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]- 만 얻을 링크를 .vsix파일을 더 AssetTypes을

0

오프라인 인스턴스에 특정 (레거시) 버전의 VSCode가있는 경우 최신 확장을 가져 오면 제대로 통합되지 않을 수 있습니다.

VSCode와 확장 기능이 함께 작동하도록하려면 온라인 시스템에서 모두 함께 설치해야합니다. 이렇게하면 특정 버전의 종속성이 해결되고 오프라인 인스턴스의 정확한 구성이 보장됩니다.

빠른 단계 :

VSCode 버전을 설치하고 업데이트를 끄고 확장을 설치하십시오. 설치된 위치에서 확장을 복사하여 대상 시스템에 배치하십시오.

세부 단계 :

온라인 컴퓨터에 정확한 VSCode 버전을 설치하십시오. 그런 다음로 이동하여 업데이트를 끕니다.File -> Preferences -> Settings . 에서 Settings창 아래 User Settings -> Application로 이동 Update섹션과의 매개 변수를 변경 Channel하는none . 이렇게하면 VSCode가 인터넷에 연결되지 않고 최신 버전으로 자동 업데이트되지 않습니다.

그런 다음 VSCode 확장 섹션으로 이동하여 원하는 확장을 모두 설치하십시오. 설치된 확장명을 설치 위치 (windows와 함께 C:\Users\<username>\.vscode\extensions)에서 대상 시스템의 동일한 위치로 복사하십시오 .

완벽하게 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.