I've been thinking about this one.. what is the reason to run the uninstall ? couldn't you just set the flags to overwrite the original files ?
If the purpose is to remove some files not included in your new version, you could include them and set the flag to "deleteafterinstall"
don't know if this would be feasible or not..
Create your Program setup exe as normal.
Create another setup exe with the unins000.exe and set the flag to "onlyifdestfileexists" then
In the Install Run section add the file and set the flag to "skipifdoesntexist"
Now add your first setup exe and set the flag to "Waituntilidle"
Now specify that file in the Install Run section after the unins000.exe
A setup within a setup if you like.
My theory is that when you run it, the unins000 file will only be installed if it is already there. If it is there, then it wil be overwritten with the "new" unins000 and then run, thereby uninstalling the original files.
Once the uninstall is complete, your new install should run
If it doesn't already exist, then the file will be skipped and your new setup will be installed and run.
does that make sense ? (I haven't tried it so I could be talking absolute crap)