Foxtable(狐表)用户栏目专家坐堂 → 关于小版本更新外部引用DLL


  共有5513人关注过本帖树形打印复制链接

主题:关于小版本更新外部引用DLL

帅哥哟,离线,有人找我吗?
guoweidong
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1202 威望:0 精华:0 注册:2013/7/28 12:10:00
关于小版本更新外部引用DLL  发帖心情 Post By:2014/5/21 15:48:00 [只看该作者]

Dim CurrPath As String = System.IO.Directory.GetCurrentDirectory()
Dim Dll As String = CurrPath & "\project\dll"
If System.IO.Directory.Exists(Dll) Then
    For Each filenames As String In System.IO.Directory.GetFiles(Dll)
        System.IO.File.Copy(filenames, filenames.Replace("\project\dll", ""), True)
        System.IO.File.Delete(filenames)
    Next
    System.IO.Directory.Delete(Dll)
End If


这段处理更新DLL会出现一个问题,一是当应用程序未关闭的情况下,复制文件会失败,导致更新失败,还有种情况就是文件未复制完整也会导致失败,这块应如何处理?


其实主要原因在于,我在全局中调用了DLL变量,所以在每次更新这个DLL和启动发现了冲突,全局变量中的调用好像是在beforeopenproject之前就开始执行了。没法再做前一步的处理了,这样的情况下,狐表目前是真的没办法处理了吗?所谓的使用bat做更新,都是浮云了,只能从第三方更新先做检测了,只是感觉这样也不是什么最好的方法,我还是比较喜欢只用一个程序去做处理。
[此贴子已经被作者于2014-5-22 11:00:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/21 15:49:00 [只看该作者]

没什么好方法,强制关闭该第三方程序呗

 回到顶部
帅哥哟,离线,有人找我吗?
guoweidong
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1202 威望:0 精华:0 注册:2013/7/28 12:10:00
  发帖心情 Post By:2014/5/21 15:51:00 [只看该作者]

强制关闭又找不到第三方程序进程名,用的都是同一个进程名 foxtable.exe ,因为用狐表做的不只一个应用,总不可能都强制关了吧。
[此贴子已经被作者于2014-5-21 15:51:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/21 15:53:00 [只看该作者]

 换一种思路,

 

 如果它放在dll_1文件夹下,

 

 更新的时候,就把它放在比如dll_2文件夹下,适当的时候,把原来的文件夹。


 回到顶部
帅哥哟,离线,有人找我吗?
guoweidong
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1202 威望:0 精华:0 注册:2013/7/28 12:10:00
  发帖心情 Post By:2014/5/21 15:53:00 [只看该作者]

最坑的是,更新失败后就不能继续再更新了,内核的版本已更新了,可DLL编译失败了!

 回到顶部
帅哥哟,离线,有人找我吗?
guoweidong
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1202 威望:0 精华:0 注册:2013/7/28 12:10:00
  发帖心情 Post By:2014/5/21 15:55:00 [只看该作者]

更新就从DLL目录下复制到应用根目录的,当首次打开的时候把DLL目录里的文件复制到根目录再删了DLL里的文件的。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/21 15:56:00 [只看该作者]

 又或者,直接运行bat文件,强制关闭foxtable,然后在bat里面写代码拷贝更新。


 回到顶部
帅哥哟,离线,有人找我吗?
guoweidong
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1202 威望:0 精华:0 注册:2013/7/28 12:10:00
  发帖心情 Post By:2014/5/21 15:58:00 [只看该作者]

强制关闭foxtable,我还有其它的应用也是狐表做的,是不是都要被关了?这不符合情理啊。

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2014/5/21 16:06:00 [只看该作者]

你这个应该是没有什么办法吧

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/21 16:16:00 [只看该作者]

以下是引用guoweidong在2014-5-21 15:58:00的发言:
强制关闭foxtable,我还有其它的应用也是狐表做的,是不是都要被关了?这不符合情理啊。

 

或者把升级代码写在beforeopenproject那里吧,没试过,应该是可以的。


 回到顶部
总数 25 1 2 3 下一页