This long post... is about some some adjustments I want to make in DizzyAGE games' distribution format. So, DizzyAGE developers, please read and post your opinion.
As you now know, the standard format of distribution for DizzyAGE games is as a .zip file, including dizzy.exe, dizzy.pak, dizzy.ini, setup.exe, and readme.txt, (and whatever else it has), all in the root of the zip.
However, some games might want a different form of distribution, like Peter's TUCA, which comes as a setup.exe application, with a html readme file.
I usually don't encourage this format, because of the installers hell. One unfortunate thing that might happen to such games is the installer stops working and there would be no way to extract the game files.
I'm sure this is not the case with TUCA, which uses the nice Inno Setup, but still the warning stands - keeping it simple is usually better.
Considering the above, there are some situation when a different distribution would be more suitable, for example a CD/DVD release, like I want to do now, for "The Other Side".
Placing the game's zip, or even the game files directly on the disk would look bad. People would have to copy the files manually. However if I use an installer, like TUCA, I can't run the game directly from the disc - players must install it.
Anyway, I've been thinking this over and over, and I decided to try to adjust the DizzyAGE setup.exe a bit, to integrate with external installers.
Now, the setup.exe offers some limited install/uninstall features, for standard game's icons and shortcuts. I don't know if anyone ever used it. In DizzyAGE v1, it used to copy files too, but since these days the installers get more and more complicated, and some DizzyAGE games can have additional files or links, I will not try to reinvent the wheel.
What I'm thinking is to make the install and uninstall options (from setup.exe) to use an external installer and uninstaller.
Then you can put the game files on a cd/dvd, and have an installer (install.exe) to copy them on the hard disk and generate the uninstaller (like Inno Setup does).
In the cd's autorun.inf you can set the setup.exe to be launched when the cd is inserted, and from the setup.exe you can choose to run (directly from the cd) or you can choose to install the game on hard disk. This last option would quit the setup.exe and launch the installer.
After instalation, the installed setup.exe would show the uninstall option, that would launch the generated uninstaller.
Here are the changes for DizzyAGE:
- dizzy.inf will specify the game_readme (so it can launch a html file in setup-about page), game_installer, game_uninstaller files. If used with Inno Setup, you name the installer install.exe. The generated uninstaller seems to be unins000.exe (see TUCA).
- the install option will launch the installer, if specified and if found. Since the installer.exe is not actually copied, when you run setup.exe form the hard disk, the install option will be disabled.
- the uninstall option will launch the uninstaller, if specified and if found.
- if the dizzy.inf keeps the game_installer blank (or not set them at all), the install option will allow creation and deletion of desktop and START group shortcuts, like it did before - just in case someone needs that.
These are changes only to setup.exe and they will not affect older games.
I've tested this with TOS and Inno Setup, and it seems to work nice.
And I'm interested in opinions from these with experience in installers.
If you want I can upload this setup.exe, so you can play with it and Inno.
If no one have something to object, the next version of DizzyAGE will have such a setup.
I guess you know that now, when launched from a read-only medium like CD/DVD, DizzyAGE games are somehow limited, because the setup.exe and the engine itself can't save the dizzy.ini there on the disk. You can't run setup.exe from disk, change settings and run the game with these settings. And of course, the game can't save it's saved-games there.
I also want to fix this. There are a few ways, but I still have to find the better one. For example, saved games and ini could go in a MYDOCUMENTS/Game folder.
This feature would require minor changes to game's scripts. Anywhere you read or write in dizzy.ini or where you save or load the game files, you'll have to use a new engine function that provides the base directory for these files. Like some GetGameFolder(SAVES) or GetGameFolder(INI).
I have to study this, but let me know what you think.