我让它工作。我在解决方案中创建了一个新的控制台项目“ UninstallHelper ”。在UninstallHelper项目中添加了一个InstallerClass 。我正在覆盖OnBeforeUninstall方法:
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
try
{
List<string> appFolders = new List<string>();
string userFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string userDataFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
userFolderPath = userFolderPath + @"\CompanyName";
userDataFolderPath = userDataFolderPath + @"\CompanyName";
appFolders.Add(userFolderPath);
appFolders.Add(userDataFolderPath);
foreach (string folderPath in appFolders)
{
List<string> umDirs = new List<string>();
DirectoryInfo targetDir = new DirectoryInfo(folderPath);
foreach (DirectoryInfo dir in targetDir.GetDirectories())
{
if (dir.Name.StartsWith("ProductName"))
umDirs.Add(dir.FullName);
}
foreach (string dirName in umDirs)
{
DirectoryInfo subDir = new DirectoryInfo(dirName);
foreach (FileInfo file in subDir.GetFiles())
{
if (file.Exists)
file.Delete();
}
foreach (DirectoryInfo dir in subDir.GetDirectories())
{
if (dir.Exists)
dir.Delete(true);
}
subDir.Delete();
}
}
}
catch(Exception ex)
{
//Console.WriteLine(ex.Message);
//Console.ReadKey();
}
现在我在安装程序中添加这个项目的 Primary OutPut。最后,我在 Uninstall 中添加了一个自定义操作作为UninstallHelper项目的主要输出。
这对我有用。