【发布时间】:2009-11-03 01:21:05
【问题描述】:
在 Vista 或更新版本的 Windows 中卸载我们的应用程序(网络服务器)后,会出现一个错误消息框,显示“尝试卸载我的应用程序时发生错误。它可能已经被卸载。您想从程序和功能列表中删除我的应用程序吗?并且有“是”和“否”按钮。这发生在我的安装程序关闭后和系统重新启动之前。 (重启后,应用程序不再在ARP列表中,因此该错误信息是不必要的。)
这似乎与this重复,但消息框不同,只有在满足以下所有条件时才会发生:
- 程序和功能控制面板已打开
- 安装程序会卸载 IIS(如果我们的安装程序一开始没有安装 IIS、有其他网站在使用它或用户在提供选项时选择不卸载它,则不会这样做)
- 用户同意在我们的安装程序中立即重新启动。
我尝试在 HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted 下的注册表中添加一个值,其中包含控制面板运行的安装程序副本的路径(它是旧版安装程序这是基于早于 Windows 安装程序的 InstallShield 技术)。虽然注册表修复可以防止在执行添加/删除组件安装(或者,使用新术语,修改安装)时出现的 UAC 消息,但它不会阻止这个。
我需要一种方法来防止错误消息,因为当权者将其视为释放阻止程序。有一些变通方法可以阻止该消息(包括不卸载 IIS),但上级对变通方法不感兴趣;他们希望解决实际问题。 (下一个版本的安装程序将使用最新的技术,所以谢天谢地,这是一次令人头疼的问题。)
编辑: 在做了一些实验后,我发现卸载 IIS 会在我们的安装程序退出并启动系统重新启动时使控制面板显示错误消息。 (我们的安装程序通过带有 /norestart 选项的 pkgmgr.exe 命令行卸载 IIS ——一旦准备就绪,我们的安装程序会在这种情况下负责重新启动。)
【问题讨论】:
标签: windows-vista windows-server-2008 uninstallation control-panel