我是一家软件公司的实习生。我有一个用于SAP B1的c#编程的附加组件。在这个附加组件中我使用自己的更新功能由于某些原因(由于SAP中的校验和,因此无法使用clickOnce)。此更新功能包含在主类中。我编程的所有其他新函数都是作为dll文件创建的。
应用程序中只包含一个名为"...main_functions.dll"
的dll文件。所有其他dll文件都可以添加到这个dll文件中并上传到ftp服务器。该应用程序将下载此版本的新版本" ... main_functions.dll"文件与其他dll文件一起使用,并在启动时应用程序使用文件之前替换旧文件。
问题是,一旦启动此附加组件,它将在客户的同一终端中使用'办公室,由于应用程序试图替换当前正由终端中的另一个用户使用的文件,这将导致附加组件崩溃。现在,我正在尝试找到一个解决方案,例如,如果其他用户在终端中运行了进程,请停止更新过程并显示消息,例如"请在更新开始之前关闭此应用的所有其他实例! "
如果有人能给我一些解决这个问题的想法,我将不胜感激。
答案 0 :(得分:0)
滚动自己的更新过程时唯一的解决方案是,您必须单独运行一个进程来替换加载项使用的DLL,并确保在尝试替换DLL之前退出加载项。 / p>
一种好的技术是使用附加组件检查更新是否可用,然后将更新下载到临时文件夹,并仅更新单独的进程(如果需要更新)。然后,启动单独的进程并退出加载项。让单独的进程等待足够长的时间以确保您的加载项已退出,然后单独的进程执行更新。