I know there are solutions that do this in the wild (and some are free) that perform difference based app packaging (hard drive based snapshots), but for some reason when I use them for those tough packages (silent install fails when following vendor's instructions, vendor doesn't support silent installs, take your pick) some of those also fail.
Also, they miss certain things. If it's pretty easy to script this, I'll take a crack at it, I know that they typically grab
File System Changes
and they don't grab
File Permission Changes
And package them into an msi. I also know a true snapshot would involve deep dives into each file/reg key, and this would take some time (but if you're using this to deploy to several hundred or thousand machines, taking 1/2 day or more to create a true snapshot would be worth it in my opinion, seeing as how I spend that much time over several days trying to create a package in the first place, or troubleshooting why said switches or instructions don't work.
Grabbing file permissions might be a little extreme, but I feel it's necessary for certain applications.
I'm not trying to reinvent the wheel here, if there is a solution that does what I say most miss feel free to post it, bonus if it's open source.