Distribution Best Practices

Apologies for digging this topic back up, I know there are lots of ways to do it but I’m interested in what people are doing generally when distributing their games on platforms like itch.io or Steam etc.

I’ve been able to produce distributions for Windows and Linux using dotnet publish, and both work fine (as you’d expect), but there’s something dissatisfying about the 200+ files sitting in the root of the package. Is there a neater way of doing the same thing? Is it enough to just zip up the content from a normal release build and distribute that?

I have JUST put a game on itch.io for the first time.

The download is a rar file, containing the installer created using visual studio “publish” button.

So nothing fancy. I am looking forward to learning more from this thread.

For steam, the build in Steamworks would just be a copy of your release build. Then, in Steamworks, you can tell steam what prerequisites your game needs (.NET Framework versions, for example), and steam will handle them when the user downloads/installs your game. Pretty slick.

For non-Steam releases (like Itch.io), at least for your Windows release, it’d probably be a good idea to look into something like InnoSetup (my personal favorite) which can package together your release build and some prereqs (again, like .NET Framework) into one neat little installer. It’s a small learning curve, but the results are pretty slick imho. (Note: by default InnoSetup would only help you for making Windows distributions/installers, but something like this could be promising for Mac/Linux > https://gist.github.com/amake/3e7194e5e61d0e1850bba144797fd797)

The main reason I would shy away from the simple “zip up the release package” method is because that will only work for your end-users that have your prereqs already. If they don’t have them, the game simply won’t run. Avoiding this problem is the purpose of installers.


I like the InnoSetup solution - however, I’ve noticed (even with it signed) some users say windows would not allow them to run the unrecognized app - making it look to the average user as tho it prevented an infection. Plus even with over 10,000 downloads and a month’s time ppl are saying sometimes their software is still not trusted and needs to develop more reputation. If you’re ever putting out freeware or a demo, it wouldn’t pay to shell out money for EV each year - and not sure what happens if you need to keep upgrading the software. I’m still looking into this stuff - if anyone knows more it would be great.

1 Like

Could this be why my game wont install on a guys Linux machine? The Installer just crashes on launch, it’s just a setup file created by the VS publish wizard… Is the word “dependencies”? … Man how do I check for this?

Thanks a lot for the responses, it’s really useful to see how people are tackling this. From what I can tell it all seems to be mostly a free-for-all, which is can be both good or bad.

Honestly I’m not a huge fan of the installer option, mostly because personally I’d rather not have the tool copying files which I’ll have to use effort to track down when I later want to remove it (in my experience bundled uninstallers usually leave some mess lying around too). Whenever I’ve downloaded a game from say itch.io and it contains a setup.exe, I’ve sadly just not bothered. I’d be interested to hear other people’s opinions on this. Do Windows users tend to prefer installers and I’m in the minority? I’ve been running Linux almost exclusively until very recently so it could definitely be just me! :slight_smile:

I think I prefer the method outlined in the Monogame documentation, that I mentioned above (dotnet publish...), it’d be perfect if the libraries didn’t have to be bundled as separate files. I wonder if there’s a trick that can be used to package them together?

Since it’s not really a lot of extra effort, I guess a decent option is to produce a few different type of distributions and allow the user to download the one that they prefer.

@Mando_Palaise I don’t think the setup file created by the publish wizard is compatible with Linux at all. You’d need to do something custom if you wanted a similar installation method on that platform. A common approach is to bundle the software in an archive (often a .tar.gz) file and users extract it where they want and run from there. The dotnet CLI I mentioned above can make it easy to do that, as it bundles in all the required dependencies in the format required on the target platform. But this being Linux there are a billion different ways to do the same thing!

1 Like

See this is why I come here :slight_smile:

For itch.io they recommend uploading the entire folder, the output from a self-contained dotnet publish in this case. This way your users will get updates as soon as you release them. I used the Inno Setup tool and that worked except users get a scary message about an unknown publisher. A setup tool allows you to set registry settings so users can get crash dumps. I’ve opted for uploading the entire folder as I value the automatic updates over the crash dumps.

Just thought I’d mention that itch.io has a special tool called butler which automatically generates patches for the itch app, I haven’t had any experience with this tool, so I can’t say to much for it.

Hi all - just to add to this thread : I packaged my first MonoGame for Windows PC by building Wix Installer. Instructions can be found here. The WiX installer produces a single Retro Candy Kid MSI file which I uploaded to itch.io no problem. I also used this process to upload Retro Candy Kid FREE and Retro 3D City. Hope this helps