Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新安装_C#_Dll_Installation - Fatal编程技术网

C# 更新安装

C# 更新安装,c#,dll,installation,C#,Dll,Installation,如果我们将设置提供给用户,那么我们提供给用户的设置的代码可能会发生更改,然后我们必须重新进行设置,然后我们必须将设置提供给用户,那么这不是问题,但用户必须卸载该设置,并且必须重新安装新的设置,这就是问题所在,那么还有其他选择吗 我问这个问题是因为在一个应用程序中,只有一个应用程序的dll可能会发生更改,那么我们是否可以在该dll中进行更改并提供给用户任何其他选项,并且用户只需更新该dll,而不必卸载整个安装程序并重新安装整个安装程序?如果我理解您的建议问题正确,您要求的是更好的部署解决方案 对于

如果我们将设置提供给用户,那么我们提供给用户的设置的代码可能会发生更改,然后我们必须重新进行设置,然后我们必须将设置提供给用户,那么这不是问题,但用户必须卸载该设置,并且必须重新安装新的设置,这就是问题所在,那么还有其他选择吗


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

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

那样的话,我建议你看一看。 Visual Studio提供了现成的ClickOnce支持

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

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

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

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

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


我们在成功注册时很少做更多的事情(比如许可证密钥验证)。为什么成功注册后,因为只有有效用户才有权使用我们的
web服务

,如果用户将更新我们提供的新dll,那么,它是否可以正常运行并完美地运行应用程序,因为我认为如果这是可能的,那么这是最好的主意?只要新的dll不会引起冲突,就没有理由不工作。我已经用部署的web应用程序(与桌面应用程序稍有不同)实现了这一点,它工作正常。但MEF不能在4.0中使用,是吗?MEF可以在3.5中使用(单独下载),默认情况下包含在4.0中(System.ComponentModel.Composition.*)