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

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: "This program might not have installed correctly" message in Windows 7 RC (for Windows 7-specific issues)

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".

Prevent Getting Sick, Many people have high blood pressure, or are at risk for it. Learn how you may be able to prevent or treat it, with simple, healthy lifestyle� Prevent definition, to keep from occurring; avert; hinder: He intervened to prevent bloodshed. See more.

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.

Advice for the public, Heart disease is the leading cause of death in the U.S. and a major cause of disability. Learn how you can reduce your risks and prevent heart� 7 synonyms of prevent from the Merriam-Webster Thesaurus, plus 48 related words, definitions, and antonyms. Find another word for prevent. Prevent: to keep from happening by taking action in advance.

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

How do I prevent and prepare for COVID-19?, What You Can Do � How to Prevent the Spread of COVID-19 � Stay home if you start to feel ill � Avoid close contact with people (social distancing) � Wash your hands� Synonyms for prevent at Thesaurus.com with free online thesaurus, antonyms, and definitions. Find descriptive alternatives for prevent.

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.

How to Prevent High Blood Pressure: MedlinePlus, PRACTICE SAFE SEX AND AVOID RISKY BEHAVIORS. Many strains of the human papillomavirus, also known as HPV, are spread through skin to skin contact� prevent meaning: 1. to stop something from happening or someone from doing something: 2. to stop something from…. Learn more.

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

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

Heart Disease Prevention, Do you have a fear of falling? Find tips on fall prevention, how to avoid tripping and slipping, and ways to lower your chances of getting a� Synonyms: prevent, preclude, avert, obviate, forestall These verbs mean to stop or hinder something from happening, especially by advance planning or action. Prevent implies anticipatory counteraction: "Some contemporaries believed that capitalism and the rise of an international economy would prevent war among 'civilized' states" (John Howard Morrow).

Disease Outbreak Control Division | COVID-19, 10 tips to prevent food poisoning, including hand hygiene, food storage, use-by dates and cooking temperatures. Prevent is about safeguarding and supporting those vulnerable to radicalisation. Prevent is 1 of the 4 elements of CONTEST, the Government’s counter-terrorism strategy. It aims to stop people becoming terrorists or supporting terrorism. Find more information about how schools prevent extremism and safeguard young people via Counter Extremism

Seven Steps to Prevent Cancer, PREVENT INTERGRATED PROJECT European Commision eSAFETY road safety accidents avoid preventive active safety APALACI COMPOSE USERCAMS MAPS&ADAS WILLWARN LATERALSAFE SAFELANE INTERSAFE PROFUSION RESPONSE3 SASPENCE INSAFES passive DaimlerChrysler AG, Audi AG, BMW AG, BMW Forschung und Technik GmbH, Centro Ricerche FIAT SCPA, Ford ForschungszentrumAachen GmbH, Peugeot Citroën Automobiles SA

Prevent Falls and Fractures, Prevent new HIV transmissions by using proven interventions, including pre-exposure prophylaxis (PrEP) and syringe services programs (SSPs) The HIV epidemic affects communities differently. Locally designed plans will guide the scale-up proven interventions, such as PrEP and SSPs, to address communities’ unique needs.

Comments
  • It's probably not a good idea for a installer to mess with AppCompatFlags, that's for IT/admins
  • In my case, sometimes I get "This program might not have uninstalled correctly" when my installer is run to do an add/remove features install. Since the setup.exe, in my case, is a stock EXE that was supplied by InstallShield, the manifest option is out for me. As for the registry option, I'm not sure it applies either. There's nothing in that article that applies, specifically, to this particular message. And my installer can't run in a compatibility mode, because it needs to know whether or not it's running in Vista in order to do the right things in Vista.
  • You can edit the manifest of exe files generated by other applications using a resource editor such as the free XN Resource Editor (wilsonc.demon.co.uk/d10resourceeditor.htm). (However, if the exe has any kind of checksum or validation logic built in, changing its resources may invalidate that.)
  • IN addition, the decision seems to be made before your exe runs, adding after the fact doesn't seem to have an effect (Win7 here)
  • Just for others who never used any "manifest": Goto your Visual Studio project > Properties > Application > View Windows Settings > About Line 26
  • Windows 8's GUID, in case anyone needs it, is {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}, although it doesn't appear to be necessary to suppress the PCA prompt.
  • And the Windows 8.1 GUID is <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
  • And the Windows 10 GUID is <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
  • If your project is not a visual studio project but actually a setup.exe created with INSTALLSHIELD (I had version 12), then do this: The manfiest text file is in C:\Program Files (x86)\Macrovision\IS12\Support, and are called SetupExe.<type>.manifest, where <type> is one of Admin, Highest or Invoker. Which one is used depends on what you selected in Release options. This will change all future setup.EXE's that you build under this product but it's a good hack.
  • Thanks, Larry. The installer actually does add an entry to the Add/Remove programs list, which is the weird thing. I resolved the issue by embedding a manifest in the installer, though.