Wix安装有多种服务,我没有多少

时间:2013-02-06 10:42:05

标签: wix

我需要安装我的Windows服务,并且至少有一个实例。用户决定他们将拥有多少服务。但我会采取哪种方法?

  • 尝试让我的ServiceInstall预先安装Windows服务的数量,或者通过installutil进行自定义安装吗?

然后我必须解决所以它不会安装重复项。但我可以创建一个包含要安装的服务名称的xml文件,并从那里读取。

但是我已经读到人们不喜欢在wix中使用foreach,因为它使事情变得更复杂,有些人说installutil也不好。但是因为我不知道它将提供多少服务,所以我必须解决这个问题。

使用installutil我也不会回滚?

有没有人知道另一种方法?

2 个答案:

答案 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());
            }
        }
    }

使我的服务可以自行安装和卸载,然后按惯例安装和卸载它们