【问题标题】:Windows Mobile fails to uninstallWindows Mobile 无法卸载
【发布时间】:2009-06-02 16:12:02
【问题描述】:

在某些 WM Std 6.1 上测试我的应用程序,我发现它无法卸载。我收到此错误:

“[app] 没有被完全删除。是否要将其从已安装程序列表中删除?"

检查我的 setup.dll 我可以看出 Uninstall_Init 和 Uninstall_Exit 每次都被调用但所有文件都保留(它们没有被锁定,我已经检查过)并且它的条目不会从已安装的应用程序列表中消失(不管我是否选择留下)。

【问题讨论】:

    标签: c++ windows-mobile installation uninstallation


    【解决方案1】:

    这实际上只有三个可能的原因:

    1. Uninstall_Init 不返回继续。
    2. Uninstall_Exit 不返回继续。
    3. 安装程序引擎失败。

    如果您已经验证了 1 和 2 就可以了,那么 3 将很难弄清楚。

    我遇到的一些问题:

    • 检查安装 DLL 的 DLL 依赖项并尝试删除尽可能多的依赖项。我发现对 MSXML 的依赖可能会导致问题。
    • 删除 INF 文件中的所有注册表设置,将其移动到设置 dll 中。我发现这会导致随机设备上的卸载随机失败。

    我需要为现有客户做的是编写一个卸载应用程序,以便在卸载成功时手动删除我们的应用程序。如果确实需要编写手动卸载,则需要执行以下操作: *删除所有注册表项 *删除所有文件 * 删除注册表项 HKLM\Security\AppInstall{app name} * 在 WM6.1 中,您需要从 EDB 数据库“SwMgmtMetadataStore”中删除一条数据库记录,其中 SWT_INSTALL_NAME_TAG 属性等于您的 {app name}。

    【讨论】:

    • 我认为这将是 3 在我的情况下,1&2 工作正常。谢谢你的建议,我会照说的做的。
    【解决方案2】:

    另一件值得调查的是 cab 安装/卸载过程创建的安装日志。

    您可以在 \Application Data\Volatile\ 目录(通常称为 setup.log)中找到它。

    将此文件复制到您的台式电脑并在记事本中打开它可能会提供更多关于卸载失败原因的线索(例如卸载期间正在使用的文件)。

    【讨论】:

      【解决方案3】:

      我有几个在 WM 6.0 上完美运行的 CAB 文件,但在 WM 6.1 中停止运行。

      原来是因为 AppName 或制造商中有空格。删除空格修复了 CAB 文件,它们现在在 WM 6.1 中成功卸载!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 2021-10-16
        • 2020-12-04
        • 2020-11-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多