用C#编写一个自己删除自身文件及文件夹的卸载程序

嘎子 C# 2016-01-31 1,380 次浏览 , 7条评论

本来自己很高兴的写了一篇文章:用C#删除程序占用文件。本来以为是这一个很好的解决方案。事实再一次证明,没有实践,就没有发言权。自己在实际使用的时候发现根本不是那么一回事,这个完全起不以作用。

最后经过多方面的搜索发现,用程序代码删除正在运行的程序是不可能的(至少我现在的水平还不可能)。只有使用一种折衷的方法,网上使用比较多的是用批处理程序。经过对网上提供的代码我整理如下:

 

感觉这个代码非常好,但是美中不足,要是将程序的文件夹也删除就好了,所以我就加了一句:

事实证明,想法是美好的,事实是残酷的。这个没有成功。

好吧,开始打原因:

1、我想到的第一个原因是因为速度的事。在程序没有完全关闭的时候,bat就开始运行了,最终没有办法删除。所以我双加了一句延时代码

 

结果还是不行,没办法,调试一下吧,主要调试bat文件。所以在bat文件末尾又加了一句:

 

 

观察文件删除时正常,但文件夹删除时显示被占用,但是文件夹是空的,为什么会被占用呢?

 

仔细观察发现命令的起始位置竟然是当前文件夹!!!终于发现问题了:再加一句:

 

完美!!!

 

最终完成代码:

 

 

这样就实现了一个完美的卸载程序了。

最后要把这一段程序放在哪里呢?我放在Main函数的最后一行,完美运行!

 

 

 

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: 用C#编写一个自己删除自身文件及文件夹的卸载程序

相关主题

  • 将自写的卸载程序添加到控制面板中2016-02-09 将自写的卸载程序添加到控制面板中 (0)
    本文以C#语言为例,但实际上你可以使用任何语言来做这件事,甚至你都可以手动添加。 先直接明了,上图片: […]
  • 用.NET执行AutoCAD自带命令2016-02-20 用.NET执行AutoCAD自带命令 (2)
    看到网上很多文章说什么以前用其他语言时执行AutoCAD中自带的命令非常方便,而.Net使用时非常不方便。这样说也不算错,因为在AutoCAD […]
  • C#中的具名参数、可选参数及注意问题2016-03-21 C#中的具名参数、可选参数及注意问题 (0)
    具名参数 和 可选参数 是 C# framework 4.0 出来的新特性。 一. 常规方法定义及调用 public void […]
  • Db4o的第三扩展库的使用2016-07-10 Db4o的第三扩展库的使用 (0)
    最早的时候只是看过Db4o的一些基本内容,感觉他的理念和使用方法真是太符合我的要求了,但最近在使用Db4o的时候发现,Db4o还是有很多不足之处的。在之前的文 […]
  • AutoCAD.Net自定义菜单及自动加载2016-02-21 AutoCAD.Net自定义菜单及自动加载 (6)
    首先要明确一点,在现阶段,.Net是无法添加自定义菜单的,所以只能借助其他方法。最常见的是通过COM的方式引入AcadApplication,从而调用菜 […]
  • 用C#获取NIST时间2016-02-05 用C#获取NIST时间 (0)
    NIST为National Institute of Standards and […]

说点什么

7 评论 在 "用C#编写一个自己删除自身文件及文件夹的卸载程序"

提醒
avatar
排序:   最新 | 最旧 | 得票最多
华尔街靳乾坤
游客
华尔街靳乾坤

bat.WriteLine(string.Format(“del “{0}” /q”, exePath));
bat.WriteLine(string.Format(“del “{0}” /q”, fileName));
bat.WriteLine(string.Format(“rd “{0}” /q”, exePath.Substring(0, exePath.LastIndexOf(‘\’))));

中间这句应该放最后吧?删除完可执行程序,再删除可执行程序所在文件夹,再删除批处理文件。而且,删除文件夹加个/s会好一些
bat.WriteLine(string.Format(“del “{0}” /q”, exePath));
bat.WriteLine(string.Format(“del “{0}” /q”, fileName));
bat.WriteLine(string.Format(“rd “{0}” /s /q”, exePath.Substring(0, exePath.LastIndexOf(‘\’))));

华尔街靳乾坤
游客
华尔街靳乾坤

没法删除文件夹啊

vming
游客
vming

完美解决了我的问题,真的是,非常谢谢!

奇虎分享网
游客

哎呦,不错哦!欢迎互访,诚交友链!

钰铜
游客
钰铜

为什么我用你的代码只能删除可执行文件本身,删除不了它所在的文件夹

wpDiscuz
回顶部