C#如何实现自我删除?

hm7921936 2010-04-15 03:28:46
如题谢谢,程序在运行时把自己的文件删除掉在退出,就是卸载需要的。
...全文
317 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dopsop110 2010-04-15
  • 打赏
  • 举报
回复
不懂
帮顶
蹭分
doubleu2005 2010-04-15
  • 打赏
  • 举报
回复
退出时调用批处理,删除程序再删除批处理自己
Baesky 2010-04-15
  • 打赏
  • 举报
回复
支持批处理流~~
myrroom 2010-04-15
  • 打赏
  • 举报
回复
让程序生成一个vps脚本到临时目录,执行脚本,然后让脚本执行删除程序的操作
bluedoctor 2010-04-15
  • 打赏
  • 举报
回复
批处理程序可以在运行的时候删除自己。
jietuan 2010-04-15
  • 打赏
  • 举报
回复
程序启动之后删除自己? 不是很清楚你的意思,是删除运行的进程,还是你安装好了的整个程序?
assky124 2010-04-15
  • 打赏
  • 举报
回复
将自己拷贝一份到 X:/Temp 文件夹下
启动Temp 目录下的程序,删除原位置程序。

清理系统垃圾时,会将Temp目录下的文件都会被删除的。

一个思路,没试过
hm7921936 2010-04-15
  • 打赏
  • 举报
回复
谢顶,

我的意思是程序启动之后删除自己,需要C#的,VC找了很多,觉得麻烦。

我的删除是自己写的,不是工具,所以不适用。。
皇城龙三 2010-04-15
  • 打赏
  • 举报
回复
方法一:利用msiexec.exe文件(一般在\winnt\system32目录下)。将该文件集成到安装文件目录中,然后选择安装项目的工程属性,找到Product Code一览,比如ProductCode {5284694C-24C1-4FCF-A705-D4B9A0081274},将这个{5284694C-24C1-4FCF-A705-D4B9A0081274}copy下来,然后在开始菜单中建立msiexec.exe的快捷方式,起个名字叫卸载,然后选择属性,在Argumengs一览中填写/x空格,然后把那个copy下来的ProductCode 复制到这里,就OK了,然后编译生成安装文件,试着安装一下,卸载程序就在开始菜单中了。用这个的好处呢就是方便,但是由于copy了一个和操作系统相关的msiexec.exe文件,所以仍然是不太合适。
方法二:1、先部署程序,记下程序的ProductCode 的值 ,例如:50026DC8-69DC-4B92-89CC-3D10AD4CA8C4
(选择解决方案资源管理器根目录如setup,再查看属性标签,不是右键中的属性)
2、建立1个新的winFrom程序
3、删除自动生成的form1。
4、添加个类,写入下面代码
using System;

namespace uninst
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class UnInstall
{
[STAThread]
static void Main(string[] args)
{
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} /qr");
//{50026DC8-69DC-4B92-89CC-3D10AD4CA8C4} 就是上诉的ProductCode
}
}
}
5、生成新的控制台程序
6、再把这个新的卸载程序添加到你的安装包里就行了。


方法三:1.用VS.net建立一个新的控制台程序uninst.exe文件,
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
2.将控制台程序BIN目录的exe文件加入到打包程序文件中
3.在程序组创建uninst.exe的快捷方式
cecilia2006 2010-04-15
  • 打赏
  • 举报
回复
思路 启动另外一个删除exe A 然后本程序退出 然后A 执行删除程序操作
脚跟着地 2010-04-15
  • 打赏
  • 举报
回复
是不是写好了软件不知道怎么卸载呀?其实微软早就考虑好了,你发布以后生成一个安装文件。安装了后程序就里面可以卸载的。如果想让发布的程序漂亮点,可以看一下用installer发布的教程。
kinglshadow 2010-04-15
  • 打赏
  • 举报
回复
friendly up

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧