我将服务名称传递给参数列表,但是当我查看安装程序上下文时,它不存在:
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
}
}
答案 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);