How to prevent "This program might not have installed correctly" messages on Vista

Windows InstallerInstallationUacWindows Appcompat-Platform

Windows Installer Problem Overview


I have a product setup executable that copies some files to the user's hard drive. It's not a typical installer in the normal sense (it doesn't add anything to the Start Menu or Program Files folders).

Each time the setup program is run on Vista, after the exe terminates, Vista produces a task dialog:

  • This program might not have installed correctly
  • Reinstall using recommended settings
  • This program installed correctly

Is there a function I need to call from the exe or registry entry to set, to indicate to the operating system that the program installed correctly (or to at least supress this message)?

Related questions: https://stackoverflow.com/questions/1069135/this-program-might-not-have-installed-correctly-message-in-windows-7-rc (for Windows 7-specific issues)

Windows Installer Solutions


Solution 1 - Windows Installer

Include this section in the program's manifest file:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <!--The ID below indicates application support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
    <!--The ID below indicates application support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    <!--The ID below indicates application support for Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!--The ID below indicates application support for Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    <!--The ID below indicates application support for Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>

  </application>
</compatibility>

It'll suppress Program Compatibility Assistant by stating that your app is compatible with Vista and Win 7.

Solution 2 - Windows Installer

You need to add some information into the AppCompat section of the registry.

See this link and look for "How to disable a Program Compatibility Assistant warning".

Also there is apparently a method that involves adding a manifest file to your setup executable to flag it as "Vista-aware".

Solution 3 - Windows Installer

The first thing you should try is to add a "Vista manifest" with requestedExecutionLevel

If that is not enough (Clicking cancel on uninstall with UAC off etc) you need to use undocumented stuff like setting the image version field in the PE header to 6.0

Solution 4 - Windows Installer

One of the reasons that this message pops up is when the system thinks you're running an installer but it doesn't find an entry for the application in the add/remove programs list.

I don't know if this is the case for your app, but it's worth checking.

Solution 5 - Windows Installer

There seems to be more reasons for this. If you renamed you application remember also the names in Assembly Information, they all has to be equal otherwise the nag-screen "This program might not have installed correctly" might pop-up :-P enter image description here

Can also be modified directly in the AssemblyInfo.vb/.cs file

Solution 6 - Windows Installer

I solved it by changing the assembly title.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJasonView Question on Stackoverflow
Solution 1 - Windows InstallermikView Answer on Stackoverflow
Solution 2 - Windows InstallerJon GrantView Answer on Stackoverflow
Solution 3 - Windows InstallerAndersView Answer on Stackoverflow
Solution 4 - Windows InstallerLarry OstermanView Answer on Stackoverflow
Solution 5 - Windows InstallerMrCalvinView Answer on Stackoverflow
Solution 6 - Windows InstallerMoonhyuk ChoiView Answer on Stackoverflow