Hosting Woes

I've been nearing the point where need to move on, eventually pulling the posted files and this blog site.

Today I got an email notifying me of a problem with the download links here.  I checked and sure enough, trouble.  I don't know whether I'll lose the file hosting I've been using or it is just temporary maintenance going on.  Their support site isn't helpful at all besides letting me know others have the same issues.

I have decided to post links to downloads of the 0.9 and 0.12 versions of MMM here using another file host.  These are the versions most often downloaded.

MMM-0-12-src.zip

MMM-0-9-FINAL-src.zip

Get 'em while they're hot!

Yes, An Update

While I am not as active using VB6 for day to day work anymore, along the way my colleagues and I have needed to repackage some existing applications after bug fixes and just to cope with the changing Windows landscape.

We've made a few changes since the last version posted and things look good.  I decided to post this update but please note that it has not been tested as thoroughly as most of the earlier releases!

So be sure to test your MMM'ed applications packaged using MMM 0.12 thoroughly before releasing them.

See the Change Log (Related\MMMChangeLog.txt) for details.  Here are the notable changes though:

  • Another attempt to improve/correct the DPI-Aware node of the manifest.
  • A change to TLB handling to prevent them from being included.  TLBs are not normally needed at runtime.  If you do need to include them add them yourself via Add Files or copy them to the target folder afterward.
  • An attempt to cope with Microsoft patches that ended up causing "duplicate" coClass entries in MMM's manifests.
  • Better (we hope) handling of non-creatable classes contained in some VB6-supplied OCXs.

I hope this addresses some concerns you too may be facing in these areas.  And of course I hope this version doesn't break anything or make things worse in some way.

Get the new version by downloading:

MMM-0-12

Just some notes

I hope everyone is getting some use out of MMM or the various offshoot projects either based on it or inspired by it.

My friend Jeff tells me there have been a few recent mentions of MMM in the forums and even the old Microsoft VB newgroups some folks are keeping alive.  He passed on a few comments I thought I might try to respond to:

Beta.  All released versions of MMM were "beta" and there has never actually been a finished edition released into the wild as either source or object.  Much of that was related to some non-sharable source code it took a while to replace, but most of it was because a finished product was always meant to provide a batch/command line build option as well as reuse/editing of those MMMP files.

Manifests.  As long as MMM as been called MMM it has generated an unsanctioned form of application manifest with inline assembly information.  This seems to work for any version of Windows tested so far, starting with XP.  But the "proper" way to do this is for the application manifest to reference separate assembly manifests associated with libraries the main program depends upon.  You can best accomplish this using other manifest generators if you need to.

SxS failures.  There are probably a lot of these, but maybe the most common one comes from installing one of the repeated broken attempts at the 2008 "security rollup" patch from Microsoft on your development machine.

As I mentioned in earlier posts, not only do these broken libraries contain some odd duplicate entries in their typelib info that cause MMM manifests to fail... they also contain numerous "off by one" coding errors that can make them either entirely useless or time bombs.  Some Winsock properties return String values with a one-character truncation.  MSChart has many issues such as collection indexes off by one, leading to GPF type crashes.  Sadly there isn't any uninstall for these patches.

A way to spot this issue when SxS failures occur is to examine the generated manifest and look for the duplicated entries.

... There Is Another!

Another new MMM beta release, that is. I never expected to be doing this, but within just a very short time of posting my previous entry here on MMM and DPI Awareness my old buddy Jeff Smith (of Aunt Belle's) called and gave me an earfull. Better than just telling me how "full of it" I am, Jeff had test cases and a solution!   So I'm posting an 0.10 beta version with full source, and this will probably be the "final final" MMM release.  For those who have already forked 0.9 Final with your own improvements, there is only one change: the resource DPIAWARE was replaced and MMM was recompiled. The new package contains the ... (read more)

High-DPI Revisited

While I can't offer any sort of support anymore, remember that in the previous post here the final source code was made available.  This should allow people to locate and fix bugs they find or add new features. High-DPI Awareness Lately I've been buried in emails (most end up routed into a "MMM support issues" folder I rarely look at now) whinging on about problems with programs where the manifest had "High-DPI Aware" selected. I cannot reproduce any "bugs" in this myself though I'm not saying there aren't issues. But please note that it makes no sense to mark a program High-DPI Aware if it isn't! I direct you to the ... (read more)

PScript Portable Software Script Host

I am not in a position to do any more work on MMM right now, but I have cleaned up and repackaged a small utility that can be useful with "MMMed" programs meant to be run from portable media. Portable Applications One thing MMM is useful for is creating portable software in VB6. But what I have found is that some programs just work a lot better if their data is on the hard drive.  The performance is better, "wear" on flash memory drives is less, and for CD-based runs anything that needs to be altered in use (even if you don't need the updates afterward) just won't work on your source medium. I got sick of CMD/BAT files ... (read more)

MMM Source Now Freely Available

After a lot of work to get final clearance on all of the code used in MMM and to "clean room" replace everything else I could not get cleared, we're there. The most recent version of MMM can now be made available in source code form.  While still copyrighted, anyone is allowed to use it for their own purposes including derivitive works.  There is no source license and no promise of support at any level.  All other developers who worked on MMM over the years have signed off on this or their code has been replaced by all new code. Effectively you are free to do as you wish with the source aside from claiming that you wrote it ... (read more)

Fixing those SxS syntax errors in encoding

Well it seems as if more people are stumbling over problems when they use buggy libraries and package via MMM. I'm, pretty sure I've found the culprit: bad attempts at encoding illegal XML characters combined with very poor quality libraries you are trying to use. I won't mention names, you know who they are if you've had these troubles.  It seems that they've been creating libraries where there are typelib comment strings that are improperly terminated.  It looks like they think you can just slop your C string buffer in there and everyone will stop at the first NUL and ignore your buffer garbage.  Clearly somebody is using poor build tools ... (read more)

A Long Wait for a Small Update: MMM 0.8

Yes it has been a very long time since the last update.  And worse yet only a few changes are here.  I hope they help some of you though - and don't break anything you have been using! See the readme file for details. No, there is still no way to reload and rebuild from a saved .MMMP file.  This just isn't anything I've gotten back to for a long time, so only the most pressing issues I have fixes for are addressed.  I hope to get back to VB6 programming again on a regular basis someday, I agree it still has a lot of life left in it.  MMM has been working well for me on the occasions where I need to make a fix to one of my own ... (read more)

Hello Europe: MMM 0.7 is Here

There won't be a version 0.6.8 as suggested earlier.  For whatever reasons several people seem to want another version numbering scheme to be used, one that exposes the build number.  So now we're at MMM 0.7! New Version 0.7 I wasn't quite ready to put out a new MMM version but then over the past three days I got two bug reports I couldn't ignore. Both of these involved a problem with "comma as decimal point" in some international locales.  A very strange coincidence, but right after fixing this the first time a second report of the same problem came in.  This was enough to get me to pull a new release from the MMM codebase ... (read more)