More there are components installed, the bigger the maintenancetool.dat file gets. At some point the .dat file gets too big causing the installer to use more memory than one process is allowed. In Windows this is something above 1GB and below 2GB if installer is built as 32bit. This causes installer crashes and .dat file corruption. When the .dat file is corrupted it can cause several issues, for example: "Your installer seems to be corrupted" and "qmake -query is not parseable" etc.
The main problem in the .dat file is that it writes all component's filenames to it, so that we know what files to remove in uninstall. One component can have many many files which increases a great deal the .dat file size. At startup the .dat file is read to memory and in the end it is rewritten to disk.
One fix would be to build installer as 64bit or use /LARGEADDESSAWARE but that will again reach its memory limit at some point.
Another fix is to write the filename list to a separate file and only the name of the separate file is in .dat file. This has significant effect on the .dat file size. This approach has also another good effect, maintenancetool start and restart will be much faster.