title: How can I programmatically read the properties inside an MSI file?
body: <p>Is there a way to read the properties inside an <a href="https://en.wikipedia.org/wiki/Windows_Installer" rel="nofollow noreferrer">MSI</a> file?</p>
  <p>For example, given a MSI file named <em>Testpackage.msi</em>, I need to find</p>
  <pre><code>productName
  PackageCode
  version
  </code></pre>
  <p>This I am going to use it with WMI uninstall</p>
  <pre><code>string objPath = string.Format(&quot;Win32_Product.IdentifyingNumber='{0}', Name='{1}', Version='{2}'&quot;, &quot;{AC9C1263-2BA8-4863-BE18-01232375CE42}&quot;, &quot;testproduct&quot;, &quot;10.0.0.0&quot;);
  </code></pre>
  <p>Using <a href="http://msdn.microsoft.com/en-us/library/aa370557(v=vs.85).aspx" rel="nofollow noreferrer">Orca</a> is a great option, if this can be achieved programmatically. Then I can use this to generate automatic release notes. And in un-installing program too.</p>