Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 9, 2025

The genContentTypesXml() method only processed files from VsixManifestBuilder's own collection (this.files), excluding files added by other manifest builders like VsoManifestBuilder. This caused extensionless executables and other files to be missing from the Content_Types.xml Override section, breaking digital signing tools.

Changes

  • Modified genContentTypesXml() to accept and process the merged packageFiles parameter containing all files from all builders
  • Updated finalize() to pass the merged file collection to genContentTypesXml()
  • Added test fixture with extensionless Linux executable and validation test

Before:

private genContentTypesXml(builders: ManifestBuilder[]): Promise<string> {
    // Only processes this.files (VsixManifestBuilder files only)
    Object.keys(this.files).forEach(filePath => {
        if (this.files[filePath].contentType) {
            // Add to Override section
        }
    });
}

After:

private genContentTypesXml(builders: ManifestBuilder[], packageFiles: PackageFiles): Promise<string> {
    // Processes all files from all builders
    Object.keys(packageFiles).forEach(filePath => {
        if (packageFiles[filePath].contentType) {
            // Add to Override section
        }
    });
}

This ensures all package files receive proper Override elements in [Content_Types].xml, regardless of which builder added them.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 03nvsblobprodwcus014.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 055vsblobprodwcus02.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 1g1vsblobprodwcus01.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 3eavsblobprodwcus03.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 3zgvsblobprodwcus024.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 40qvsblobprodwcus022.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 4fdvsblobprodwcus012.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 5tbvsblobprodwcus06.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 61cvsblobprodwcus010.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 73dvsblobprodwcus07.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 8usvsblobprodwcus011.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • 9owvsblobprodwcus020.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • arpvsblobprodwcus017.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • crcvsblobprodwcus021.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • fslvsblobprodwcus015.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • grnvsblobprodwcus04.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • k92vsblobprodwcus08.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • mnzvsblobprodwcus05.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • pl8vsblobprodwcus09.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • uubvsblobprodwcus018.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • vwmvsblobprodwcus016.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • x4wvsblobprodwcus013.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • xg1vsblobprodwcus019.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)
  • xlkvsblobprodwcus023.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/npm install 53 -j ACCEPT js (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Linux executables with no file extension are missing from generated [Content_Types].xml manifest</issue_title>
<issue_description>We've encountered this a few times with task extensions that contain an Linux executable that does not have a file extension. Those files are missing from the generated content type mappings file. Files without extensions need to be explicitly entered as an Override element in the [Content_Types].xml file. If that Override is missing, some digital signing tools will remove the files or fail to sign the package in a way that it can be verified later.

Ping me internally for a repro.</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Fix missing Override elements for Linux executables Fix extensionless files missing from [Content_Types].xml manifest Dec 9, 2025
Copilot AI requested a review from dpaquette December 9, 2025 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linux executables with no file extension are missing from generated [Content_Types].xml manifest

2 participants