我正忙着创建一个自定义卸载应用程序。
我想知道如何在应用程序运行后以编程方式删除它。我使用的是一个用c#编写的标准winform应用程序
我们有一个使用clickonce部署的应用程序。现在我想为它创建一个卸载函数。我已经可以正常卸载了,但是我也需要删除卸载应用程序。它应该只是一个需要删除的exe文件,在它完成它的事情之后。
我不希望在用户的机器上留下任何剩余的文件
发布于 2011-03-08 16:36:04
我想你的问题已经被问到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);发布于 2011-03-08 16:34:40
使用Directory.Delete();
System.IO.Directory.Delete("full_Path_of_Folder_to_delete", true);发布于 2011-03-08 16:35:06
这有点像是鸡生蛋的问题,但是只要文件没有被锁定,您就可以按照建议使用Directory.Delete。我建议您使用依赖于microsoft安装程序的工具,或者简单地使用发布选项来使您的C#应用程序可安装。
如果您真的想创建自己的安装程序和卸载程序,可以看看下面这样的开源解决方案,看看它们是如何做到的:http://nsis.sourceforge.net/Main_Page
https://stackoverflow.com/questions/5230061
复制相似问题