使用VB6.0,win2000,win98,winxpSp2
如题,对程序的主exe进行版本更新,就一个文件要更新。原程序代码中有连接网络数据库,程序在运行中,打开版本更新,使用FindWindow检查程序是否正在运行,检查到的话,用PostMessage关闭它,然后使用CopyFile对原EXE文件从网络中进行覆盖拷贝。问题是,copyfile有时返回True,表示拷贝成功,但有时返回False,没有进行拷贝。想知道原因,显然,我先可以排除文件只读和权限问题,也可以排除网络问题。问题也许就处在PostMessage上,对一个已经打开,并且有连接Oracle数据库的进程或程序,用PostMessage关闭它后,是否可以直接用CopyFile覆盖?当然,也可能是其他方面的问题,大家集思广益,我会及时对大家的方法进行测试和告知结果,感谢大家,望多多参与。
如题,对程序的主exe进行版本更新,就一个文件要更新。原程序代码中有连接网络数据库,程序在运行中,打开版本更新,使用FindWindow检查程序是否正在运行,检查到的话,用PostMessage关闭它,然后使用CopyFile对原EXE文件从网络中进行覆盖拷贝。问题是,copyfile有时返回True,表示拷贝成功,但有时返回False,没有进行拷贝。想知道原因,显然,我先可以排除文件只读和权限问题,也可以排除网络问题。问题也许就处在PostMessage上,对一个已经打开,并且有连接Oracle数据库的进程或程序,用PostMessage关闭它后,是否可以直接用CopyFile覆盖?当然,也可能是其他方面的问题,大家集思广益,我会及时对大家的方法进行测试和告知结果,感谢大家,望多多参与。
你用的copyfile是api还是自己写的函数还是fso里的方法?????
如果是api,返回值应该是long(非0表示成功)而不是boolean,而且会设置GetLastError,用GetLastError应该可以得到错误信息........
另外,请看看bFailIfExists参数的设置.......
因为在以前做的时候,没有考虑要在线更新。所以,这次额外做了个EXE,负责更新。