如何将多个应用程序一起部署

时间:2013-04-09 07:34:14

标签: deployment windows-services clickonce

我有以下内容:

  1. 我写的Windows服务,它仅由以下两个应用程序使用:
  2. 客户端应用
  3. 代理商应用
  4. 如果没有该服务,客户端和代理都无法运行。我们当前的安装使用ClickOnce(该服务尚未部署)。

    我想要的是什么:

    1. 2个单独的安装 - 客户端+服务,代理+服务。这是因为我有许多机器只执行客户端发送它们的任务,而且它们不需要客户端。此外,并非每个想要客户的人都想让他的机器成为代理商。
    2. 部署逻辑包 - 例如,仅部署客户端没有意义,因为它无法自行运行。单独部署服务也没有意义。
    3. 维护版本兼容性 - 如何处理以下场景:某人安装了代理+服务版本1,然后安装了客户端+服务版本2.
    4. 提升权限:是否可以使用具有提升权限的帐户在计算机上安装Windows服务,但当前权限不一定会提升?我可以进行静音安装吗?
    5. ClickOnce非常好,但不是强制性的。如果有更好的解决方案来满足我的要求,我将切换到它们,前提是仍然可以进行更新(强制更新以及延迟更新的选项)。

1 个答案:

答案 0 :(得分:2)

我将解决ClickOnce方法。 msi安装可能更合适,但听起来好像需要某种自动更新。将Windows服务安装强制转换为ClickOnce方法可能更容易,而不是使msi安装自我更新。

ClickOnce的核心很简单。它使用户配置文件夹中的文件与服务器上的文件保持同步。这应该适用于客户端和代理应用程序。与Windows服务无关。

对于服务,我会让ClickOnce部署服务位。然后编写将在Client / Agent中执行的代码以安装/更新服务。

我发现Topshelf在使用服务时非常棒。它允许您编写标准控制台应用程序,使开发更容易。然后安装它,你可以调用控制台exe并传递--install开关。我认为只要客户端/代理启动并复制文件,安装/更新/启动/停止服务,以及使服务正常运行所需的其他任何内容,您就可以执行该代码。

现在为你的编号清单......

  1. 可以处理。两个ClickOnce安装两个包含服务。
  2. 只要您可以通过自己的代码安装服务,这应该可以使用。
  3. 这更棘手。你必须定义你想要发生的事情。您可以完全控制安装服务的代码,这样您就可以决定要做什么并适当地处理它。
  4. 我猜你需要提升权限才能安装Windows服务。这意味着来自ClickOnce的提示。唯一的方法是签署您的部署,然后在客户端的计算机上导入证书。真的不值得避免一个提示,恕我直言。