思路:
exe运行以后是不能删除的,因为文件被进程占用,删除的思路是:把脚本写到bat文件中,然后运行bat并关闭自身。代码如下:
如果删不了,可能是程序关闭的速度慢了。可以在bat脚本中加入sleep。
这个思路也可以用于程序联网自动更新。exe程序把需要更新的文件下载到固定目录中,在启动脚本剪切覆盖后启动。
private static void DeleteThisExe()
{
string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "remove.bat");
System.IO.StreamWriter bat = new System.IO.StreamWriter(fileName, false, System.Text.Encoding.Default);
bat.WriteLine(string.Format("del \"{0}\" /q", System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName));
bat.WriteLine(string.Format("del \"{0}\" /q", fileName));
bat.Close();
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(fileName);
info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(info);
Environment.Exit(0);
}