0

We have a c#, .NET 4.0, windows application which we deploy to a terminal server. (Developed using VS 2010). This application makes use of several WCF services sitting on another server.

Our users access the front-end via remote desktop session. (They all have a .RDP file on their desktops.)

My question is regarding the deployment of this front-end. Currently, if we need to do an emergency deployment during business hours, we need to kick all the users off that are hooked into the app (as they are using the dll's that we need to replace). This is not ideal, obviously. We work in quite a business-critical environment, so these deployments are unavoidable. I've investigated ClickOnce, but have read that you cannot use this with terminal services application here. (Which kind of makes sense since it's essentially one app being "accessed" by several clients...)

I would like to be able to do a "silent" deployment whereby the user knows nothing about the fix until they restart their instance of the application. I'm not sure this is even possible?

I would appreciate any guidance or suggestions on this!

4

1 回答 1

2

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

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

于 2013-08-14T12:41:57.527 回答