运行后删除应用程序文件

时间:2011-03-08 08:30:28

标签: c#

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

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

我们有一个使用clickonce部署的应用程序。 现在我想为此创建一个卸载功能。 我已经让卸载工作正常,但我也需要删除卸载应用程序。它应该只是一个需要删除的单个exe文件,在它完成之后。

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

3 个答案:

答案 0 :(得分:2)

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

这里有一个样本:

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);

答案 1 :(得分:1)

使用Directory.Delete();

  System.IO.Directory.Delete("full_Path_of_Folder_to_delete", true);

答案 2 :(得分:1)

这有点鸡蛋问题,但只要文件未锁定,您就可以按照建议使用Directory.Delete。我建议你使用一个依赖于microsoft安装程序的工具,或者只是使用publish选项来安装你的C#应用​​程序。

如果你真的想制作自己的安装程序和卸载程序,请查看这样的开源解决方案,看看他们是如何做到的:http://nsis.sourceforge.net/Main_Page