Someone wondered if the following found in a Windows Installer log was indeed an error:
MSI (c) (A8:A0) [14:38:51:427]: Transforming table Error.
MSI (c) (A8:A0) [14:38:51:427]: Note: 1: 2262 2: Error 3: -2147287038
Recall from Diagnosing Installation Errors that field 1 in the second line indicates the Windows Installer error. If you look that up in the Windows Installer Error Messages reference documentation you’ll see that error 2262 (in English) reads, “Stream does not exist: . System error: .” If you format the message using the fields in the second log line you’ll read, “Stream does not exist: Error. System error: -2147287038.” Convert that error to hexadecimal for easier reference to 0x80030002.
According to winerror.h as mentioned in Deciphering an HRESULT, 0x80030002 indicates that the error belongs to the OLE storage facility,
FACILITY_STORAGE. If you look for the entire error (since it’s not a Win32 error, as indicated by the
FACILITY_WIN32 facility) in winerror.h – also available online – you’ll find that error is defined for
Since Windows Installer files are OLE structure storage files, this system error can be expected for fatal errors when something isn’t available, but the error may not always be fatal. When patching a product, for example, you’ll see the second log line from above a lot – especially toward the beginning of the client and server processes. It means that a table wasn’t found in the transform contained in an applicable patch. So the first log line actually refers to the Error table, not necessarily that an error occurred – just that the Error table wasn’t found in a transform.