<p>For versions 2.0, 3.0, and 3.5, installing <code>.NET Framework</code> directly from the <code>.msi</code> database would fail with a message about needing to launch <code>setup.exe</code> <em>unless</em> either the <code>ADDEPLOY</code> or <code>VSEXTUI</code> properties were set to 1. I’m assuming that when using <code>Group Policy</code> it automatically sets <code>ADDEPLOY</code> to 1 for every installation it performs, but otherwise you’d need to do this explicitly.</p>
<p>For both the <code>Client Profile</code> and <code>Extended</code> editions of <code>.NET Framework</code> 4.0, it works the same way except the one and only property you can set is called <code>EXTUI</code>; <code>ADDEPLOY</code> won’t have the desired effect. (If you look at the <code>CA_BlockDirectInstall</code> action in the <code>InstallExecuteSequence</code> table of the <code>.msi</code> database you’ll see that the condition for that particular action is “<code>NOT (EXTUI = 1 OR Installed)</code>”). After setting that property to 1, I’ve been able to perform deployments directly from the <code>.msi</code> via <code>Novell ZENworks</code> or <code>msiexec.exe</code> with no issues whatsoever. One would think <code>Active Directory</code> should be just as easy except, unlike with <code>ADDEPLOY</code>, I’m guessing you’ll probably need to set the <code>EXTUI</code> property yourself, which can be done with a transform.</p>
<p>A minimal command line to perform an unattended installation of, for example, 64-bit <code>.NET Framework 4.0 Client Profile</code> would be…</p>
<blockquote></blockquote>
<p>msiexec.exe /i netfx_Core_x64.msi EXTUI=1</p>
<p>…or simply…</p>
<blockquote></blockquote>
<p>netfx_Core_x64.msi EXTUI=1</p>
<p>Since there are no installation options for the user to customize, the (default) full interface mode is already effectively an unattended installation, so you don’t need to add <code>/passive</code> or any <code>/q</code> switches to make it execute unattended.</p>