Question: I've made an simple installation class:

```
[RunInstaller(true)]
public class MyCustumAction : Installer
{
    public override void Install(System.Collections.IDictionary stateSaver)
    {
        base.Install(stateSaver);
        string value = Context.Parameters["targetdir"];

        throw new Exception("Contact?? " + value);

        WriteLog(value);
    }

    private void WriteLog(string message)
    {
        using(FileStream f = File.Create(@"C:\ik ben nieuw.txt"))
        {
            using (StreamWriter w = new StreamWriter(f))
            {
                w.WriteLine("Dag van installatie: " + DateTime.Now.ToString());
                w.WriteLine(message);

            }
        }
    }
}

```

In my Setup project I've done the following:

* Add project output - primary output of my assembly
* Add a Custom Action on the Install directory (Custom Actions view)
* Set CustumActionData to '/targetdir="[TARGETDIR]\"'
* Build my assembly and build the setup project

During the installation, the Exception is not thrown. Why not? It seems that my class isn't invoked. What am I doing wrong here?

**UPDATE**

When I create a seperate project with only the installer class in it and add this ont to my project ouput and set the custum action properly, I do get the exception!

Now I am wondering why this same file doesn't get invoked in my own (winforms) assembly..

Answer: 
The runtime classpath is likely polluted with duplicate and/or different versions of EL API.

Normally, the EL API is already shipped with servletcontainer/appserver in question. You should in **no way** copy/duplicate/move its libraries somewhere else, such as into webapp's `/WEB-INF/lib` or more worse the JRE's `/lib`. Cleanup the classpath from all duplicate and/or different versioned classes / JAR files. It may otherwise lead to exceptions like this.

A common mistake among starters is namely that they copy the servletcontainer/appserver's libraries into `/WEB-INF/lib` because they got compilation errors in the IDE (`javax.servlet` not found and so on). Copying the libraries is the **wrong** solution. You should rather have integrated the server in the same IDE and configured the IDE project to reference/associate the server in question so that the IDE will automagically take its libraries in the project's buildpath.
I faced a similar exception although in entirely different context however it should be valid here as well.

Usually this means that you have more than one copy of the offending class in classpath.

I'd try to find if javax.el.ExpressionFactory.class is present multiple times. (may be it is there in server's lib as well as applications lib)