Here is an example made in VB on how to make an Active Self-Extractor.

Active Self-Extract

The author says that it works. And if you look at his feedback, for some people, it worked great.