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



在安装过程中,选择目录为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" />

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

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

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

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

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

这个问题也可能涵盖您的问题

最新更新