【问题标题】:WIX MSI: Uninstall of package is not deleting the installation directory root pathWIX MSI:卸载软件包不会删除安装目录根路径
【发布时间】:2015-03-25 04:12:44
【问题描述】:

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

【问题讨论】:

  • Windows Installer 应该会自动卸载它,而无需调用 cmd 会话。您的安装程序还有其他问题。
  • ..除了 Chris 的评论之外,您也不会使用代码,因为 WiX 提供了 RemoveFile 元素。

标签: wix windows-installer uninstallation wix3.5


【解决方案1】:

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

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

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

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

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

this question也可能涵盖您的问题

【讨论】:

  • 嗨 - 如果这个解决方案有效,任何人都可以发表评论吗?我遇到了类似的问题,正在寻找不同的解决方案...
  • 这对我不起作用。问题仍然存在。而在 Windows-Xp m/c 中,它不会删除日志文件(在应用程序使用期间创建)。但是在卸载 Windows-7 和 Windows-8 的情况下,这些日志文件会在卸载过程中被删除
猜你喜欢
  • 2010-11-19
  • 2018-08-17
  • 2019-05-18
  • 1970-01-01
  • 2013-03-02
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
相关资源
最近更新 更多