* This is the original defining in MSI.H: * #define MSIDBOPEN_DIRECT (LPCTSTR)2 // database direct read/write without transaction * This attempt does NOT seem to work * (MsiOpenDatabase returns an error, 1638 or something) #define MSIDBOPEN_DIRECT CHR(2) DECLARE integer msiOpenDatabase IN msi string DB, string persistMode, LONG @ DbHandle DECLARE LONG MsiDatabaseOpenView IN MSI LONG hDbHandle, STRING @ cSql, LONG @ nViewHndl DECLARE LONG MsiViewExecute IN MSI LONG hView, LONG hParamRecord DECLARE LONG MsiCloseHandle IN MSI LONG hMSIHANDLE DECLARE long MsiViewFetch IN MSI LONG hView, LONG @ hRecord DECLARE LONG MsiRecordGetString IN MSI LONG hRecord, LONG nFldIdx, String @ cOutValue, LONG @ nValueLen DECLARE LONG MsiRecordSetString IN MSI LONG hRecord, LONG nFldIdx, String cOutValue DECLARE LONG MsiDatabaseCommit IN MSI LONG hDB STORE 0 TO hDB, hView ?msiOpenDatabase( "c:\temp\jnk.ise", "C:\Temp\jnk2.ise", @hDB ) cSql = "UPDATE Property SET Value='11.12.345' WHERE Property='ProductVersion'" ?msiDatabaseOpenView(hDb,@cSql,@hView) ?msiViewExecute(hview,0) ?msiCloseHandle(hView) ?MsiDatabaseCommit(hDB) ?msiCloseHandle(hDB) *Voila! c:\temp\jnk2.ise now has the new version number!!