Let's say I'm installing a software on Windows and I want to see all the changes it has made during its installation, what is the easiest way to keep track of system changes. The change could happen in program/system files or registry etc., Is there a tool that tracks that changes? This could be useful in, for example, a patch installation where an administrator may want to keep track of all the changes it has made.
You want to do the "poor man's snapshot". I do this fairly frequently when building my own MSIs for third-party software w/ WIX.
Process Monitor is probably a bit too verbose for what you're trying to do. You might try making a "snapshot" of the registry using something like:
And then again afterward so you can compare.
With the filesystem, I've used the freeware utility "FileList" to generate a "before" and "after" snapshot of the filesystem.
Modifications inside existing files are problematic. You might have to take an initial snapshot, locate files that have been modified, then roll-back (I normally use a VM and the built-in disk snapshot functionality for roll-back) and take a "before" snapshot of each file that you know is going to be modified to compare to the "after" version.
Remember that capturing what changes isn't the same thing as capturing the logic of the setup program. Where possible, reverse-engineering the setup program is preferred to just trying to capture what changes. You may miss nuances that you aren't seeing because of circumstances of your snapshot computer's configuration.
The old WinInstall 2003 LE that came with Windows 2000 Server does a fairly decent job generating these kinds of snapshots for reference purposes, but the MSIs it generates are abysmal. (I gave up using it and have started just doing snapshots myself "by hand" as I've described above.)
Sysinternal's Process monitor might come in handy here. Though it could be a bit too verbose, you can filter out other processes and tweak until it works best for you. Launch it and scan, then start your install and stop once it's done.
Process Monitor
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
There might be other Free solutions that are specific for the launched binary install, but I'm not aware of them.
Quick Update
I agree with Evan, at least for the registry, if it's too verbose you might want to run an export before and after the install. Windows 2003 Support tools come with windiff.exe (an old favorite for looking up differences in the registry - between two .reg files).
Check out Total Uninstall
It will watch from before and after an install and tell you exactly what that program did.
http://www.martau.com/tu_download.php
You can use Installshield product to open the package, and so you will know what it will do without having to install it for real. This product also integrates a capture tool to do a snapshot before/after