0
votes

I have a .NET 4.0 Winforms application that I'm trying to install on Windows 8.1 under InstallShield. When the files are being copied, there are many Windows popups with the message:

An App on your PC needs the following Windows Feature:
.NET Framework 3.5 (includes .NET 2.0 and 3.0)

What generates this message, and how can I eliminate it?

I'm pretty sure that all my app executable and assemblies are set for 4.0 based on the "References" and project properties.

I want to have the installation continue without a needless .NET 3.5 install since it's not needed; if I choose "Skip this installation", the application runs properly. Even if I were to preemptively install .NET 3.5 by using DISM, it will require the user to locate the Windows 8 install CD to enable the feature.

1
You are tripping the "Feature on Demand" detection logic in Windows 8. You left no breadcrumbs to guess why. More about it here. - Hans Passant
That's definitely what's happening. I'm guessing that my app is generating a false trigger for Feature on Demand. I'll open a case with Microsoft. - Mike

1 Answers

1
votes

It turned out that several InstallShield components that contained .NET programs or assemblies had their InstallShield component ".NET Settings" set to "Local assembly", which triggered the Windows 8 Feature On Demand. Since the components didn't need to be available outside of this installation, the solution was to set them to "Not a .NET assembly".