Try to find MS build tools, and provide installing path and other info needed for compiling
As of VS7 (a.k.a. Visual Studio 2017) Microsoft recommends to query the VS setup state via COM, but not everybody is fluent in COM, and not every language has COM bindings, so I created some scripts that utilize Windows builtin tools to query this information. The resolved information is printed to stdout in JSON, e.g.
[18:45:29.29] D:\code\0tni\windows-autoconf>Tools\try_powershell.cmd
[
{
"Product": "BuildTools",
"Version": "15.0.26206.0",
"InstallationPath": "D:\\bin\\dev\\VS\\2017\\BuildTools",
"IsComplete": "true",
"IsLaunchable": "false",
"CmdPath": "D:\\bin\\dev\\VS\\2017\\BuildTools\\Common7\\Tools\\VsDevCmd.bat",
"MSBuild": {"id": "Microsoft.Component.MSBuild", "version":"15.0.26004.1"},
"VCTools": {"id": "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "version":"15.0.26109.1"},
"SDK8": false,
"SDK10": "10.0.14393.79501",
"SDK": "10.0.14393.0",
"Packages": [
...
There are 3 scripts
try_powershell.cmd
will try to JIT compile some C# code that calls COM, and prints the interesting stuff to stdiocompile-run.cmd
will try to find a C# compiler to compile the query then run the generated exetry_registry.cmd
will look for undocumented registry traces
As the tools was getting traction, I added more use cases such as resolving version and location of Windows SDKs, enumerating "Include" directories, and outputting configuration files for verius build systems