Software installations today usually come in one of three flavors.  The first, the EXE-based installation, requires the greatest sleuthing to find the right silent switches.  For some installations no silent switches exist.

The second, the MSI-based installation, is a bit easier in some ways but a bit harder in others.  The switch structure for MSIs is universal.  The same /q works everywhere.  Yet they also come with a downside as well.  Every MSI has its own custom properties that require interrogation to figure out, or a deft Google search to figure out what others have done before you.

There's even a third option, the "diff" that installs a piece of software to a reference computer and snapshots the differences.  The goal of a "diff" is to figure out what's "different" between before and after an installation.

Diffs are perhaps the easiest of the three to work with, when they work.  They don't sometimes do.  Perhaps something else changed in your before and after snapshot, something that negatively impacts the success of the install.  Or, perhaps your snapshot tool didn't see a change that happened.  When diffs work, they work great.  When they don't, you've got a lot of work ahead of you.

No, I prefer MSIs the best when they're not too difficult to work with.  I'm not reverse engineering someone else's installation.  I'm not forced to dig through the Internet's dark recesses to find switches that sometimes don't exist.  MSIs just seem the cleanest.

What do you think?  In your work packaging software for silent installation, which method have you had the greatest success with?  EXE, MSI, or diff?