【问题标题】:How to find out which Visual Studio extensions are installed on user's machines?如何找出用户机器上安装了哪些 Visual Studio 扩展?
【发布时间】:2020-05-31 20:57:01
【问题描述】:

如何找出用户机器上安装了哪些 Visual Studio 扩展?

我想在 AD 环境中跟踪用户计算机上安装了哪些 VS 扩展。我认为通过 Windows Installer (*.msi) 安装扩展程序时这很容易。但是 VSIX 扩展 (vsixinstaller.exe) 呢?

【问题讨论】:

    标签: windows visual-studio active-directory vsix sccm


    【解决方案1】:

    我知道没有直接的方法可以列出所有已安装的 VSIX 扩展,但vsixInstaller 可以选择生成一个日志文件,用于标识它找到的extension.vsixmanifest 文件,每个这样的文件都是一个包含有关扩展的相关详细信息(名称、版本等)。

    要让vsixInstaller 生成日志文件,请假装卸载不存在的扩展。这可能需要一段时间,尤其是在安装了多个版本的 VS 时(以下必须全部放在一行中)。

    C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\
       app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service>
       vsixInstaller /logFile:vsix.log /appIdName:VS /uninstall:nosuchxt
    

    然后生成的日志文件将是%TEMP%\vsix.log 并且Found 行指向vsixInstaller 所在的扩展名,例如(根路径替换为%VS20xx%):

    vsixinstaller.exe version:
    16.5.2047
    ...
    BEGIN: Processing extension pack
    ...
    Found '%ProgramFiles(x86)%\COMMON FILES\MICROSOFT\EXTENSIONMANAGER\EXTENSIONS\Microsoft\Windows Kits\10\Desktop SDK\extension.vsixmanifest'
    ...
    Found '%VS2015%\COMMON7\IDE\EXTENSIONS\VSSDK\extension.vsixmanifest'
    ...
    Found '%VS2019%\COMMON7\IDE\EXTENSIONS\VSSDK\extension.vsixmanifest'
    ...
    END: Processing extension pack
    
    

    列表中引用的每个extension.vsixmanifest 文件都以metadata 节点开头,该节点标识相应扩展的名称和版本,例如:

    <Metadata>
      <Identity Id="Microsoft.VisualStudio.SDK" 
                Version="16.0"
                Language="en-US"
                Publisher="Microsoft Corporation" />
      <DisplayName>Microsoft Visual Studio SDK</DisplayName>
      <Description>Tools for building Visual Studio extensions</Description>
    </Metadata>
    

    通过一些(不完全是微不足道的)管道工作,这一切都可以在脚本/批处理作业中自动化。

    【讨论】:

      【解决方案2】:

      我怀疑IVsExtensionManager.GetInstalledExtensions API 是您正在寻找的。​​p>

      此外,Mad 发布了一个开源“Extension Manager 2019”扩展,它实现了导出/导入扩展命令,您可能会发现这是一个有用的示例。

      扩展的源代码可以在以下 github repo 中找到:

      ExtensionPackTools

      真诚的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-04
        • 2021-10-09
        • 1970-01-01
        相关资源
        最近更新 更多