How to Log Tracing Infomation from Your VBS WiX CustomAction

Today I will show you how to log tracing information from your custom actions into your MSI's log. We will still use the product.wxs sample. You can follow the steps below:

  1. Create an xml file: product.wxs (copied from WiX.chm)  as below
    This WiX file will create an MSI file to copy readme.txt into %sysdrv%/program files/test program/
    <?xml version='1.0'?>
    <WiX xmlns='http://schemas.microsoft.com/WiX/2003/01/wi'>
       <Product Id='12345678-1234-1234-1234-123456789012' Name='Test Package' Language='1033'
                Version='1.0.0.0' Manufacturer='Microsoft Corporation'>
          <Package Id='12345678-1234-1234-1234-123456789012'
                    Description='My first Windows Installer package'
                    Comments='This is my first attempt at creating a Windows Installer database'
                    Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />
     
          <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
     
          <Directory Id='TARGETDIR' Name='SourceDir'>
             <Directory Id='ProgramFilesFolder' Name='PFiles'>
                <Directory Id='MyDir' Name='TestProg' LongName='Test Program'>
                   <Component Id='MyComponent' Guid='12345678-1234-1234-1234-123456789012'>
                      <File Id='readme' Name='readme.txt' DiskId='1' src='readme.txt' />
                   </Component>
                </Directory>
             </Directory>
          </Directory>
     
          <Feature Id='MyFeature' Title='My 1st Feature' Level='1'>
             <ComponentRef Id='MyComponent' />
          </Feature>
          <InstallExecuteSequence>
             <Custom Action="test" Sequence='1'/>
          </InstallExecuteSequence>
    
          <Binary Id='Customization.vbs' src='Customization.vbs'/>
          <CustomAction Id='test' BinaryKey='Customization.vbs' VBScriptCall='Hello' Return='check'/>
       </Product>
    </WiX>
  2. Create a customization VBS code: Customization.vbs
                   Function LogInfo(msg) Dim rec
                        Set rec = Session.Installer.CreateRecord(1) 
                        rec.StringData(0) = msg
                        LogInfo = Session.Message(&H04000000, rec)
                    End Function
                                    
                    Function Hello
                        LogInfo "Customization is being called here."
                    End function
                    
  3. Compile:
    c:\WiX\candle product.wxs
  4. Link:
    c:\WiX\light product.WiXobj 
  5. Test your MSI:
    c:\WiX\msiexec /i product.msi /L*v log.txt
Open log.txt, search "Customization is being called here" to locate your the tracing information. Now you can log your debugging information to the calling MSI's log file for diagnostics.

See also

  • Introduction to the Windows Installer XML(WiX) Toolset
  • MSI basics
  • WiX Tutorial - Steps to Create an MSI with Windows Installer XML(WiX)
  • How to Install a COM DLL with Windows Installer XML(WiX)
  • How to Add a License Agreement UI to Windows Installer XML(WiX)
  • How to Add Customization Code CustomAction to Windows Installer XML(WiX)
  • How to Reset Windows Service with Windows Installer XML(WiX)
  • How to Troubleshoot MSI Installation
  • How to Pass Parameters to the Customization Code(CustomAction)
  • How to Log Tracing Infomation to the Calling MSI from CustomAction
  • How to Invoke InstallUtil.exe to Call Your Managed Installer Class
  • How to Create a Website and Virtual Directory with Windows Installer XML(WiX)
  • How to Install Files to an Arbitrary Location Outside "Program Files"
  • How to Read Configuration Parameters from Xml File
  • How to Use Environmental Variables and WiX Preprocessor
  • Download WiXSharp



  • THIS POST IS PROVIDED "AS-IS" WITH NO WARRANTIES AND CONFERS NO RIGHTS. Build time: Sun 01/27/2008 . ©2007 Dalun Software. All rights reserved. Back to Article List