Ayende @ Rahien

Refunds available at head office

How to opt out of Program Compatibility Assistant?

A recent change in the profiler has resulted in the following dialog showing up whenever you close the application on x64 Vista/Win7 machines.

image

Just to be clear, I am not using flash in any way, but something is triggering this check.

Basically, I think that somewhere a call like the one described here is made. Checking for the presence of flash, and that is what triggers the PCA dialog. That makes a sort of sense, mostly because we now shell out to IE to do some stuff for us (we use WPF’s builtin WebBrowser control).

Now, the documentation for that says:

PCA is intended to detect issues with older programs and not intended to monitor programs developed for Windows Vista and Windows Server 2008. The best option to exclude a program from PCA is to include, with the program, an application manifest with run level (either Administrator or as limited users) marking for UAC. This marking means the program is tested to work under UAC (and Windows Vista and Windows Server 2008). PCA checks for this manifest and will exclude the program. This process applies for both installer and regular programs.

The problem, however, is that even after I included the $@#$(@# manifest, it is still showing the bloody dialog.

I find it quite annoying. Here is the custom manifest that comes with the profiler.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
    <v3:security>
      <v3:requestedPrivileges>
        <v3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </v3:requestedPrivileges>
    </v3:security>
  </v3:trustInfo>
</assembly>

As far as I can see, it should work.

Any ideas?

And twitter came to the rescue and told me that I need to specify that I am compatible on Win7, the current manifest, which fixes the issue, is:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
    <v3:security>
      <v3:requestedPrivileges>
        <v3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </v3:requestedPrivileges>
    </v3:security>
  </v3: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>
</assembly>

I would like to Paul Betts for handing me the answer in less than 3 minutes.

Comments

Nick Aceves
01/12/2010 08:13 AM by
Nick Aceves

Awesome. We spent a couple of minutes conjecturing about the issue after it was initially posted the mailing list. We were sort of wondering what you were using flash for. I'm relieved to see that you aren't ;)

Thanks for your fast and excellent customer support, as always.

Comments have been closed on this topic.