+1  A: 

Get rid of the MsiInterop that you are using and use the interop found in WiX's DTF. The Microsoft.Deploymnet.WindowsInstaller namespace has a SummaryInformation Class that exposes a read/write string Template property. Way better object model and interop without worrying about all the P/Invoke details that your current interop makes you deal with.

I'm home now so here's a code snippet:

using Microsoft.Deployment.WindowsInstaller;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using( var database = new Database(@"C:\orca.msi", DatabaseOpenMode.Direct  ))
            {
                database.SummaryInfo.Template = "Intel;666";
            }            
        }
    }
}

Notice the use of the using() clause. The Database class implements the IDisposable interface and automatically handles ( pun intended ) cleaning up all those pesky unmanaged handles for you.

Christopher Painter
Thanks for the answer Christopher,But I am not able to import the Microsoft.Deployment.WindowsInstaller; package. It will be helpful if elaborate more on this like, Which reference I am supposed to add to get this package?I have C# express edition installed and using .NET framework 2.0 for the application. Is this info helpful?ThanksRahul Muley.
Nocturnal
You tagged this question with WiX so I'm assuming you have WiX installed. If not goto wix.codeplex.com and download the release 3.0. You'll find your reference in ProgramFilesFolder\Windows Installer XML\SDK\bin
Christopher Painter