我需要安装我的Windows服务,并且至少有一个实例。用户决定他们将拥有多少服务。但我会采取哪种方法?
然后我必须解决所以它不会安装重复项。但我可以创建一个包含要安装的服务名称的xml文件,并从那里读取。
但是我已经读到人们不喜欢在wix中使用foreach,因为它使事情变得更复杂,有些人说installutil也不好。但是因为我不知道它将提供多少服务,所以我必须解决这个问题。
使用installutil我也不会回滚?
有没有人知道另一种方法?
答案 0 :(得分:1)
您可以运行修补MSI的自定义操作,包括要安装的服务元素。这种方法允许您从任何地方读取服务名称,并根据需要安装尽可能多的服务。
虽然对于那些稍后阅读安装程序源代码的人来说,这将是非常重要的。说实话,我从未使用过这种方法。但它应该有用......
答案 1 :(得分:0)
我最终做了这个
public static void Main(string[] args)
{
if (System.Environment.UserInteractive)
{
string parameter = string.Concat(args);
switch (parameter)
{
case "install":
ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
break;
case "uninstall":
ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
break;
}
}
else
{
ServiceBase.Run(new WindowsService());
}
}
}
使我的服务可以自行安装和卸载,然后按惯例安装和卸载它们