我有一个 Wix 安装程序,如果我不执行我的自定义操作,它可以很好地安装和删除。但是,如果我确实执行了它们,那么我的自定义操作就可以完成它的工作,并且卸载确实成功,但是安装的所有文件都保留在程序文件应用程序目录中。
安装时,我的自定义操作 (After="InstallFiles") 将一些文件从 Zip 提取到主安装目录下的目录中。我还捕获了提取(添加)的所有文件的列表。这完美地工作。
卸载时,我的自定义操作 (After="MsiUnpublishAssemblies") 会遍历列表并删除添加的文件、添加的子目录和文件列表本身。这工作正常 - 我添加的文件被删除。但是,即使安装程序完成了所有步骤(据我从日志文件中得知)并成功结束,安装程序最初安装的主要文件仍然存在。
任何想法在这里都会有很大的帮助。
谢谢!
更新:我暂时用蛮力的方式解决了这个问题,但我仍然想要一个真正的答案。这是我的蛮力代码。我用我的 InstallDir 的 DirectoryInfo 来调用它。
private static void CleanupTheRest(DirectoryInfo dirInfo)
{
// until I figure out why the unistall won't remove these after executing my CA
foreach (var subDirInfo in dirInfo.GetDirectories())
{
CleanupTheRest(subDirInfo);
}
foreach (var file in dirInfo.GetFiles())
{
file.Delete();
}
dirInfo.Delete();
}