Question: I pass the service name into the argument list, but when I look in the installers context it is not there:

```
args = new[] { Assembly.GetExecutingAssembly().Location, "/ServiceName=WinService1" };
ManagedInstallerClass.InstallHelper(args);

```

Why are key value pairs not pass into the installers context?

```
public override void Install(IDictionary stateSaver)
{
    foreach (var param in Context.Parameters)
    {
       // ServiceName is not available in the Parameters collection
    } 
}

```

Answer: 
This is quite old thread, but maybe someone still could use the answer like I could have if it was here earlier :).
Only parameters before location are being passed into the context for the installer.
Try this:

```
args = new[] { "/ServiceName=WinService1", Assembly.GetExecutingAssembly().Location };
ManagedInstallerClass.InstallHelper(args);

```
Try this code:

```
IDictionary dictionary = new Dictionary<string, IEnumerable<string>>();
dictionary.Add(Assembly.GetExecutingAssembly().Location, 
               new string [] {"/ServiceName=WinService1"});
ManagedInstallerClass.InstallHelper(dictionary);

```