我的程序安裝我的自定義服務並註冊它。現在我想要做的是取消註冊服務並在卸載後刪除所有文件。我使用Visual Studio和安裝和部署以及安裝程序類,我已重寫,我下面介紹的幾種方法:使用安裝程序和部署安裝程序類卸載c#編寫的應用程序
protected override void OnAfterUninstall(IDictionary savedState)
{
base.OnAfterUninstall(savedState);
string directory = "C:\\Program Files (x86)\\MyService\\";
if (System.IO.Directory.Exists(directory))
{
string[] files = System.IO.Directory.GetFiles(directory);
foreach (string file in files)
{
System.IO.File.Delete(file);
}
System.IO.Directory.Delete(directory);
}
}
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
string path = "-u \"C:\\Program Files (x86)\\MyService\\AA_service.exe\"";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "C:\\Program Files (x86)\\MyService\\InstallUtil.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = path;
Process.Start(startInfo);
}
它不註銷服務,它不會刪除應用程序文件夾。任何人都可以建議我,我做錯了什麼?
//編輯
現在它正試圖刪除文件,但我正在卸載得到拒絕訪問錯誤。我試圖刪除的文件有.exe,.dll和其他一些文件
如果它不起作用,它會做什麼呢?任何錯誤,你的代碼是否運行? –
您不應該分發'InstallUtil',因爲您的代碼似乎表明您正在執行此操作,並且您在創建基於MSI的安裝程序時不需要手動刪除文件。 –
@Damien_The_Unbeliever:好的,但是這個工具(InstallUtil)可以在不同的電腦上不同的地方,那麼呢?我已經手動刪除文件,因爲他們在卸載過程中不會刪除,我忘記了什麼? –