October 25th, 2011· Have modified "MM.CMD" so that it works around the WINDOWS 7 (Vista also?) explorer command line bugs. The "/root" parameter only used where Windows major version is "5".
· Made some non-functional changes to the "dialog" commands so that the VBS marks the reason for its creation better (if validating or transforming).
· Includes newer PPWIZARD (version 11.140).
October 25th, 2011· The "DEFAULT_FILE_LANG_WHEN_GETLANGUAGE_FAILS" value was not being applied since the "10.341" release.
· Made minor changes and added error checking to make it much less likely that a line continuation (user) error would go undetected when creating scripts (VbsCa).
October 25th, 2011· Christoph Vogtlaender found a bug in the handling of double quotes by the "DATA" parameter of the "VbsCaSetup" command (quotes were being doubled up).
· Includes newer PPWIZARD (version 11.078).
October 25th, 2011· As pointed out by Christoph Vogtlaender, all files were getting the language "1033" (the configurable default). Have adjusted "FileLanguage()" as suggested and testing proves it works again.
August 29th, 2010· The "PopupMessage()" sample code in "TryMeDllCustomAction.MM" was leaking handles (as reported by "grizzlyyh"), incorporated the fix provided.
· By default MAKEMSI now generates a warning when no final validation occurs so that it is more obvious that this is not a desirable stte of affairs. Override "VALID_MSIVAL2_COULDNT_VALIDATE_WARNING" to disable or alter.
June 18th, 2010· The "DllCa-C" command was not detecting failures in the batch file correctly, in general this would cause other downlstream issues and be detected anyway.
· Added "DLLCA_C_MINGW_INCLUDE_DIRECTIVES" to the "DllCa-C" command's configuration.
· Fixed minor bug in "TryMeDllCustomAction.MM", it didn't display the "INFO" message if not compressing result.
· If no files being compiled now delete "_MAKEMSI_FileSource" if required to avoid "ICE03" messages.
March 28th, 2010· The "10.067" release broke the "Dialog" command as the "condition" parameter now needs to be specified. For the moment download fix from MAKEMSI's files area.
· You could not specify "" for the "Integer" parameter of the "DialogEntry" command as documented.
· Added "
March 8th, 2010· The code for the FilesInUse dialog tip was dodgy, I fixed this and improved it to show the number of running instances of a program if more than 1. It allows you to check the command line and uses regular expressions for matching.
· Updated "FIREWALL.MMH".
· The "CONDITION" parameter used to default to "" but is now mandatory for the commands "AbortIf", "DllCa", "ExeCa", "JsCaSetup" and "VbsCaSetup". It is unlikely anyone would want an empty condition and covers cases where insufficient testing has been performed.
January 30th, 2010· Improved the UnzipImage sample to log more and display better error if "iunzip.exe" not found.
December 26th, 2009· New "ControlName" parameter on the "DialogEntry" command allows you to "name" controls if you need to refer to them elsewhere.
· By default the "VbsCa" command will now use "FileMake" to generate the binary script so that the "binary" will no longer change for "insignificant" changes. This makes it much easier to detect "real differences" between msi versions.
· I have now replaced the code that made use of "DTREG.EXE" so it is no longer installed at all.
November 24th, 2009· Added the ".NET Framework Installed?" validation/sample.
· The base url of all links in the generated html report that pointed into the online MAKEMSI manual incorrectly started with "http://dennisbareis.com/makemsi/" (causing a 404).
· If you used "MM.CMD" without parameters and there was only one match whose filename contained spaces then the build wouldn't work.
· I finally got sick of the false AV hits on "DTREG.EXE" (which is only used by experimental "SelfRegImport" command) so its now zipped in a password protected archive to "hide it". If you need it then unzip to install.
November 12th, 2009· The "compile" command now supports caching of "MakeCab.EXE" output.
· A type of "DWORD" on the "Registry" command could fail with ICE70.
· Setting "UISAMPLE_DISABLE_TYPICAL_SETUP" to "A" would cause the build to fail syntax error.
November 12th, 2009· The default method used to persist properties during uninstall in the "Property" command was changed to use permanent (versus unregistered) components as this allows repair of those values.
· The compile options can now be varied per "compile" command.
October 8th, 2009· Added the "64Bit" parameter to the "RegistryRead" command.
· Added the "RAW" parameter to the "Registry" command.
· Rather than warn you if you forget to supply "VALUE" on the "MsiFormatted" parameter for "MultiString" types, the code now automatically applies it.
· An "ICE70" during validation and a 1406 error during install would be generated if you supplied a string starting with "#" (which has special meaning to Windows Installer) to the "Registry" command.
· As this is my new laptop running 64 bit Vista Ultimate, if anything was to go wrong this is the release it will occur in but I'm pretty confident. Let me know if that was wrong :-)
July 17th, 2009· The "FileFind" command could fail with a 2228 error on the "Signature" table when searching for a directory, I think this is because of a change to Windows Installer (it now requires it).
June 4th, 2009· Improved hte solution to the "HTMLMSITABLE_MSIDIFF_NAME" issue as the one in "09.153" required MSIDIFF to be installed or reconfiguration by default.
June 3rd, 2009· The "DllCa-C" command would fail if a long (non 8.3) binary key was chosen (for example "SimpleSlashRemoval.dll", "Simple.dll" worked).
· Updated the "VbsCa" & "VbsCaSetup" commands to support type 38 custom actions (simple inline).
· Updated the "JsCa" & "JsCaSetup" commands to support type 37 custom actions (simple inline).
· Removed the hardcoded path from the DEFAULT value for "HTMLMSITABLE_MSIDIFF_NAME" (minor fix for people not installing to "c:").
· Fixed the "VbscriptBasedService.MM" sample.
· Adjusted the attribute ("type" parameter etc) handling of all custom actions.
· Minor enhancement to the "Schedule" command.
February 14th, 2009· The "CONDITION_PER_USER" definition was faulty
December 28th, 2008· Fixed the "Integer" parameter of the "DialogEntry" command to work with numbers greater than 32,767.
December 11th, 2008· Improved regular expression testing (to pick up pattern syntax errors). This involves changes to the "DialogPreview" & "TableExportToIdt" commands and also in the custom action code generated for handling the "MatchRe" parameter of the "DialogEntry" command.
· Added "helper" buttons and other minor changes to the "Regular Expression Tester" tool.
November 15th, 2008· New "Regular Expression Tester" tool.
· The use of the "SameLine" parameter on a "DialogEntry" command would cause an "UNKNOWN VARIABLE" error for the variable "PARAMETER".
· Had accidently broken the "TryMeWithUserDialog.MM" example in the "08.312" release.
November 10th, 2008· Modified the "Insert" parameter of the "Dialog" command so that dialog insertion is optional.
· New "TryMeConditionDialogs.MM" sample
October 24th, 2008· Updated the IE automation based shortcuts so that they now support property formatting. For testing now support override with environment variable. Fixed bug which required url to end with "/" if there was no page info present.
October 24th, 2008· Updated the IE automation based shortcuts so that they now support property formatting. For testing now support override with environment variable. Fixed bug which required url to end with "/" if there was no page info present.
September 14th, 2008· The "DialogEntry" command's transformations were not being executed unless validations were also being performed.
· Updated the "Folder Attributes - Reapply at Install Time" code to also take care of empty directories.
· The "MsiSync.VBS" tool will now retry on Windows Installer return codes of 1618.
September 2nd, 2008· The "Directory" command's "conditional" directory creation support would create the code even if the key's case was different (keys are case sensitive). As this probably only occured in the case of a user error this change probably won't change the outcome but I have now documented error "2756".
· Moved the definition of validation entries for "MAKEMSI_TABLENAME_CABS" table to the "compile" processing.
· "VbsScriptTestingStub()" could logs some irrelevant "err" details.
August 19th, 2008· The "MsiValFilter" "regular expression" tests could cause validation filtering to fail on some workstations (on any particular machine it would either consistently fail or work). MAKEMSI should now also detect and warn about any filter failure. Also added some more debugging features to the validation process.
· Many MAKEMSI commands make use of the "GetSeqNumber()" routine which would display an error if the available space was exactly equal to the requested number of sequence numbers.
· The "CustomAction" column "ExtendedType" is now created by default allowing the new "PatchUninstall" custom action attribute to be used. If you are operating on existing msi files you may need to set the "TABLES_DEFINE.CustomAction.ExtendedType" macro to "N" if it doesn't already contain the column.
· Minor change to "HookInto.MMH" to fix the bug (#ifdef "macro") reported by Christoph Mockenhaupt (thanks). Found similar issue in "MacroCfg.MMH".
· Christoph Mockenhaupt improved his "FireWall.MMH" code.
July 6th, 2008Added these system folder properties to "COMPANY.MMH":
· CommonFiles64Folder
· ProgramFiles64Folder
· System64Folder
June 26th, 2008· The "CaDeleteFile()" code would most likely fail unless you had defined "oFS" globally.
· It is now possible to configure the "WrapInstall" command to wait for a period of time for an async uninstall to complete (for example an NSIS "uninstall.exe").
· New optional "CaSleep()" routine.
· The "UpgradeTable" macro can now be told the "@validate" information for the rows being added.
May 27th, 2008· Some tools create an "ActionText" table which only allows for short descriptions ("L64" for the "Description" column in my testcase). The "ProductValidation" command would fail in this situation, the text is now configurable with the default probably short enough for all cases.
· The "TableDelete" command can now delete tables that haven't been predefined.
May 5th, 2008· A new "AccessApply" command.
· Minor change to the "Access" command.
· The second "EntryCheck" in the VBS created with the "VbsCa" command should have been "ExitCheck".
April 8th, 2008· MAKEMSI now performs more validations to work around the Windows Installer bug described in section "A Windows Installer _Streams table key longer than 62 bytes corrupts the database".
· Updated the 2213 error message which gets displayed when build fails.
· Added the new "PatchUninstall" custom action attribute, rework required as mechanism changed in recent 4.5 beta 2.
March 6th, 2008· Not sure that the "DialogEntry" CheckBox type is working correctly when values other than 0/1 used. For example, uncheck "TryMeWithUserDialog.MM" go next and previous, checked again!
· English text, in sundry ".mmh" files (mainly "uisample.mmh"), see the "Internationalization" section.
· Look into smart cabbing.
· Check out sorting of .chm contents: And a very minor thing I noticed at the MAKEMSI help file: the command list in the contents seems to be alphabetical, but a number of entries starting with 'Registry' stand in between Platform and ProductFind. On closer examination, this is not a bug as such but the ordering of entries in the documentation (which I should improve).
· Any "flashing" tooltips in the documentation (MAKEMSI and generated) is an IE 7 bug, but is there something I can do about it?
January 23rd, 2008· Fixed a "DirectoryTree" bug which would also have affected the "Files" command (and possibly others). In some situations (long and/or similar directory names), part of the structure could be lost.
· New "MAKEMSI_MM_SUPPORT_TEXT" environment variable which controls the "support text" inserted by "MM.CMD".
· Updated the code which determines the default value of the "PLATFORM_SDK_DIR" macro.
· The "TryMeAddVersionKeywordAndLaunchCondition.MM" sample would fail if none of the "OnlyOn" types generated code.
December 8th, 2007· The "Registry" command now has a new type of "MultiString" to provide improved support for "REG_MULTI_SZ" (null delimitered) strings.
December 4th, 2007· The "UninstallRc0" parameter of the "WrapInstall" command was being ignored when "UninstallExe" not supplied.
· No longer fails if the "UninstallArgs" parameter of the "WrapInstall" command contains double quotes.
· The "TABLES_LNG_FILE_COLUMN" macro wasn't being applied to the definition of foreign keys into the file table (I think I found them all).
November 22nd, 2007· Can now validate the macro being restored by the "/MacroCfg" command.
· Now set "FILE_GENERATED_COMPONENT_MAX_LENGTH" to maximum as I now follow any specified "FILE_GENERATED_COMPONENT_PREFIX" with a unique number to ensure the generated component names will be unique within the first few characters anyway.
· New "TryMeUserInputUsed2CreateFile.MM" sample.
November 6th, 2007· Made the link process of the "DllCa-C" command more flexable (don't have to override the "kitchen sink"). Also added the "-mwindows" option. Other minor tweeks.
· The "VbsCa" command's logging (CaDebug()) now includes a timestamp.
· Minor cosmetic change to progress dialog (ActionText moved left and extended).
· Now that I know about error code "2716", I have created a new "FILE_GENERATED_COMPONENT_MAX_LENGTH" option which I have defaulted to 40.
· New "Browse for File" DLL custom action tip.
· Improved (and made configurable) the comment (in the html report) for the binary produced by the "ProductValidation" command.
October 18th, 2007· Added the "PreExists" parameter to the "MacroCfg" command.
· Fixed bug in the "files" command's handling of "SUBDIR='FLAT'", as this only adds files to a single directory you should not be getting an error message if adding to a single component. Note that this error message has also been improved.
· Changed the default value of the "DIRTREE_DRIVE_PROPERTY_PREFIX" macro to "DRIVE." as a Windows Installer bug prevent use of the previous prefix on the command line.
· New option "FILE_GENERATED_COMPONENT_PREFIX" (set to "FILE."). Also new "FILE_GENERATED_COMPONENT_USE_FILE_AS_KEYPATH" option.
September 24th, 2007· The CaMsgBox() function could previously display "ERROR:" for informational message boxes.
· Added definitions of DVD capacities (for example "COMPRESS_CAPACITY_DVD-R(SL)").
September 3rd, 2007· New "msi to exe" framework based on "Free Extractor".
· Added the 4 new "Shortcut" table columns defined by Windows Installer 4.0 to the "Shortcut" command.
· Text that "GuidGet" puts into the guid file is now configurable.
· Added the "UninstallOnSupersedence" & "Shared" attributes (Windows Installer 4.5) to the "component" command.
August 24th, 2007· Multiple uses of the "ComPlusCompUpdate" and "ComPlusRole" commands could fail as VB variables were being redefined.
· While not so much a bug as a user configuration issue, I have made it possible by default to allocate more than 23 com plus applications ("ComPlusApp").
· Better error message when MAKEMSI can't allocate sequence number(s) in the range requested (see GetSeqNumber()). Also fixed bug where allocated range could extend past specified end point (when range full).
August 11th, 2007· You can now pass the name of a macro in the "conditional" parameter of the "Directory" command.
· By default the code generated by the "ShortcutUrl" command now ignores resizing problems (to be more IE7 friendly).
· Added the "64bit" & "DisableRegistryReflection" attributes to the "component" command.
· The "Watch Uninstall Keys" facility will now also tell you if a detected product is a Windows Installer one.
August 1st, 2007· Updated the "Registry Conversion" facility and the "RegistryImport" command. Fixed some minor issues and added some debugging output. The registry exported by the "Install Watch PRO" program could contain intermediate ",00" sequences in "hex(2)" data (invalid) and terminating commas on hex(2/7) values, these are now handled.
· The ability to configure compile compression OFF by processing mode was not working correctly.
July 14th, 2007· Some source management utilities such as "AccuRev" can create NTFS hard links ("virtual files"), unfortunately Windows (WinXP SP2 at least) has bugs in their "8.3" filename retrieval. I have created a workaround so that the "file" and "files" commands will not fail for hard links. Improved associated error messages. Note that "virtual directories" (NTFS reparse or junction points) have always worked.
· Win2000 wrapped lines in the Add/Remove Applet, WinXP doesn't (probably a bug). This could cause some very wide dialogs if there were few newlines in the text defined by the "COMPANY_PROPERTY_ARPCOMMENTS" macro. By default MAKEMSI now inserts new lines at end of sentences (". ") making it much more likely the dialog will be well sized.
· Slight improvement to the error handling in the CA generated by the "WrapInstall" command.
· If you turned off documentation installation with "COMPANY_WANT_TO_INSTALL_DOCUMENTATION" macro you also had to set another macro ("MSI_COMPLETE_AT_END_OF_PASS") or the msi would not install, this is no longer required.
June 30th, 2007· The "MsiValFilter" report used html entities for a tick and cross, unfortunately these are not supported by IE6, so now default to true/false text.
· Updated the "Test for AntiVirus Issues" shortcut.
· If the build fails due to inability to create basic WSH objects then error message now suggests it's reinstallation.
February 28th, 2007· New "ProductValidation" command.
New "uisample.msi" template, which means at a minimum:
· New Vista "MsiRMFilesInUse" restart manager dialog.
· The action button of "VerifyReadyDlg", "VerifyRemoveDlg" and "VerifyRepairDlg" dialogs now have the Vista UAC "ElevationShield" attribute.
· Updates some "Error" table messages.
· Some new and updated "_Validation" table entries.
· Bugs in latest "MSIVAL2" from Microsoft may cause problems such as incorrect reporting of invalid bits in "VerifyRepairDlg.Repair" etc when updating MSIs, see code in "UISAMPLE.MMH" for example of workaround.
· Added the 4 new "Shortcut" table columns defined by Windows Installer 4 .