2

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

  • 尝试使我的 ServiceInstall foreach 的 Windows 服务数量或通过 installutil 自定义安装它们?

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

但是我读到人们不喜欢在 wix 中使用 foreach 因为它使事情变得更加复杂,而且有些人说 installutil 也不好。但是由于我不知道会有多少服务,所以我必须像这样解决它。

并且使用 installutil 我也不会回滚?

有谁知道另一种方法?

4

2 回答 2

1

您可以运行自定义操作来修补您的 MSI,包括要安装的服务元素。这种方法允许您从任何地方读取服务名称,并根据需要安装尽可能多的服务。

尽管对于稍后阅读您的安装程序源代码的人来说,这将是非常重要的。老实说,我从未使用过这种方法。但它应该工作......

于 2013-02-07T12:06:23.703 回答
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());
            }
        }
    }

使我的服务可自行安装和卸载,然后进行自定义操作以安装和卸载它们

于 2013-02-18T10:34:28.133 回答