问题
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:
- how-do-i-prevent-programmatically-the-program-compatibility-assistant-in-vista
- reasons-for-getting-the-program-compatibility-assistant-dialog
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...
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 eitherA64.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.
回答1:
In order to opt out of PCA altogether, you will defintely need to include a manifest in all three of your executables.
来源:https://stackoverflow.com/questions/12532308/program-compatibility-assistant-manifest-not-working-in-vista32