Overview of Executability Check for MIPS & ARM based Handheld PCs

CESD-S-0128

Executability Check

Download link

Hou Ming

48 KB

Applies To:

  • Windows CE 2.0, CE 3.0, CE.NET
  • MIPS, Arm, XScale only (SH3/SH4 not supported)

Contents:

This article discusses the purpose and use of ExecutabilityCheck on MIPS & ARM based Handheld PCs.

  • Overview
  • How-to Guide
  • FAQ

Overview:

ExecutabilityCheck is a software checking utility modified for HPC use by Hou Ming.

ExecutabilityCheck is a program that is run on the handheld with the sole purpose of diagnosing why an installed program will not run. Most often this is due to three distinct reasons.

  1. The program was written for a CPU type that the application does not recognize
  2. The version of the operating system is different that what the application expects
  3. There are missing dependencies, most often .dll files

How-to Guide:

The following steps outline the installation and basic usage of Executability Check.

 

Installation

First, copy the ExecutabilityCheck program to a folder on your device. It can be anywhere. The program itself requires one additional .dll that may or may not be present on your device. That is the coredll.dll. The author's download contains a file titled coredl3.dll. If the coredll.dll in your Windows folder is incompatible with ExecutabilityCheck, then you can use the coredl3.dll file by renaming it to coredll.dll and placing it in the same folder where you have saved ExecutabilityCheck. This should be a folder other than the Windows folder as you do not want to overwrite your existing coredll.dll. If your existing coredll.dll is compatible with ExecutabilityCheck, then you may choose to save it in the Windows folder. It is a known fact that the coredll.dll that comes with the Sigmarion III is incompatible with ExecutabilityCheck. And there may be other devices with the same problem.

 

Running the Program

When you run the program, a window will open that prompts you to select the file you wish to check. The program prompts you for the type of file as an .exe, .dll, or .cpl type file.

Select .exe

Now navigate to where the installed program is that will not run. In this case, I am going to open the file titled “Example file.exe”.

ExecutabilityCheck now checks the “example file.exe” and reports the problems. In this case you can see that the problem lies in that the program was written for a different type of CPU than what my handheld is.

Chech results

Assuming that I know how to correct this problem, and I did by hex editing the “example file.exe” to show the proper CPU, I can now run ExecutabilityCheck again, this time on the edited file with the same name.

Version Hex edit

This time the error is that the program was written for CE 5.0, and my device is only CE 4.2. Luckily, this is an easy fix, one that ExecutabilityCheck can take care of. I will just change the OS in the window that opens, that is I will change the 5.0 to 4.2. And when I click on the “Overwrite” button, the software will be permanently and forever changed.

Linker

Finally, the last common problem is the alert you see above. The solution is to find the missing .dlls and copy them to the same location where the .exe program resides. Finding the correct .dll can sometimes be a trial and error procedure.

Most of the time, you will discover that there are multiple causes for a program not running. This is shown in the next screen.

Multiple causes for problems example

In the example above, lots of things need to be corrected. You will have to resolve each issue, one at a time before you can hope that the program will run.

Once all issues are resolved, running ExecutabilityCheck on a file will result in a blank screen like this:

Issues resolved

Hopefully, if things went correctly, at this point you can now run the software that wasn't specifically designed for your device. If you were successful, then maybe you will see a screen like this (Pocket PC program called File Navigator running on HPC):

Working .exe

 

Summary

ExecutabilityCheck is an invaluable tool to help resolve software compatibility issues. The unfortunate truth is that even with no errors presenting in ExecutabilityCheck, there is no guarantee the software will function properly. You will have to test it to see.


FAQ

Question: Where is the original author's site?

Answer: It can be found here:
http://www.geocities.co.jp/SiliconValley-Cupertino/2039/

 

Question: Are there any planned updates, or a version for SH3/SH4 processors?

Answer: No & no

 

Question: How do I change the CPU type? 

Answer: This normally requires hex editing the .exe file of the program you wish to change and is another topic entirely

 

Question: I added the missing .dlls, but the program still will not run, why?

Answer: The .dll you added needs to be compatible with your hardware and your operating system. If one doesn't work, try finding another. Sometimes, nothing works.

 

Question: I fixed everything using ExecutabilityCheck, that is there are no more errors, but the program still won't run, why?

Answer: It has too many other discrepancies from your hardware and operating system, sometimes it just happens. Sometimes a program calls for things your HPC cannot provide, such as a certain screen size, or direct screen writing, or memory issues. Some programs have other differences that ExecutabilityCheck does not recognize.

 

Question: What are .exe, .dll, and .cpl files? 

Answer: .exe are executable program files, programs that run. .dll files are dynamic link libraries, commonly called drivers. They help interface the software and hardware on your machine. .cpl files are specialized .dll files that reside in the control panel of your device.

 

Question: What does the “Rewrite Lib name” button do?

Answer: The "Rewrite Lib Name" allows you to edit the filename of the .dll; e.g., rename coredll.dll to coredl2.exe. This is useful if you have another version of the same .dll in the same folder location (which of course would have to be renamed so that it doesn't overwrite the original one). Editing the name of the required .dll in ExecutabilityCheck makes the program look for the renamed .dll instead of the original one.

 

Question: I notice that HPC:Factor has two versions of ExecutabilityCheck for download, which do I use?

Answer: Use the smaller one specifically formatted for the HPC HVGA screen. The other is a larger program with special formatting for pocket PCs, but may have some use with larger SVGA HPC devices.

 

Question: Is there any other similar program to use?

Answer: Dependency Walker is a similar program that will tell you the required dependencies, but it is run on a desktop and is far more comprehensive. More information can be found on it here: http://www.dependencywalker.com/