.vsix file for the PlatformIO IDE

Hello,
Anyone got the .vsix file format for PlatformIO IDE? or better; how to build the extension for VSCode from source for Linux ARM-64, not sure how as I haven’t done such thing before.

Also I can’t just simply download the .vsix as a year or two ago, the download button vanished as shown in the figure below.

Please lead me to the correct subject forum, documentation file or past discussion if I had got it wrong or maybe missed.


Edit: I was trying to follow this but couldn’t figure out the correct way.

“old” template /_apis/public/gallery/publishers/platformio/vsextensions/platformio-ide/2025.1.11/vspackage

“new” template /_apis/public/gallery/publishers/platformio/vsextensions/platformio-ide/2025.11.2025011101/vspackage?targetPlatform=linux-arm64

neither worked.

That’s really sad that the marketplace doesn’t have the download URLs anymore.

However, they’re still queryable the API, and, if you just install regular VSCode, then the extension searchbar → gear icon still shows the “Download VSIX” option.

Per e.g. How can I install Visual Studio Code extensions offline? - Stack Overflow, you can create a small index.html file that you can open in your browser

index.html
<!DOCTYPE html>
<html>
<body>
    <span>search term: </span><input id="q" type="text">
    <pre id="res">
<script>
async function searchVsix(searchString, count = 10) {
    let res = await fetch(
        `https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery`, {
        method: "POST",
        body: JSON.stringify({
            assetTypes: [], filters: [{
                criteria: [
                    { filterType: 8, value: `Microsoft.VisualStudio.Code` },
                    { filterType: 10, value: searchString },
                    { filterType: 12, value: `37888` },
                ],
                direction: 2, sortBy: 4, sortOrder: 0, // by install count
                pageSize: count, pageNumber: 0, pagingToken: null,
            }], flags: 870,
        }),
        headers: { "content-type": "application/json" },
    });
    let j = await res.json();
    console.log(j.results[0]);
    return j.results[0].extensions.map(e => ({
        publisher: e.publisher.publisherName,
        name: e.extensionName,
        vsixs: e.versions.map(ver => ({
            version: ver.version,
            targetPlatform: ver.targetPlatform,
            source: ver.files.find(f => f.assetType === `Microsoft.VisualStudio.Services.VSIXPackage`).source
        }))
    }));
}
const qIn = document.getElementById("q");
const show = document.getElementById("res");
qIn.addEventListener("change", async (ev) => {
    const q = qIn.value;
    if (!q) return;
    const res = await searchVsix(q);
    show.textContent = "";
    console.log(res);
    res.forEach(extension => {
        extension.vsixs.forEach(vsix => {
            const a = document.createElement("a");
            a.textContent = `${extension.publisher}.${extension.name}-${vsix.version}-${vsix.targetPlatform}`;
            a.download = `${extension.publisher}.${extension.name}-${vsix.version}-${vsix.targetPlatform}.zip`;
            a.style.display = "block";
            a.href = vsix.source;
            a.target = "_blank"; // sandboxing :(
            a.referrerPolicy = "no-referrer";
            a.onclick = (ev) => { window.open(vsix.source, "_blank"); }; // sandboxing :(
            show.appendChild(a);
        });
    });
});
</script>
</body>
</html>

And you can just search for an extension name and grab the download URLs.