Why is Microsoft Windows 8 compatible after installation?

I have a product that we have developed and we are just testing on Windows 8 and Server 2012. The problem is that after installation on Win 8/2012 compatibility ends (from what I understand far) opens a dialog in which it says the app requires .Net 3.5 to work properly. See screenshot below:

.net required dialogue

Since our product is a native printer driver, I think this is unlikely! This is only a prerequisite for Win 8/2012 - this is the visual C ++ re-distributable version.

I also use install shield 2010 to create an installer if that helps.

Has anyone else seen Win 8 incorrectly prompting applications to require .net 3.5? Does anyone know of any reliable source that defines how the compatibility shim determines if an application requires .net 3.5?

Thank!

Andy

** Update **

Found this post on msdn blog: http://blogs.technet.com/b/askcore/archive/2012/05/14/windows-8-and-net-framework-3-5.aspx . Briefly, he suggests that the dialogue can be invoked by the following:

  • You are trying to install .Net 2.0, 3.0, or 3.5 using a redistributable package available for download from Microsoft.
  • The application tries to install one of the redistributable packages for the required version during its own installation process.
  • An application that requires an outdated version runs without first installing the required version.

Unfortunately, none of this explains why I am seeing this!

** Update **

Just to be explicit, I don't have managed libraries or exes, just pure native c and c ++, some built with the visual studio compiler (no clr flags) and some with DDK.

... How embarrassing! ...

+3


source to share


3 answers


Well, it's a little awkward ...

... It turns out there was a .net library compiled with CLR 2 that ran deep inside some InstallScript inside the installer. (In my defense, the installer is pretty big!)



So apologize for anyone who thinks this is really a mystery, the dialogue was true! Also, apologies to the guy who guessed the first time and has since deleted his post. This was quite informative on the matter. Feel free to add it back and I'll mark as an answer! :)

Andy.

0


source


I think you are looking at a false positive. Here's another quote from your linked blog:

The classic term "your mileage may vary" is applied here because we really don't know how all applications will react to adjustments by intercepting an installation attempt. In addition, some applications look for specific files to check if the desired .Net version is installed. Such application installations may fail if .Net 3.5 was preinstalled, because some of the files previously presented in older versions were deprecated in Windows 8. However, we test many commonly used applications, and in some cases introduce presets if they detect .NET in an inappropriate manner.

To avoid problems with applications that need it, it is best to enable the new .Net 3.5 before installing the application.



Translation: This is a complete hack.

+1


source


I am much more experienced with the PCA message that triggers "failed" installations. For those who can definitely do something better, by editing the template the app will appear in the InstallShield \ support folder setupexe.<level>.manifest

(level invoker

or highest

or admin

) and in these cases you add an item supportedOS

for each additional OS you claim to support, for example adding <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>

for Windows 8.

It might be worth starting by seeing how it helps in the case of .NET detection. I wouldn't hold my breath, but it will help with that scenario where someone hits an invalidate before the installation is complete.

(Note that for the code we tested on a given target OS, you must upgrade to the version of InstallShield that was actually tested there, but in many cases it is sufficient to copy the correct element supportedOS

.)

+1


source







All Articles