3

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

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

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

4

3 回答 3

2

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

  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}。

于 2009-06-02T17:22:03.770 回答
1

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

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

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

于 2009-06-05T02:14:22.103 回答
0

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

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

于 2010-06-08T11:57:12.893 回答