This blog entry provides an example of writing to the windows installer log file from a custom action using VBScript. It follows on from the previous blog post which provided a tutorial on using SQL inside an MSI database custom action using VBScript.
It forms part 15 of an 17-part series that explores how to use VBScript to manipulate MSI relational databases using the Windows Installer API. Throughout this series of tutorials, we identify the common issues that we encounter and the best practises that we use to overcome them.
Logging is extremely useful when debugging MSIs. Most people that write Custom Actions don’t write logs, but if you’re writing quite extensive logic you may wish to consider it. Simply paste the following logic into your CA:
'Subroutine to write to log file
Const msiMessageTypeInfo = &H04000000
Sub writeToLog(ByVal msg)
Set record = Installer.CreateRecord(1)
record.stringdata(0) = "AlkaneLog: [1]"
'This value gets subbed in to the [1] placeholder above
record.stringdata(1) = msg
record.formattext
message msiMessageTypeInfo, record
Set record = Nothing
End Sub
and write to the log like this:
writeToLog("This is a log message")
Thanks for reading about writing to the Windows Installer log file from a Custom Action using VBScript. Next you can find out how to edit MSI files in the windows installer cache using VBScript.
Hello Thanks, it’s very useful endeed, it’s possible to do the same things but in powershell ?
Thanks !
Hi Richard. It is possible to access the windows installer API via Powershell – an example is here: http://www.alkanesolutions.co.uk/2014/10/30/powershell-windows-installer-msi-transforms-mst/. However this particular example demonstrates writing to the log file for the current Windows Installer session. And since Windows Installer only supports VBScript natively and not Powershell, I doubt it is possible.