The latest release of vswhere not outputs additional properties as requested, along with catalog properties and a way to disambiguate nested properties – not that there are any currently. You can specify the nested properties followed by a property name like “properties/nickname”. Delimiters supported are “_”, “/”, and “.” to fit with the text, JSON, and XML formats. You can use any delimiter with any format, however.
The default output for an instance now looks like:
[ { "instanceId": "890353f3", "installDate": "2017-09-16T01:24:28Z", "installationName": "VisualStudio/15.4.0+27004.2002", "installationPath": "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise", "installationVersion": "15.4.27004.2002", "productId": "Microsoft.VisualStudio.Product.Enterprise", "productPath": "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe", "isPrerelease": false, "displayName": "Visual Studio Enterprise 2017", "description": "Microsoft DevOps solution for productivity and coordination across teams of any size", "channelId": "VisualStudio.15.Release", "channelPath": "C:\Users\heaths\AppData\Local\Microsoft\VisualStudio\Packages\_Channels\4CB340F5\catalog.json", "channelUri": "https://aka.ms/vs/15/release/channel", "enginePath": "C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service", "releaseNotes": "https://go.microsoft.com/fwlink/?LinkId=660692#15.4.0", "thirdPartyNotices": "https://go.microsoft.com/fwlink/?LinkId=660708", "catalog": { "buildBranch": "d15svc", "buildVersion": "15.4.27004.2002", "id": "VisualStudio/15.4.0+27004.2002", "localBuild": "build-lab", "manifestName": "VisualStudio", "manifestType": "installer", "productDisplayVersion": "15.4.0", "productLine": "Dev15", "productLineVersion": "2017", "productMilestone": "RTW", "productMilestoneIsPreRelease": "False", "productName": "Visual Studio", "productPatchVersion": "0", "productPreReleaseMilestoneSuffix": "6.0", "productRelease": "RTW", "productSemanticVersion": "15.4.0+27004.2002" }, "properties": { "campaignId": "844478574.1505524861", "channelManifestId": "VisualStudio.15.Release/15.4.0+27004.2002", "nickname": "", "setupEngineFilePath": "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe" } } ]
Most of the properties are provided through the ISetupPropertyStore
. This interface is implemented by ISetupInstance
objects, and provided by ISetupInstance2::GetProperties
for custom properties. Starting with Visual Studio 2017 Update 3, you can also get catalog properties by calling IUnknown::QueryInterface
on an ISetupInstance
object for ISetupInstanceCatalog
, which also provides an ISetupPropertyStore
from ISetupInstanceCatalog::GetProperties
. As we add new features that require persisting properties, they will automatically be exposed.