【问题标题】:Updating installation更新安装
【发布时间】:2010-11-11 09:59:27
【问题描述】:

如果我们向用户提供设置,那么我们提供给用户的设置的代码可能会发生变化,那么我们必须再次进行设置,然后我们将不得不进行设置对用户来说,这不是问题,但用户必须卸载该设置并必须再次安装新设置,这就是问题然后还有其他选择吗?

我问这个问题是因为在应用程序中只有一个应用程序的 dll 有机会发生变化,那么我们是否有任何其他选项可以让我们在该 dll 中进行更改并提供给用户和用户必须只更新那个 dll 而不必卸载整个设置并重新安装整个设置?

【问题讨论】:

    标签: c# dll installation


    【解决方案1】:

    .net dll 不需要注册,所以为什么不制作一个简单的更新程序来替换更新的 dll。无需卸载重新安装。

    【讨论】:

    • 如果用户更新我们提供的新dll,那么它可以完美运行应用程序吗,因为我认为如果这是可能的,那么最好的主意?
    • 只要新的dll不引起冲突就没有理由不工作。我已经使用已部署的网络应用程序(与桌面应用程序有点不同)做到了这一点,并且效果很好。
    【解决方案2】:

    如果我正确理解了您的问题,您要求的是更好的部署解决方案 对于基于 .NET 的应用程序?

    在这种情况下,我建议您查看ClickOnce。 Visual Studio 具有开箱即用的 ClickOnce 支持。

    基本上,您通过某种媒介部署应用程序,例如通过互联网, 每当您推送新更新时,客户都可以选择自动升级,您甚至可以在后台进行软件更新。

    如果您不想使用 ClickOnce,另一个选项是使用 MEF。 这将允许您使用所谓的附加组件扩展您的应用程序。 这些附加组件基本上是在运行时从程序集中加载的类。这意味着您可以使用某个程序集的 1.0 版运行应用程序,即使在应用程序运行时,用户也可以替换程序集,并且软件将达到日期。

    因此,要么您使用 clickonce 自动更新整个应用程序, 或者您将您的应用程序分解成更小的部分,使用 MEF 加载这些部分,并使用一个安装程序来简单地替换目标系统上的部分。

    【讨论】:

    • 但是MEF不能在4.0中使用吧?
    • MEF 可用于 3.5(单独下载),默认包含在 4.0 中(System.ComponentModel.Composition.*)
    【解决方案3】:

    当我们运行我们的应用程序时,会出现一个登录窗口,有效用户必须提供他的凭据才能登录(老东西!)。当他们将它们放入并成功注册后,我们会启动一个web service 请求,发送客户端应用程序元(版本、操作系统等)。该网络服务托管在我们的域中。该 Web 服务触发了一个默认功能,它查询数据库以获取系统最新(或稳定)版本的信息,然后我们将其与从客户端应用程序获得的信息进行比较,并将比较结果发回。接收数据是一个位值,属于消息窗口的情况,例如如果这是旧版本客户端应用程序弹出一个窗口允许下载较新版本的应用程序(或较新版本可用但与您的操作不兼容系统等)

    我们在成功注册时会做更多的事情(例如许可证密钥验证)。为什么注册成功后因为只有有效用户才有权粘贴我们的web service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2017-11-29
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2018-12-28
      • 2012-09-05
      相关资源
      最近更新 更多