我有一個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