... 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 updated resource file and a compiled version of MMM. The importable text file stored as DPIAWARE is: MMM 0-10\Res\manifest.dpiaware.txt
<application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"><asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</application>
Hopefully this cures any other DPI-related woes people have been having when using MMM's DPI Awareness option when creating application manifests.
Thanks again, Jeff. And apologies to the VB6 community. Keep up the good fight!
Be careful with this, I did not have a chance to do exhaustive testing and may have broken something else or somehow screwed up the build:
I will try to keep this up for at least a year after this date.
- Posted at Friday, October 28, 2011 02:06 AM
- In General Category | Permalink | Comments (4)
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 MSDN article on the subject: User Interface - High DPI Awareness.
Marking an application in this way is a declaration of capabilities. Telling Windows that it's true when it is not is just asking for trouble. The link given above is a brief guide to the changes you must make to a program before it should try to "wear the badge" of High-DPI Awareness.
Here is the fragment MMM adds to the application manifest when you seelct the DPI-Awareness option:
<application xmlns="urn:schemas-microsoft-com:asm.v3"><windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</windowsSettings>
</application>
Note that this is precisely the information MSDN documents as required. it also works fine for my own programs and those of many others.
Switching Windows to XP DPI-scaling only masks your DPI bugs.
Duplicated comClass Entries
Some people have installed faulty "updates" to several VB6 controls. These have broken many controls with "off by one" errors throughout various properties and methods.
They have also broken binary compatibility and thus add extra registry entries on a system that already has properly functional VB6 controls installed. One symptom of this is that many members of the classes involved will get two <comClass/> entries in the manifest that MMM produces.
MMM cannot "fix" this. It is the result of a machine that has been trashed by installing a faulty update from Microsoft. These "VB6 controls" security rollups" (and note Microsoft tried, tried, and retried getting these right - and never did) are not pushed via Windows Update, so you must have done it explicitly yourself.
As far as I know there is only one reliable fix: reformat and reinstall Windows, then avoid installing the bad updates again.
- Posted at Thursday, October 27, 2011 11:41 PM
- In General Category | Permalink | Comments (2)
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 quickly, the dangling console windows are extra clutter and just plain ugly. WSH scripts worked as a wrapper, but when I use the computers at my local library the scripts fail: they have WSH, the FSO, etc. locked down for safety.
PScript
So I ginned up a custom script host for running wrapper scripts, and I'm calling it PScript (as opposed to Microsoft's CScript and WScript). So far it does the job just fine.
PScript exposes a fairly small object model to the scripts, which can be written in VBScript or JScript. Most of the object model provides disk operations such as copying files and folders. There is also a Run to run your wrapped application.
The basic idea is to launch a PScript run instead of your application program itself. The script will copy work files from a folder or folders on your portable media to a hard drive location, such as a folder created under AppDataLocal. Then the script runs your program and optionally waits for completion. After your program is closed (or crashes) the script can copy back altered data and clean up the hard drive folder(s) you used.
Your portable application should be basing writable data file locations on its current directory and drive (CD) or rely on command line parameters. The script can set CD before the Run of your program to point to the work file location. Or if your program pays atetntion, it can pass command line arguments to it as well.
Finding PScript
While retaining Copyright, I am making PScript source and binary available for anyone to use and create derivative works from. You can find all of this along with documentation over at:
PScript - Portable Software Script Host
I hope some of you find it useful.
- Posted at Friday, August 5, 2011 02:25 PM
- In General Category | Permalink | Comments (1)
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)
- Posted at Sunday, July 24, 2011 09:03 AM
- In General Category | Permalink | Comments (8)
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)
- Posted at Thursday, April 14, 2011 12:19 PM
- In General Category | Permalink | Comments (9)
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)
- Posted at Tuesday, March 15, 2011 02:04 PM
- In General Category | Permalink | Comments (3)
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)
- Posted at Saturday, August 15, 2009 12:56 PM
- In General Category | Permalink | Comments (49)
ADOX 2.8 TypeLib in Vista SP2
Wow, it took me some time to notice it but Microsoft must have been listening. One of the headaches to watch for in Vista was that DAC 6.0 (and MDAC before that) was not including the compatibility typelibs for ADOX the way they do for ADO. Suddenly I see we have an option now though: msadox28.tlb is there, which implies that msadox.dll now exposes both sets of interfaces. Now programs compiled on Win2k or WinXP against ADOX 2.8 should work under Vista SP2 unlike previously. I had been changing my habits to use late binding for ADOX objects but someday (once all Vista in the world is at SP2?) I won't have to anymore. We can hope that Win7 ... (read more)
- Posted at Sunday, July 12, 2009 12:56 AM
- In General Category | Permalink | Comments (0)
Looking Toward 0.6.8 Soon
Early feedback has been full of small feature requests. Some of these seem odd, like requests to make MMM into a general purpose resource editor or some sort of 24-bit color icon embedder. Others are just off the wall, like asking that MMM support non-VB development tools (huh?). Still others make a bit more sense, like requesting that MMM fully install as a development topol and add a "Package with MMM" shell verb for .VBP files. Other programming tools already offer their own ways to generate isolated applications. MMM is targeted at VB6 to help make up for Microsoft's failure to support the community. Version 0.6.8 will ... (read more)
- Posted at Saturday, June 27, 2009 03:23 PM
- In General Category | Permalink | Comments (3)
MMM 0.6.7 Ready For Testing
New Version 0.6.7 As described earlier MMM version 0.6.7 is ready for testing and use. Download it here. While I have put it through some extensive testing nobody else has taken a look at it yet so there may be serious imperfections. More importantly some application manifest XML changes have been made that might need further tweaking to avoid breaking cases that worked fine earlier. Please report any problems, and fall back to version 0.6.6 if necessary. That may seem a little alarming, but everyone should keep in mind that MMM remains a work in progress. There has never yet been a "final release" version at any ... (read more)
- Posted at Sunday, June 7, 2009 10:52 AM
- In General Category | Permalink | Comments (6)
