WIX MSI:卸载软件包不会删除安装目录根路径

时间:2015-01-26 17:25:56

标签: wix windows-installer uninstall wix3.5

在安装过程中,选择目录为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 &quot;[APPINSTALLDIR]&quot; &amp;&amp; (rd /s /q &quot;[APPINSTALLDIR]&quot; 2>nul &amp; popd)"            Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />

1 个答案:

答案 0 :(得分:1)

使用卸载的详细日志记录来查找问题的根源:

msiexec /x SetupProject.msi /L*V log.txt

如果安装到非默认目录,请验证卸载时是否正确设置了[APPINSTALLDIR]。 (对我来说,事实并非如此。)

请注意,可能有更好的方法:

WiX支持使用RemoveFolderEx递归删除文件和文件夹。可以在hass.de找到如何使用它的说明。这将删除剩余文件并删除所有目录,包括根安装路径。 我从自定义DLL操作切换到RemoveFolderEx,它工作正常。

this question

也可能涵盖您的问题