#22 - Added MSBuildCommunityTasksPath msbuild property to allow building without requiring the MSBuild Community Tasks to be installed
Added WinDDK 7600.16385.1, and importing msi.props in projects to set up additional include and library directories to allow building without Visual Studio 2010 to be installed
Updated atlbase.h to fix warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
Added doxygen 1.8.10 to allow building without requiring doxygen to be installed
Using "localhost" for the DSN ODBC SQL Server address and explicitly specifying the default port number to support accessing a named instance from the default port without specifying the instance name - @icnocop
Added ODBC_SQL_MESSAGES containing out-of-band SQL status messages to output parameters of ODBC_Execute and ODBC_Execute_Binary immediate custom actions.
Added --flattenonly to ODBQ.exe, process input without executing.
Added --rawoutput to ODBQ.exe, output results in 'raw' format.
Added --database to ODBQ.exe, default database name.
Added short versions of -f (--file) and -o (--outputfile) to ODBQ.exe.
Added XsltFilename to ODBCExecute, ODBCExecuteFile and ODBCExecuteBinary that specifies an optional XSLT transform for the data.
Added GenerateRandomString custom action to Cryptography.dll.
Added Win32_GenerateGuidString and Win32_IsValidGuid custom actions to SystemTools.dll.
Added Win32_ReadFile and Win32_WriteFile custom actions to SystemTools.dll with UTF-8 support.
Added Service_Exists custom action to SystemTools.dll.
Added String_LTrim and String_RTrim to StringTools.dll.
Added UTF-8 encoded file support for ODBC custom actions, Wix extensions and ODBQ.exe.
Added UTF-8 encoded file support to SystemTools::TemplateFile Wix extension.
Added Win32_GetSpecialFolderPath custom action to SystemTols.dll.
DESEDE3_Encrypt and DESEDE3_Decrypt now support binary data.
Added Base64EncodeA, Base64EncodeW, Base64DecodeA and Base64DecodeW to Cryptography.dll.
Added support for sqlvariant in ODBC custom actions, Wix extensions and ODBQ.exe.
DESEDE3_Encrypt and DESEDE3_Decrypt custom actions now return empty results for empty inputs and use PKCS7 padding for encrypted values. Use a previous MSI Extensions 1.1 to decrypt and upgrade existing values.
DESEDE3_Encrypt and DESEDE3_Decrypt custom actions will fail if passed a key larger than 24 bytes. Previous versions silently truncated the key.
ODBC custom actions, extensions and ODBQ will no longer fail processing empty files. A warning will be produced instead.
Build and unit tests run on Windows 7, MSIShim adds a dummy Property table with a value for ProductCode.
Connection strings in custom action data passed between immediate and deferred ODBC custom actions is now encrypted so that credentials are not logged in clear in MSI logs.
Bug: XmlTools_XslTransform broken for output of type text.
Bug: CreateDatabases_SQLServer_Deferred and CreateDatabases_Access_Deferred attempt to make a database connection even if there's nothing to do.
Bug: error detail lost in custom actions that rely on functions returning Win32 DWORD error codes.
Bug: SystemTools extensions incorrectly impersonate for file copy, move, delete, template processing and registry operations.
Bug: ODBC custom actions, extensions and ODBQ may fail to execute a statement at SQLDescribeParam.
Bug: ODBC custom actions, extensions and ODBQ don't work on SQL Server 2000.
Bug: Win32_DirectoryCreate works inconsistently when paths contain forward slashes depending on whether a path exists or not.
Bug: ODBC messages are truncated at 208 characters.
Bug: SelectDbDlg dialog mail fail when DATABASE_SERVER is re-defined with a custom action with "Error 2878: On the dialog SelectDbDlg the control Server has a possible value: . This is an invalid or duplicate value."