I currently am using VB6 where I work, and use the Visual Studio Installer for MSI packaging. It works great, and so far (other than some limited features) I have had no problems.
Also, if you know the MSIEXEC switches (drop to command line and type MSIEXEC without any switches to get the list of switches) you can have your VB program launch MSI routines as well, and uninstall/install other packages.
I currently have a setup on one of the programs that I deployed, that looks for a new version, runs the setup.exe from the server, which launches the uninstall routine for the package, and install package routine to upgrade to the newest version being deployed.
So, in a nutshell, yes, you can use MSI packaging, and the Visual Studio Installer is a great solution once you figure it out.