2010-11-11 56 views
3

如果我们给用户设置,那么就有可能在我们给用户的设置代码中发生变化,然后我们必须重新设置,然后我们将不得不设置为用户,那么这不是问题,但用户必须卸载该设置并且必须再次安装新设置,那么问题是否还有其他选项?正在更新安装

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

回答

2

.net dll不需要注册,为什么你不做一个小的更新程序,只需要替换更新后的dll。无需卸载并重新安装。

+0

中,那么它会正常运行应用程序,因为我想想这是否可能,那么这是最好的主意? – Harikrishna 2010-11-11 12:56:03

+0

只要新的DLL不会导致冲突,没有理由不应该工作。我已经使用部署的网络应用程序(与桌面有点不同)做到了这一点,并且工作正常。 – Sruly 2010-11-11 16:29:22

2

如果我正确理解您的问题,您需要为基于.NET的应用程序提供更好的部署解决方案 ?

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

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

如果您不想使用ClickOnce,另一个选项是使用MEF。 这将允许您使用所谓的附加组件扩展您的应用程序。 这些加载项基本上是在运行时从程序集加载的类。这意味着您可以使用特定程序集版本1.0运行的应用程序,甚至在应用程序运行时用户可以替换程序集并且软件将启动至今。

因此,无论您是使用clickonce自动更新整个应用程序,还是将应用程序分成较小的部分,使用MEF加载这些部分,并安装一个简单地替换目标系统上的部分的安装程序。

+0

但是MEF不能在4.0中使用,是吗? – Harikrishna 2010-11-11 13:00:16

+0

如果用户将更新我们提供的新DLL,MEF可以在3.5(单独下载)中使用,并且它默认包含在4.0(System.ComponentModel.Composition。*) – TimothyP 2010-11-11 16:14:49

0

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

我们在成功注册(如许可证密钥验证)方面做了更多的工作。为什么在成功注册后导致只有有效的用户有权阻止我们的web service