2013-04-09 66 views
1

有以下几点:我写如何部署多个应用程序我共同

  1. Windows服务,它只是通过下面的两个应用程序使用:
  2. 客户端应用程序。
  3. 代理应用程序。

如果没有服务,客户端和代理程序都无法运行。我们当前的安装使用ClickOnce(该服务尚未部署)。

我想要什么:

  1. 2个独立的安装 - 客户端+服务,代理服务+。这是因为我有许多机器只能执行客户端发送的任务,而且他们不需要客户端。此外,并非每个想要客户的人都想让自己的机器成为代理商。
  2. 部署逻辑包 - 例如,仅部署客户端是没有意义的,因为它不能单独运行。单独部署服务也没有意义。
  3. 维护版本兼容性 - 如何处理以下情形:有人安装了代理+服务版本1,然后安装了客户端+服务版本2.
  4. 提高的权限:是否可以使用帐户提升的权限,但是当前权限不一定提升?我可以进行无声安装吗?

ClickOnce是非常好的,但不是强制性的。如果有更好的解决方案来满足我的要求,我会切换到它们,前提是更新仍然可行(强制更新以及延迟更新的选项)。

回答

2

我将介绍ClickOnce方法。 msi安装可能更合适,但听起来好像你想要某种自动更新。将Windows服务安装强制为ClickOnce方法可能会更容易,而不是让msi安装自我更新。

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

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

我发现Topshelf在使用服务时很纯真。它可以让你编写一个标准控制台应用程序,使开发更容易。然后安装它,您可以调用控制台exe并通过--install开关。我认为只要客户端/代理启动并复制文件,安装/更新/启动/停止服务以及使服务正常工作所需的其他任何东西,您都可以执行该代码。

现在对于编号列表...

  1. 可以处理。两个ClickOnce都会安装包含该服务的两个ClickOnce。
  2. 只要您可以通过自己的代码安装服务,这应该工作。
  3. 这更棘手。你必须定义你想要发生的事情。您将完全控制安装该服务的代码,因此您可以决定如何处理并适当地处理它。
  4. 我猜你需要提升权限才能安装windows服务。这意味着来自ClickOnce的提示。唯一的解决办法是签署你的部署,然后在客户端的机器上导入证书。恕我直言,避免一个提示是不值得的。