$=SetOption('Explicit','On')
Global $System, $Form1, $MainMenu, $MenuItem1, $MenuItem2, $MenuItem3
Global $Listbox1, $ListView1, $StatusBar1, $OpenFileDialog1, $dlgOpen
$System = CreateObject("Kixforms.System")
If Not $System
  $=MessageBox("KiXforms.Net Not Initiated. This Script Will Now Close.","Error",16)
  Quit()
EndIf
$=$System.Application.EnableVisualStyles
$Form1 = $System.Form()
$Form1.Left = 0
$Form1.StartPosition = 0  ;FormStartPosition_Manual
$Form1.Size = $System.Size(603,495) ;(Width,Height)
$Form1.Text = "Orca .Net"
$Form1.Top = 0
$MainMenu = $System.MainMenu()
$MenuItem1 = $MainMenu.MenuItems.Add($System.MenuItem("File"))
$MenuItem2 = $MenuItem1.MenuItems.Add($System.MenuItem("Open"))
$MenuItem2.Click = "$$=OpenMSI"
$MenuItem3 = $MenuItem1.MenuItems.Add($System.MenuItem("Exit"))
$MenuItem3.Click = "Quit"
$Form1.Menu = $MainMenu
$ListBox1 = $System.ListBox()
$ListBox1.Anchor = 7  ;Top,Bottom,Left
$ListBox1.Height = 440
$ListBox1.Left = 0
$ListBox1.Top = 0
$ListBox1.Width = 250
$ListBox1.Sorted = -1
$ListBox1.Click = "$$=ListInfo($$dlgOpen)"
$=$Form1.Controls.Add($ListBox1)
$ListView1 = $System.ListView()
$ListView1.Anchor = 15  ;Top,Left,Bottom,Right
$ListView1.Height = 440
$ListView1.Left = 250
$ListView1.Top = 0
$ListView1.Width = 345
$ListView1.View = $System.View_Details
$=$Form1.Controls.Add($ListView1)
$StatusBar1 = $System.StatusBar()
$StatusBar1.Text = ""
$=$Form1.Controls.Add($StatusBar1)
$OpenFileDialog1 = $System.OpenFileDialog()
$OpenFileDialog1.InitialDirectory = "@SCRIPTDIR"
$OpenFileDialog1.Filter = "Windows Installer (*.msi)|*.msi"
$OpenFileDialog1.FilterIndex = 1
$OpenFileDialog1.RestoreDirectory = 1 ;True
$Form1.Center
$Form1.Show  ;Displays the Form
While $Form1.Visible
  $=Execute($Form1.DoEvents())
Loop
Exit 0
Function ListInfo($strMsiFile)
  Dim $objMSI, $objMSIdb, $objMSIview, $strMSIRecords, $i, $a, $e
  If NOT $ListBox1.Text = ""
    $objMSI = CreateObject("WindowsInstaller.Installer")
    $objMSIdb = $objMSI.OpenDataBase($strMsiFile,0)
    $objMSIview = $objMSIdb.OpenView("SELECT `Name` FROM `_Columns` WHERE `Table` = "+"'"+$ListBox1.Text+"'")
    $objMSIview.Execute()
    $strMSIrecords = $objMSIview.Fetch
    $=$ListView1.Columns.Clear
    $Form1.UseWaitCursor = 1
    $ListView1.BeginUpdate
    $i=0
    While NOT $strMSIRecords = ""
      $i=$i+1
      $=$ListView1.Columns.Add($System.ColumnHeader($strMSIRecords.StringData(1),150,$System.HorizontalAlignment_Left))
      $strMSIrecords = $objMSIview.Fetch
    Loop
    $objMSIview = $objMSIdb.OpenView("SELECT * FROM "+"`"+$ListBox1.Text+"`")
    $objMSIview.Execute()
    $strMSIrecords = $objMSIview.Fetch
    $=$ListView1.Items.Clear
    While NOT $strMSIRecords = ""
      $a=$ListView1.Items.Add($strMsiRecords.StringData(1))
      For $e=1 To $i
        $=$a.SubItems.Add($System.ListViewSubItem($strMsiRecords.StringData($e+1)))
      Next
      $strMSIrecords = $objMSIview.Fetch
    Loop
    $ListView1.EndUpdate
    $Form1.UseWaitCursor = 0
  EndIf
EndFunction
Function ListTables($strMsiFile)
  Dim $objMSI, $objDB, $objView, $objRS, $intA
  $=$ListBox1.Items.Clear
  $ListBox1.BeginUpdate
  $Form1.UseWaitCursor = 1
  $objMSI = CreateObject("WindowsInstaller.Installer")
  $objDB = $objMSI.OpenDatabase($strMsiFile,0)
  $=Split($strMsiFile,"\")
  $Form1.Text = $[Ubound($)] +" - Orca .Net"
  $objView = $objDB.OpenView("SELECT * FROM _Tables")
  $objView.Execute()
  $objRS = $objView.Fetch
  $intA = 0
  While Not $objRS = ""
    $intA=$intA+1
    $=$ListBox1.Items.Add($objRS.StringData(1))
    $objRS = $objView.Fetch
  Loop
  $ListBox1.EndUpdate
  $Form1.UseWaitCursor = 0
  $StatusBar1.Text = "Tables: "+CStr($intA)
EndFunction
Function OpenMsi()
  $=$ListView1.Columns.Clear
  $=$ListView1.Items.Clear
  $=$ListBox1.Items.Clear
  If $OpenFileDialog1.ShowDialog() = 1
    $dlgOpen = $OpenFileDialog1.Filename
    If NOT $dlgOpen = ""
      $=ListTables($dlgOpen)
    EndIf
  EndIf
EndFunction