首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行后删除应用程序文件

运行后删除应用程序文件
EN

Stack Overflow用户
提问于 2011-03-08 16:30:28
回答 3查看 1.9K关注 0票数 1

我正忙着创建一个自定义卸载应用程序。

我想知道如何在应用程序运行后以编程方式删除它。我使用的是一个用c#编写的标准winform应用程序

我们有一个使用clickonce部署的应用程序。现在我想为它创建一个卸载函数。我已经可以正常卸载了,但是我也需要删除卸载应用程序。它应该只是一个需要删除的exe文件,在它完成它的事情之后。

我不希望在用户的机器上留下任何剩余的文件

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 16:36:04

我想你的问题已经被问到here了。您必须使用MoveFileEx API,当给它一个MOVEFILE_DELAY_UNTIL_REBOOT标志时,它将在下一次系统启动时删除指定的文件。

这里有一个示例:

代码语言:javascript
运行
复制
internal enum MoveFileFlags
{
    MOVEFILE_REPLACE_EXISTING = 1,
    MOVEFILE_COPY_ALLOWED = 2,
    MOVEFILE_DELAY_UNTIL_REBOOT = 4,
    MOVEFILE_WRITE_THROUGH  = 8
}

[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll",EntryPoint="MoveFileEx")]
internal static extern bool MoveFileEx(string lpExistingFileName, string lpNewFileName,
MoveFileFlags dwFlags);

MoveFileEx(fileToDelete, null, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT);
票数 2
EN

Stack Overflow用户

发布于 2011-03-08 16:34:40

使用Directory.Delete();

代码语言:javascript
运行
复制
  System.IO.Directory.Delete("full_Path_of_Folder_to_delete", true);
票数 1
EN

Stack Overflow用户

发布于 2011-03-08 16:35:06

这有点像是鸡生蛋的问题,但是只要文件没有被锁定,您就可以按照建议使用Directory.Delete。我建议您使用依赖于microsoft安装程序的工具,或者简单地使用发布选项来使您的C#应用程序可安装。

如果您真的想创建自己的安装程序和卸载程序,可以看看下面这样的开源解决方案,看看它们是如何做到的:http://nsis.sourceforge.net/Main_Page

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5230061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档