<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>

You can use
Microsoft's Orca.exe
.  Orca will allow you to open the MSI and edit/view all the tables in it. You will have to download the entire
Windows SDK
in order to get it, but thankfully that is free.
One alternative (which might be faster due to the download size of the SDK) is to use dark.exe from the
WiX project
.  Dark is a MSI decompiler, which will export everything into an XML file and collection of resources. The XML it outputs will have the information you are looking for.