views:

1974

answers:

2

Good morning everyone,

I'm experiencing an error when using the windows installer to install an event source in a product I am deploying.

The error message I receive states the following ...

Unable to get installer types in the c:\temp\program.exe assembly. --> Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

Here is the block of code that creates the event source installer ...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;

namespace myapplication
{
    [RunInstaller(true)]
    public partial class EventSourceInstaller : Installer
    {
        public EventSourceInstaller()
        {
            InitializeComponent();

            string eventSourceName = "MyAppSourceName";
            if (!EventLog.SourceExists(eventSourceName))
            {
                EventSourceCreationData data = new EventSourceCreationData(eventSourceName, "Application");
                EventLog.CreateEventSource(data);
                EventLog.WriteEntry(eventSourceName, "Source Added.");
            }
        }
    }
}

In the installer project I've added a custom action on Install named "Primary output from MyApplication (Active)" to run the event source installer.

I have the following questions

1) Has anyone else run across this and what was the issue?

2) How do I go about retrieving the LoaderExceptions property of the installer?

Thank you in advance for any advice/assistance offered,

Scott Vercuski

A: 

I have never seen that error, but the path c:\temp\program.exe is very strange. Are you trying to run the installer from the c:\temp\ directory?

Are you certain the output of all projects and all third-party DLLs you use are included in the Deployment project? Click on all included files in the Deployment project and check their SourcePath property; are they to the original source files and not the target output folder? Not the temp folder?

Dour High Arch
Dour High Arch - Thank you ! Somehow a DLL was disabled in the installer. I'm not sure how but when I re-enabled it everything worked fine. Thank you again for your help.
Scott Vercuski
A: 

I had exactly the same problem.

I guess your program is referencing other DLLs which the installer install in the GAC or somewhere else outside of the application directory. You can't count on those DLLs being installed before your install action runs.

Solution: Create a separate DLL for your install action and make sure that DLL does not reference any other DLL (directly or indirectly) that are not installed inside your application folder.

BTW, if you can, switch to some other technology. I don't know which competitors are better, but if you do non-standard stuff, the VS install project will cause you nothing but trouble.

erikkallen