Skip to content

Latest commit

 

History

History
34 lines (30 loc) · 2 KB

README.md

File metadata and controls

34 lines (30 loc) · 2 KB

windows-autoconf

Try to find MS build tools, and provide installing path and other info needed for compiling

NPM Standard - JavaScript Style Guide AppVeyor


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

  1. try_powershell.cmd will try to JIT compile some C# code that calls COM, and prints the interesting stuff to stdio
  2. compile-run.cmd will try to find a C# compiler to compile the query then run the generated exe
  3. try_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