我的程序安装我的自定义服务并注册它。现在我想要做的是取消注册服务并在卸载后删除所有文件。我使用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)可以在不同的电脑上不同的地方,那么呢?我已经手动删除文件,因为他们在卸载过程中不会删除,我忘记了什么? –