Windows Mobile无法卸载

时间:2009-06-02 16:12:02

标签: c++ windows-mobile installation uninstall

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

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

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

3 个答案:

答案 0 :(得分:2)

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

  1. Uninstall_Init不会返回继续。
  2. Uninstall_Exit不会返回继续。
  3. 安装程序引擎失败。
  4. 如果您已经确认1& 2然后确定3将很难弄明白。

    我所提出的一些问题:

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

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

答案 1 :(得分:1)

值得研究的另一件事是由cab安装/卸载过程创建的安装日志。

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

将此文件复制到桌面PC并在记事本中打开它可能会提供更多线索(例如卸载期间正在使用的文件),以了解卸载失败的原因。

答案 2 :(得分:0)

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

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