Jan
30
开发一个自动更新文件系统。程序启动时向SharePoint查询有无可更新文件,有的话就启动下载程序下载到临时文件夹。之所以要另用一个下载程序是因为防止下载时用户退出主程序。下载好以后,主程序再次启动时调用另一个升级程序,升级程序复制下载好的文件到相应目录。如果需要复制EXE或者DLL等文件,则升级程序先终止主程序,再复制,然后再重新启动主程序,升级程序自动终止。
遇到的问题是,如果终止了主程序后,DLL仍然被锁定的话,下次升级程序启动主程序仍然不能复制文件成功,就会循环重启主程序,导致错误。
解决方法:
1. 升级程序如果需要更新DLL,则建立一个标记文件,然后杀掉主程序进程后更新。
2. 升级程序检测如果标记文件存在,则表示主程序不要被杀,升级程序继续升级其他文件。
3. 升级程序如果杀掉并重启了主程序,升级程序不自动退出,保持在内存中。
4. 主程序启动时,如果未发现升级程序进程,则表示自身是由用户调用的,则删除标记文件,表示自身可以被升级程序杀掉。相反,若发现升级程序已经在内存中,表示自身是由升级程序所调用,保持标记文件,让升级程序进行2。
5. 主程序然后调用升级程序,正常检测升级。
C#的文件拖放代码(转自
在SP中查询person


