在某些 WM Std 6.1 上测试我的应用程序,我发现它无法卸载。我收到此错误:
“[app] 没有被完全删除。是否要将其从已安装程序列表中删除?”
检查我的 setup.dll 我可以知道每次都调用 Uninstall_Init 和 Uninstall_Exit 但所有文件都保留(它们没有被锁定,我已经检查过)并且它的条目不会从已安装的应用程序列表中消失(无论我选择它留下与否)。
在某些 WM Std 6.1 上测试我的应用程序,我发现它无法卸载。我收到此错误:
“[app] 没有被完全删除。是否要将其从已安装程序列表中删除?”
检查我的 setup.dll 我可以知道每次都调用 Uninstall_Init 和 Uninstall_Exit 但所有文件都保留(它们没有被锁定,我已经检查过)并且它的条目不会从已安装的应用程序列表中消失(无论我选择它留下与否)。
这实际上只有三个可能的原因:
如果您已经验证了 1 和 2 就可以了,那么 3 将很难弄清楚。
我遇到的一些问题:
我需要为现有客户做的是编写一个卸载应用程序,以便在卸载成功时手动删除我们的应用程序。如果您确实需要编写手动卸载,您需要执行以下操作: * 删除所有注册表项 * 删除所有文件 * 删除注册表项 HKLM\Security\AppInstall{app name} * 在 WM6.1 中,您需要删除来自 EDB 数据库“SwMgmtMetadataStore”的数据库记录,其中 SWT_INSTALL_NAME_TAG 属性等于您的 {app name}。
另一件值得调查的事情是 cab 安装/卸载过程创建的安装日志。
您可以在 \Application Data\Volatile\ 目录(通常称为 setup.log)中找到它。
将此文件复制到您的台式 PC 并在记事本中打开它可能会提供更多关于卸载失败原因的线索(例如卸载期间正在使用的文件)。
我有几个在 WM 6.0 上完美运行的 CAB 文件,但在 WM 6.1 中停止运行。
原来这是因为 AppName 或制造商中有空格。删除空格修复了 CAB 文件,它们现在在 WM 6.1 中成功卸载!