我正忙着创建自定义卸载应用程序。
我想知道如何在运行后以编程方式删除我的应用程序。 我正在使用以c#编码的标准winform应用程序
我们有一个使用clickonce部署的应用程序。 现在我想为此创建一个卸载功能。 我已经让卸载工作正常,但我也需要删除卸载应用程序。它应该只是一个需要删除的单个exe文件,在它完成之后。
我不希望在用户的计算机上留下任何剩余的文件
答案 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