Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS with no warranties, and confer no rights. Additionally, views expressed herein are my own and not those of my employer, Microsoft.
Question
You previously posted a set of instructions that can be used to run the .NET Framework 2.0 setup by calling the MSI directly. The instructions in that post describe a command line parameter named ADDEPLOY that needs to be passed to msiexec.exe to allow the MSI to install correctly.
I want to deploy the .NET Framework 2.0 in my network using Group Policy. I cannot specify a command line parameter like ADDEPLOY in the Group Policy deployment package creation UI. How can I deploy the .NET Framework 2.0 MSI on my network using Group Policy?
Answer
The following example steps can be used to create a Group Policy object to deploy the .NET Framework 2.0 in a network:
It is important to note that the .NET Framework 2.0 only supports deployment by machine assignment, not by user publishing. This is because the user may not be an administrator on the machine in the advertised scenario, and because the .NET Framework is a per-machine and not a per-user application.
Behind the scenes, the .NET Framework 2.0 MSI has a custom action named CA_BlockDirectInstall_GUIH_SKU_URT that is used to prevent users from installing by double-clicking on the MSI directly. This custom action has the following complex condition statement in the InstallExecuteSequence table:
( NOT (ADDEPLOY = 1 OR USING_EXUIH = 1 OR USING_EXUIH_SILENT = 1 OR ADVERTISED = 1 OR ProductState >= 1) ) AND ( NOT (ADDEPLOY = 1 OR USING_EXUIH = 1 OR USING_EXUIH_SILENT = 1 OR ADVERTISED = 1 OR ProductState >= 1) )
The ADVERTISED property will be automatically set if you create a Group Policy object to deploy the .NET Framework 2.0 MSI to a network by machine assignment.
I previously posted a set of instructions for creating an administrative install point for the .NET Framework
This guide is intended to serve as a collection of links to articles, tools, tips and tricks that explain
Are there instructions to install .Net Framework 3.5 through Active Directory. Attempting the above doesn't seem to work.
Thanks
Hi Scotthellewell - The instructions for deploying the .NET Framework 2.0 SP1, 3.0 SP1 and 3.5 are different than the ones listed here. The documentation for how to do this is currently still being reviewed, but it should be posted and available on MSDN soon. I will create a new blog entry with a link to the updated documentation once it is available. I'm sorry for the hassles in the meantime.
We're looking at developing a generic external ui handler for our suite of products. Group Policy deployability is big concern for our company.
Can you please explain how the ADVERTISED property is being set when a GPO is created to deploy the .NET Framework 2.0 MSI? Is this standard Group Policy behavior for any MSI, or functionality your team had to implement?
Hi Pmcclosk - We did not have to do anything specific in .NET Framework setup to allow Group Policy deployment. Following the steps listed in this blog post should work fine without taking any additional action in your Group Policy objects. One thing to note there - Group Policy requires creating an object for each MSI. That means that even if you have an external UI handler, if a user wants to deploy your product via Group Policy, they will have to create a separate GPO to deploy the .NET Framework 2.0 MSI prior to deploying your product MSI.
It looks like my explanation in this blog post is not correct though - I had thought that the ADVERTISED property was something standard in Windows Installer, but I can't find it in the documentation anywhere. I'm not sure exactly what gets set during a GPO deployment, but we have verified that this CA_BlockDirectInstall_GUIH_SKU_URT custom action does not run during GPO machine assignment scenarios, and therefore does not block you from running the MSI directly in that type of scenario.
Thanks Aaron. I've found that by querying the ProductState of the running installation when it is assigned by machine through group policy will return INSTALLSTATE_ADVERTISED.