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

6

50

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)

Chatham answered 22/5, 2009 at 14:42 Comment(0)
C
7

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

Chisholm answered 22/5, 2009 at 14:56 Comment(4)
It's probably not a good idea for a installer to mess with AppCompatFlags, that's for IT/adminsKinematograph
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.Shaunta
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.)Quicksilver
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)Signora
B
46

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.

Bashan answered 15/4, 2012 at 1:43 Comment(9)
Just for others who never used any "manifest": Goto your Visual Studio project > Properties > Application > View Windows Settings > About Line 26Armageddon
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.Quicksilver
And the Windows 8.1 GUID is <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>Plasterwork
And the Windows 10 GUID is <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>Hashim
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.Error
I added the above XML into the manifest resource of an InstallShield X setup.exe, and that fixed the problem. I used Resource Hacker to edit the EXE.Rosenberger
Do we also need GUIDs for Windows Server operating systems, or is it not a problem?Rosenberger
Not all applications require this, though. What conditions cause the compatibility warning to show up?Shaky
Worked for me. If you're using the Visual Studio command line to build (CL and LINK), if the program being made is foo.exe, just put the above in a file called foo.exe.manifest and add /MANIFEST:embed to the link command, and it will link that into the .exe.Pelligrini
C
7

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

Chisholm answered 22/5, 2009 at 14:56 Comment(4)
It's probably not a good idea for a installer to mess with AppCompatFlags, that's for IT/adminsKinematograph
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.Shaunta
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.)Quicksilver
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)Signora
K
3

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

Kinematograph answered 22/5, 2009 at 19:19 Comment(0)
G
3

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.

Grannia answered 23/6, 2009 at 14:52 Comment(1)
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.Chatham
H
0

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

Hammerless answered 9/11, 2017 at 16:50 Comment(0)
B
0

I solved it by changing the assembly title.

Bayou answered 13/12, 2019 at 2:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.