MSIObject = CreateObject Win32::OLE 'WindowsInstaller.Installer'; if (defined ($MSIObject)) { print "Object Available\n"; $dbReference = $MSIObject->OpenDatabase( "C:\\temp\\AppsenseApplicationManager.msi", 1 ); $query = "SELECT * FROM Feature WHERE Feature = " . "'Agent'"; $view = $dbReference->OpenView($query); $results = $view->Execute(); $record = $view->Fetch(); if( $record ) { for( my $loop = 0; $loop < $record->FieldCount(); $loop++ ) { print "Field = " . $loop . " = " . $record->StringData($loop) . "\n"; } } else { print "Record is undefined!\n" } #### $newRecord = $MSIObject->CreateRecord( $record->FieldCount() ); $newRecord->StringData(1, 'Agent2'); for (my $loop = 0; $loop < $newRecord->FieldCount(); $loop++) { print "New Record Field = " . $loop . " = " . $newRecord->StringData($loop) . "\n"; } #### $view->Modify(9, $newRecord); print "View Error = " . $view->GetError() . "\n"; $dbReference->Commit(); $view->Close(); $dbReference = undef; $reference = undef; }