I don't really see why anyone who wants a special setup GUI can't just make one, and simply delete winsetup.exe. That way, people can still access the default setup GUI through the command line, which is something only savvy (or desperate) users will do, and game devs can make the setup utility exactly how they like, with just the options they want and just the layout they want. I'm a bit worried that otherwise, Wadjet Eye for example might take away the DirectDraw option because it confuses most of their users - and that's a setting I use. I'd rather not have to edit the cfg file by hand.
As people have said, it's really simple to build a native Windows app to read from and write to the CFG file. (And if you use something like wxWidgets or Qt to make it, it should be easy to make it cross-platform as well; although you'd probably need to make a separate one for tablets.)
I don't think it's a good idea to put effort into complicating AGS by adding features for making/customizing a regular Windows app, thereby duplicating functionality that is better supported by other tools. If the people who are interested in this don't know how to make it, I think it'd be better to just ask someone who can (or has already done so) to open-source their code.
(Whether the default winsetup.exe could be improved and made more user-friendly is another matter. I'm sure it could.)
On the other hand...
Of course, it would be even more useful if you could change settings from within games!
I'm in total agreement with this!
The unfortunate thing about editing cfg files within a game is, that changing those settings would require a reboot of the game as most of those options are graphic/hardware related.
I don't see why this can't be solved. Lots of other games manage to change graphics resolution, sound etc. from in-game without restarting.
Would it be nice to have a setup callable at ANY moment in game with an option to reboot the game if hardware settings were changed?.
In this case we would need a "technical" mode that would unconditionally freeze the game.
Rebooting should not be done with common save/load functionality, IMO, because that may trigger unexpected side-effects. There might be separate function that just stores current game state and reloads it next time game is launched (with certain command arguments) without calling for "on save"/"on restore" script events.
If AGS can't be made capable of changing these settings while the game is running, that sounds like a useful workaround.