Modifying slightly on the code provided in one of the links from Russell (more specifically, pointing to some other files) and putting it into the default GM:S NSIS script, this is now working and properly installing the missing files on computers that don't already have them.
I downloaded the redistributable that alexandervrs linked to in the above post, but I stripped it out and made the NSIS script only install the files my game needed, and in this way was able to boil it down from almost 100mb to 2mb. In conclusion, the game now runs on Windows without error no matter what, and the installer is only 2mb larger than it would otherwise be.
Thank you very much to Russell and alexandervrs for your help and pointers!
Let me get this straight - you're not talking about opening a URL in the user's browser which directs him to the other games on a webpage. You're not talking about having hardcoded game ads in the game either, as you want them to be loaded dynamically. Am I correct?
If so, you could set up a database for this. The game would send a query to a website you've set up to receive such calls. This website will then fetch the needed data (text, screenshot URLs and such) and send it back to the game, which will then display it to the user.
We are doing this in one of our games (not for the same purpose though) and it works great. The flowchart in our case is something like this:
1 - The game sends a query to a webpage that we've set up. This query tells what information we want (in your case, could be; title of the game, a description, and a picture)
2 - The website takes this query and passes it along to a database you have with the information. There's a string for your titles, a string for your descriptions, and URLs for your screenshots.
3 - The website sends this information back to your game which then stores it in strings or whatever you need, and uses this to display the information.
You'll need to use the async web/http events, and you'll need to be able to do some basic serverside coding (PHP or ASP), as well as some SQL if you're going for this method.
I'm sure there are other more optimized ways, but this one is simple and it works well for us, so it could be worth a try. Hope that helps.