在安装过程中,选择目录为C:/ Test /(安装位置的根路径)以安装我的应用程序。它成功安装在此位置(C:/ Test /)。卸载此软件包后,将删除所有已安装的文件和子目录。但是没有删除已安装的根目录(即C:/ Test)。下面的自定义操作用于删除/删除安装根路径和安装文件(带子目录)。
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
<Custom Action="ApplicationInstallDir" After="AppSearch">APPINSTALLDIR</Custom>
<Custom Action="DeleteInstallDir" Before="RemoveFiles" >
REMOVE="ALL"
</Custom>
</InstallExecuteSequence>
<CustomAction Id="DeleteInstallDir" BinaryKey="CommandPrompt"
ExeCommand="cmd /C pushd "[APPINSTALLDIR]" && (rd /s /q "[APPINSTALLDIR]" 2>nul & popd)" Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />
答案 0 :(得分:1)
使用卸载的详细日志记录来查找问题的根源:
msiexec /x SetupProject.msi /L*V log.txt
如果安装到非默认目录,请验证卸载时是否正确设置了[APPINSTALLDIR]
。 (对我来说,事实并非如此。)
请注意,可能有更好的方法:
WiX支持使用RemoveFolderEx递归删除文件和文件夹。可以在hass.de找到如何使用它的说明。这将删除剩余文件并删除所有目录,包括根安装路径。
我从自定义DLL操作切换到RemoveFolderEx
,它工作正常。