我有一个Wix安装程序,安装并删除罚款,如果我不执行我的自定义操作。但是,如果我确实执行了它们,那么我的自定义操作就会完成它的工作,并且卸载成功,但是所有安装的文件仍保留在程序文件应用程序目录中。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();
}
我们有多个功能,每个功能都需要从大量数据文件的副本开始。我试图不把这个集合多次放入安装程序。解压缩非常适合安装功能。要回答你的问题: *'立即',MsiUnpublishAssemblies后 *同步(检查) *没有“删除”CA的卸载工程,但留下的解压缩文件 *我没有启用“遗留shareddll参考计数“功能 也许我可以尝试为每个功能生成一个”RemoveFile“元素的片段组件。 感谢您的回复! – 2009-09-26 15:24:33