cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
dandraka
Level 3

requestedExecutionLevel != requiredExecutionLevel ?

Hi all,

Upgrading our application for Vista includes, as you probably already know, embedding an application manifest. We use Visual Studio's mt.exe, and the manifest is like this (name and version changed to protect the innocent):




type="win32"
name="MyApp.exe"
version="1.0.0.0"
processorArchitecture="x86"/>




level="asInvoker"
uiAccess="false"/>





The application works fine under XP and Vista. But if I run Installshield's validation for Windows Vista (plus IS ICEs) I get the following errors:

Exe MyApp.exe in component MyAppComponent lacks a requiredExecutionLevel uiAccess setting in its manifest.

Exe MyApp.exe in component MyAppComponent lacks a requiredExecutionLevel level setting in its manifest.

As you can see, my manifest includes a requestedExecutionLevel, not requiredExecutionLevel section. This is what I have found everywhere I looked --requested, not required.

Is it simply a small IS bug ? Or am I supposed to add both sections for some reason ?

Please advice !
Labels (1)
0 Kudos
(3) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

It looks like there is a mistake in the error text, however the check appears to be correct. It looks for a asmv3:trustInfo element like this:




level="asInvoker"
uiAccess="false"/>


I noticed that your trustInfo element is in the asm.v2 namespace. Try updating to the asm.v3 as above.
0 Kudos
dandraka
Level 3

MichaelU wrote:
It looks like there is a mistake in the error text, however the check appears to be correct. It looks for a asmv3:trustInfo element like this:




level="asInvoker"
uiAccess="false"/>


I noticed that your trustInfo element is in the asm.v2 namespace. Try updating to the asm.v3 as above.


Hi Michael, thanks for your answer. That clarifies things a lot.

Won't there be a problem with Windows XP ? I've read several articles talking about v2 being "more stable" (whatever that means) than v3.

TIA
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

I'm not certain - I've never been able to find very good documentation on this. Since the requestedExecutionLevel itself is only useful on Vista, I can't imagine its namespace causing problems on XP, but I've been wrong before.

Previously all the examples I'd seen were structured as in the snipped I pasted, but just now I found some that use some asm.v2 (v1:assembly/v2:trustInfo/v2:security/v3:requestedPrivileges/v3:requestedExecutionLevel on http://www.global-webnet.net/LLC/DevelopersCorner/CertifiedLogo/563.aspx) or all asm.v2 (http://blogs.msdn.com/cjacks/archive/2006/09/08/745729.aspx) in addition to one that use all asm.v3 (http://blogs.msdn.com/junfeng/archive/2006/08/09/692996.aspx).

Since I don't know what's right, and don't want to effectively enforce something that's wrong, here's how to modify the check so it checks what you want it to. Open up the ISVista.cub file from the validation folder, use the direct editor to go to the _ISManifest table and edit the XPath entries to use whatever namespacing you'd prefer to verify. The namespaces for asm.v1 through asm.v3 are available there as v1, v2, and v3.
0 Kudos