Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行时删除self_C#_C# 4.0_Uninstallation - Fatal编程技术网

C# 运行时删除self

C# 运行时删除self,c#,c#-4.0,uninstallation,C#,C# 4.0,Uninstallation,我正在创建一个卸载应用程序,删除应用程序文件夹。问题是我无法删除同一文件夹中的卸载程序应用程序,因为它正在运行。 是否有一种方法可以在运行时删除应用程序,使其只在内存中 string Installation = UninstallRegister.Read("InstallationLocation"); if (Directory.Exists(StartMenu)) { Directory.Delete(StartMe

我正在创建一个卸载应用程序,删除应用程序文件夹。问题是我无法删除同一文件夹中的卸载程序应用程序,因为它正在运行。 是否有一种方法可以在运行时删除应用程序,使其只在内存中

        string Installation = UninstallRegister.Read("InstallationLocation");
        if (Directory.Exists(StartMenu))
        {
            Directory.Delete(StartMenu, true);
        }

致以最诚挚的问候

一个简单的想法是将卸载应用程序复制到%TEMP%并从那里运行。但是,这将在%TEMP%中保留一个文件(这可能不会被任何人注意到)。

您可以使用命令提示符Del command

有一个名为cmdwait的命令
您可以设置删除文件的等待时间,然后关闭应用程序并让其删除。您可以使用此命令。它关闭你的应用程序并启动cmd remove directory命令arter deley=3000

此解决方案可删除应用程序和文件夹

Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & RD /s /q " + Path.GetDirectoryName(Application.ExecutablePath));
                    Application.Exit();

临时文件夹也可以在需要时使用Windows清理实用程序E进行清理,因此使用临时目录是一种很好的方式。它运行良好,但由于某些原因,我在卸载程序中发现一个错误,即将卸载程序提取到临时文件夹的应用程序仍在运行。System.Diagnostics.Process.Start(@tempPath+“uninstall.exe”);返回;此文件的可能副本对我不起作用,因为关闭前需要删除或从应用程序文件夹中移动EXE,否则无法删除应用程序文件夹。无论如何,谢谢你。