以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于小版本更新外部引用DLL (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51190) |
-- 作者:guoweidong -- 发布时间:2014/5/21 15:48:00 -- 关于小版本更新外部引用DLL 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 -- 发布时间:2014/5/21 15:49:00 -- 没什么好方法,强制关闭该第三方程序呗 |
-- 作者:guoweidong -- 发布时间:2014/5/21 15:51:00 -- 强制关闭又找不到第三方程序进程名,用的都是同一个进程名 foxtable.exe ,因为用狐表做的不只一个应用,总不可能都强制关了吧。 [此贴子已经被作者于2014-5-21 15:51:27编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/5/21 15:53:00 -- 换一种思路,
如果它放在dll_1文件夹下,
更新的时候,就把它放在比如dll_2文件夹下,适当的时候,把原来的文件夹。 |
-- 作者:guoweidong -- 发布时间:2014/5/21 15:53:00 -- 最坑的是,更新失败后就不能继续再更新了,内核的版本已更新了,可DLL编译失败了! |
-- 作者:guoweidong -- 发布时间:2014/5/21 15:55:00 -- 更新就从DLL目录下复制到应用根目录的,当首次打开的时候把DLL目录里的文件复制到根目录再删了DLL里的文件的。 |
-- 作者:有点甜 -- 发布时间:2014/5/21 15:56:00 -- 又或者,直接运行bat文件,强制关闭foxtable,然后在bat里面写代码拷贝更新。 |
-- 作者:guoweidong -- 发布时间:2014/5/21 15:58:00 -- 强制关闭foxtable,我还有其它的应用也是狐表做的,是不是都要被关了?这不符合情理啊。 |
-- 作者:blackzhu -- 发布时间:2014/5/21 16:06:00 -- 你这个应该是没有什么办法吧 |
-- 作者:有点甜 -- 发布时间:2014/5/21 16:16:00 -- 以下是引用guoweidong在2014-5-21 15:58:00的发言:
强制关闭foxtable,我还有其它的应用也是狐表做的,是不是都要被关了?这不符合情理啊。
或者把升级代码写在beforeopenproject那里吧,没试过,应该是可以的。 |