【问题标题】:Remote application deployment远程应用部署
【发布时间】:2013-08-14 08:49:53
【问题描述】:

我们有一个 c#、.NET 4.0、windows 应用程序,我们将其部署到终端服务器。 (使用 VS 2010 开发)。此应用程序利用了位于另一台服务器上的多个 WCF 服务。

我们的用户通过远程桌面会话访问前端。 (他们的桌面上都有一个 .RDP 文件。)

我的问题是关于这个前端的部署。目前,如果我们需要在工作时间进行紧急部署,我们需要踢掉所有挂接到应用程序的用户(因为他们正在使用我们需要替换的 dll)。显然,这并不理想。我们在相当关键的业务环境中工作,因此这些部署是不可避免的。我调查了 ClickOnce,但读到您不能将其与终端服务应用程序 here 一起使用。 (这是有道理的,因为它本质上是一个应用程序被多个客户端“访问”...)

我希望能够进行“静默”部署,用户在重新启动应用程序实例之前对修复一无所知。我不确定这是否可能?

如果有任何指导或建议,我将不胜感激!

【问题讨论】:

    标签: deployment remote-desktop terminal-services


    【解决方案1】:

    是的,我一直使用 RD 应用程序执行此操作——您只需移动或重命名 DLL,而不是删除它们。 Windows 允许在使用 DLL 时进行移动和重命名,但会阻止您删除它们。如果您使用 Windows Installer 部署您的应用程序,它将自动执行移动(并在系统下次重新启动时删除旧版本)。

    一旦您以这种方式替换 DLL,现有会话将继续使用旧的重命名版本,而新会话将使用新版本。当然,根据您拥有的 DLL 数量、应用程序将它们加载到内存中需要多长时间以及服务器上有多少活动,您可能会遇到应用程序加载一些旧 DLL 和一些当您正在更新它们时,新的那些,但这种情况可能很少见。

    【讨论】:

    • 丹,你是我的英雄!!非常感谢 - 这就像做梦一样。感谢您提供如此清晰简洁的答案。
    • 这很有趣,我知道您可以对可执行文件执行“重命名”方法,但不知道它也适用于 DLL。
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2011-03-04
    • 2011-01-22
    • 2012-02-20
    相关资源
    最近更新 更多