2

When I run my application "A driver Installer and Uninstaller Application", I am getting a "Program Compatibility Assistant" window once my exe get ended successfully. After going through the SO links and googling I couldnt find a solution to avoid "Program Compatibility Assistant" window in vista 32. I used the below manifest to avoid PCA and it works as expected (am not getting any PCA window in windows 7) but except windows vista 32? What should I do to make this work?

After Using the below manifest for my installer application I am not getting PCA window in windows 7 but it appears on windows vista 32-bit. How to avoid PCA window in vista32?

Some related questions are:

Here's the manifest I used:

 <?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="Unins.exe"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <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}"/>
    </application>
  </compatibility>
</asmv1:assembly>

The below is the snapshot of PCA window I get...

Snap Shot of PCA window

Update : the root cause I for the PCA window is "My Installer is not creating an entry in Add or Remove Programs". I made my app to make an entry in "Add or remove programs" and am not getting any PCA window. But I dont want to make an entry in Add or Remove Program.

Update 25-09-12: I have an executable say A.exe, which finds architecture of the OS and depends on the architecture it calls either A64.exe or A86.exe. In this case do I want to have manifests for all the exe's ( A.exe, A64.exe, A86.exe )? Right now I have manifest only for A.exe.

Community
  • 1
  • 1
2vision2
  • 4,933
  • 16
  • 83
  • 164

1 Answers1

2

In order to opt out of PCA altogether, you will defintely need to include a manifest in all three of your executables.

David Heffernan
  • 601,492
  • 42
  • 1,072
  • 1,490
  • Comments from here http://stackoverflow.com/questions/12583006/manifest-for-an-exe/12583052#12583052 – 2vision2 Sep 25 '12 at 13:09
  • 2
    I don't know enough about exactly what is triggering PCA for you, and why precisely it only happens on Vista 32, for you. However, I do know that the `supportedOS` manifest section opts out of PCA, and also that manifests are not inherited by newly created processes. I think that's enough. I don't want to write in an answer the rather vague comments at the other question. I don't have the full details to explain why your original version behaved exactly as it did, but I do know the solution to the problem. – David Heffernan Sep 25 '12 at 13:12