MMM The Next Generation
Some of you may be familiar with previous incarnations of MMM. What began as a simple tool for generating SxS isolation application manifests for programs created using Microsoft's venerable Visual Basic 6.0 has expanded as I found deeper and deeper levels of compexity to deal with.
I can't say where MMM ("Make My Manifest") will go, side projects like this can easily turn into abandonware. There is a steady tension between what one would like to do, what one needs from a nub of software oneself, and available free time that might be better spent on other things. At this point it looks like I'm probably going to end up just releasing it as freeware. There is nothing particularly difficult or exotic about it, though it has eaten a bit of time.
So What's This "MMM" Anyway?
MMM is a post-build tool for VB6 Standard EXE projects. It scans a project's VBP file and from there chases down dependencies and builds an XCopy deployment package. Considering how thin the documentation from Microsoft is on this subject and the utter lack of tools provided it can be a bit of a challenge.
Some of this can be done by creating manifests manually. To some extent you can apply functionality in Visual Studio 2005 that was designed to support COM-Interop to help. Finicky work though, and you're as likely as not to obtain a non-functioning result.
XCopy Who?
When Windows XP was released it contained a new feature meant to amplify upon the use of ".local" files for DLL Redirection in Windows 2000. The kinds of terminology you'll want to look up include side-by-side (SxS) isolation and Registration-Free COM.
The latter is what got me started with all of this: the ability to deploy programs to a target system without registering the ActiveX components. Yes, no more "setup" and no more "regsvr32" fiddling. Just unZip your program right onto the target computer and you're good to go. Not every program is quite that simple of course, but we're pretty close! In many cases that actually is all that's required to deploy VB6 programs now.
The term XCopy deployment comes from the command-line tool XCOPY which can copy the tree of files and subfolders within a given folder in one fell swoop. Typical MMM packages will indeed have a folder structure, if nothing else just for reasons of organization. You might leave your deployments at that, use this as a technique for creating "portable" removable media VB6 applications (no install!), or continue packaging your application further into an MSI package.
The isolation aspect is great for creating "greener" installs that don't unnecessarily contribute to DLL Hell.
So Where is MMM Now?
Earlier I had published the source to much more primitive versions of MMM. For now I've decided letting people just give it a try is more important. Think of this as an early beta release. There are features to be completed yet and the online Help hasn't even been implemented. The download package includes a short RTF document that covers the bare bones of using MMM.
The most common problems people encounter are:
- ActiveX dependencies with no matching DEP files.
- Choosing to include the Common Controls 6.0 manifest node, but not properly calling InitCommonControls at the right time.
- Trying to isolate system components as part of your package.
The former results in MMM not picking up subdependencies. You'll want to read your VB 6.0 P&D Wizard documentation for more details. The second issue often results in your program failing abruptly from the very start, perhaps with a Windows "alert" sound effect and no other indication. As for system components, MMM has a list it uses to try to exclude anything that should not be isolated.
MMM also offers to include a Vista Trust node, to help your programs bypass AppCompat on Vista.
The current download is MMM 0.6.3 and this is a self-extracting Zip file. It is in XCopy form itself, so no real installation is required and it won't write to your Registry or to Program Files, System32, etc. To keep flaky versions in check it is also time-bombed to stop working after May 2008. It also will work best on XP SP2 or a later OS, but you may find that it'll work on XP SP1 just fine. For greatest success you'll want to be sure you have VB6 SP6 installed, or at least the SP6 runtimes.
Experiment With It!
A lot of this is still a black art. I found a serious flaw in MMM just yesterday, though it was a logic error and not an SxS manifest discovery this time.
Perhaps you've done some work along these lines yourself.
Yes, I've seen the Matt Curland, et al. hacks like "DirectCOM.dll." Interesting? Yes. But off-topic. No, this is not some sort of Interop tool. It's for 100% pure blooded VB6 solutions.
Rough? Sure is. It has warts, probably lots of bugs, and some probably obscure stuff going on in its About box and splash. Have fun!
- Posted at Tuesday, December 4, 2007 09:48 AM
- In General Category | Permalink
- Name:
- E-Mail Address (optional):
- URL (nofollow, optional):
- Remember personal info
- Comments (text only):

Well XCopy is just a concept here. More like people would be using a self-extracting ZIP for distribution.
The point is you merely copy the application folder structure to "install" your application.
Posted by BVOCS on Tuesday, February 5, 2008 04:51 PM
Instead of xCopy, you may want to consider RoboCopy. Xcopy is not a defunct utility and will not run under Vista. RoboCopy has taken it's place and comes with Vista.
Posted by Kenaso on Tuesday, February 5, 2008 02:23 PM
Thank you VERY much, it sure deserves to be tested and used..
regards
Posted by Jorge Diaz Tambley on Friday, February 1, 2008 04:07 PM
Is this where the donuts are?
Posted by Dale on Saturday, February 2, 2008 02:39 PM
Plz,give briefly example of using MMM to deploy vb6 project without register dll, with the help of MMM
Posted by Tahir Mahmood on Wednesday, February 6, 2008 06:27 AM
I posted a series of step-by-step screenshots today that I hope will answer some of your questions.
Posted by BVOCS on Friday, February 8, 2008 07:26 PM
Can you update the package? I'm having problems with the timebomb. :-)
Posted by Jaap-Willem Dooge on Tuesday, January 27, 2009 06:24 AM
Please see:
http://mmm4vb6.atom5.com/v066-does-not-exp-2627.html
Posted by BVOCS on Tuesday, January 27, 2009 04:20 PM