C#InstallUtil / ManagedInstallerClass:为什么键值对不会传递给安装程序上下文参数集合?

时间:2011-05-27 12:05:48

标签: c# windows-services installutil managedinstallerclass

我将服务名称传递给参数列表,但是当我查看安装程序上下文时,它不存在:

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

为什么键值对不会传递给安装程序上下文?

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

2 个答案:

答案 0 :(得分:5)

这是一个相当古老的线程,但也许有人仍然可以使用我可以拥有的答案,如果它在这里早些时候:)。 只有位置之前的参数才会传递到安装程序的上下文中。 试试这个:

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

答案 1 :(得分:0)

试试这段代码:

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