How would I know if a Clarion exe has a manifest?

Interestingly, you can open a Clarion EXE in Visual Studio and it shows you a bunch of nice things.

Here is School.exe:

There are two ways to “manifest” your EXE but firstly, let’s look at what an application manifest is.

Application Manifests

An application manifest is an XML file that describes and identifies the shared and private side-by-side assemblies that an application should bind to at run time.
Application manifests - Win32 apps | Microsoft Learn

That MSDN page also states that:

Application manifests should be included as a resource in the application’s EXE file or DLL.

Notice the “should” though. Wikipedia explains this nicely:

It is either an XML file with .manifest filename extension that accompanies executable files or is an integral part of them, in the same XML format.
Manifest file - Wikipedia

So, if you don’t include the manifest as a resource it should be pretty easy to tell if you have a manifest or not. Either there is a file called myapp.exe.manifest or there isn’t :slight_smile:

To determine if your manifest is included as a resource you obviously need something that can read the EXE/DLL resources. Since you probably have Visual Studio installed already this is easy enough to do!

First I apply the manifest to my school.app:

Generate and Make the application, open the EXE again in Visual Studio and there it is!

Double click on that, or Right-Click and “Open” to see the contents of the resource and although VS displays it as binary it should be pretty obviously manifesty:

I just remembered, Clarion has another way to include a “default” manifest.

By adding the MANIFEST statement to your EXP file e.g.

NAME 'SCHOOL' GUI
MANIFEST VISTA WINDOWS7 WINDOWS8 WINDOWS10

You will still see it included as a reference in the EXE shoudl you open it in VS like previously described.

From the help:

This directive instructs the linker to add specified manifest file name to the executable. If the manifest file name is omitted, the linker adds a default manifest. If both the project file and the EXP file contain directives to link the manifest file, the one specified in the project file will be used.

(there is more on that topic in the help BTW, go have a look!)