windows应用程序A.exe,放在我的某个共享目录里面,在局域网内的另一台机器上作了一个快捷方式。
A.exe执行后,会调用另一个下载程序从服务器上下载最新的版本到临时文件夹中,然后删除A.exe,再
从临时文件夹拷贝一个A.exe到当前目录。以上执行在本机没有问题,但是如果另外一台机器上正在
通过快捷方式运行A.exe,那么本机执行的下载程序可以删除A.exe,但是无法从临时文件拷贝A.exe到当前目录。试验了一下,如果在本机打开A.exe ,然后用鼠标右键选删除,会弹出不能删除的信息;如果是别的机器上打开
A.exe,则不会弹出信息,可以删除掉。我想要确保A.exe被删除掉然后copy一个新的A.exe,如果只是被删除了没有copy一个新的过来就坏了不知道我说清楚了没有下面的代码片断是下载程序(Update.exe)的部分代码:删除A.exe所在目录的所有文件:
private bool getDirectories(string path)
{
try
{
string[] fileNames = Directory.GetFiles(path);
string[] directories = Directory.GetDirectories(path);
foreach (string file in fileNames)
{
System.IO.File.Delete(file);
}
foreach (string dir in directories)
{
int x=dir.LastIndexOf(@"\");
string dirname=dir.Substring(x+1);
if(dirname=="EXE" || dirname=="Ini" || dirname=="Runtime")
{
getDirectories(dir);
}
}
return true;
}
catch(Exception)
{
return false;
}
}拷贝文件:
private bool CopyFolder(string sourcepath,string targetpath)
{
try
{
DirectoryInfo di=new DirectoryInfo(sourcepath);
foreach(FileSystemInfo fsi in di.GetFileSystemInfos())
{
String destName=Path.Combine(targetpath,fsi.Name);
if(fsi is FileInfo)
{
File.Copy(fsi.FullName,destName);
}
}
return true;
}
catch(Exception)
{
return false;
}
}
A.exe执行后,会调用另一个下载程序从服务器上下载最新的版本到临时文件夹中,然后删除A.exe,再
从临时文件夹拷贝一个A.exe到当前目录。以上执行在本机没有问题,但是如果另外一台机器上正在
通过快捷方式运行A.exe,那么本机执行的下载程序可以删除A.exe,但是无法从临时文件拷贝A.exe到当前目录。试验了一下,如果在本机打开A.exe ,然后用鼠标右键选删除,会弹出不能删除的信息;如果是别的机器上打开
A.exe,则不会弹出信息,可以删除掉。我想要确保A.exe被删除掉然后copy一个新的A.exe,如果只是被删除了没有copy一个新的过来就坏了不知道我说清楚了没有下面的代码片断是下载程序(Update.exe)的部分代码:删除A.exe所在目录的所有文件:
private bool getDirectories(string path)
{
try
{
string[] fileNames = Directory.GetFiles(path);
string[] directories = Directory.GetDirectories(path);
foreach (string file in fileNames)
{
System.IO.File.Delete(file);
}
foreach (string dir in directories)
{
int x=dir.LastIndexOf(@"\");
string dirname=dir.Substring(x+1);
if(dirname=="EXE" || dirname=="Ini" || dirname=="Runtime")
{
getDirectories(dir);
}
}
return true;
}
catch(Exception)
{
return false;
}
}拷贝文件:
private bool CopyFolder(string sourcepath,string targetpath)
{
try
{
DirectoryInfo di=new DirectoryInfo(sourcepath);
foreach(FileSystemInfo fsi in di.GetFileSystemInfos())
{
String destName=Path.Combine(targetpath,fsi.Name);
if(fsi is FileInfo)
{
File.Copy(fsi.FullName,destName);
}
}
return true;
}
catch(Exception)
{
return false;
}
}
解决方案 »
- 我在学习【创建动态链接库】时出现的错误,有图,请高手指导
- 透明LABEL显示速度很慢怎么解决
- 只有Type对象 而没有接口或类的定义 能不能做类型强制转换
- 装Visual Studio 2008后可以再装2005的吗?????????
- win7下在有开UAC的情况,c#的文件拖拽操作失效。 如何解决?
- 100分求一个解决办法或思路(急)(c#)
- 问一下cpu超频后在“我的电脑”右键能看见cpu的变化吗?
- 在VC#.net中怎么设置鼠标指针形状?(在线等)
- C# TCP通信,本机测试能通,分开测试不通了
- ▉▉▉win98机器接宽带上网,有时能连上网,有时连不上,网络不通。真是怪了。
- 谈谈c#中的XML ajax
- [Winform] Message.show()问题..
不过我是还是建议你的A.EXE可以互相通信,不关通过什么方式,只要我能获得它传过来的信息,我就知道他在运行,
再发送一个结束信息过去,目标程序接受到结束信息后,自行调用CLOSE()。。
这是我的思路