天天看點

visual studio installer 解除安裝時不能删除安裝目錄問題

在vs中可以制作安裝程式,但是這個安裝程式預設解除安裝的時候不會把安裝目錄解除安裝,如果想在解除安裝的時候删除這個目錄,那就要費點周折了。此方法同時适應于程式自删除以及工作目錄删除。

基本思路是在程式要退出的時候啟動一個腳本,該腳本會做好善後工作,删除所有不必要的東西。注意這個腳本應該是在程式完全退出以後再去删工作目錄。

直接貼代碼了,思路也很簡單,主要是通過一個ping來進行延時,保證程式退出以後再删。

protected

override

void

OnAfterUninstall(IDictionary

savedState)

{

Assembly

asm = Assembly.GetExecutingAssembly();

string

path = asm.Location.Remove(asm.Location.LastIndexOf("\\"));

DeleteAllSelf(path);

static

DeleteAllSelf(string

path)

System.IO.Directory.SetCurrentDirectory("c:\\");

fileName = Path.Combine("c:\\", "remove.bat");

StreamWriter

bat = new

StreamWriter(fileName, false, Encoding.Default);

bat.WriteLine("ping 127.0.0.1 -n 7 > nul"); //此處的延時非常必要,,保證删目錄的時候程式已經完全退出了!

bat.WriteLine(string.Format("rd \"{0}\" /q /s", path));

bat.WriteLine(string.Format("del \"{0}\" /q", fileName));

bat.Close();

ProcessStartInfo

info = new

ProcessStartInfo(fileName);

info.WorkingDirectory = "c:\\";

info.WindowStyle = ProcessWindowStyle.Hidden;

Process.Start(info);

}

繼續閱讀