首页 > 解决方案 > Windows在卸载软件时如何找到安装位置

问题描述

当我运行允许自定义安装位置/路径的安装程序时,文件将正确放置在我选择的位置。

当我运行相同的 MSI 并选择删除(或从添加/删除程序中卸载)时,它如何知道安装位置以便删除正确的文件?

我以为它将存储在“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{GUID}”,但是当我查看已安装软件的该位置时,“InstallLocation”键为空

但是,无论我如何卸载它,它都知道要删除哪个文件夹,无论我把它放在哪里。该信息是存储在注册表中的其他位置,还是存储在 MSI 文件本身中?

标签: windowsinstallationuninstallationwindows-installer

解决方案


这是一个非常复杂的问题,因为可以将 MSI 配置为在您告诉它的任何地方删除其卸载文件。通常默认情况下,它会在 C:\Windows\Installer 中创建一个具有特定名称的卸载 .msi 文件。

但不要依赖卸载 .msi 被放置在此目录中,也不要依赖卸载注册表项中存在卸载路径。这个关键与最终用户的便利性一样重要。

卸载信息通常包含在 MSI 文件中,但它不是必须的,并且在安装期间它可以创建密钥以帮助升级和卸载。安装将保留在注册表中的信息完全取决于您如何配置 .msi 数据库。

添加更多内容... Nullsoft、InstallAware 和 InstallShield 等许多安装程序喜欢自己做事并将卸载信息放在其他地方。所以InstallShield 喜欢创建一个InstallShield 安装信息文件夹,而Nullsoft 喜欢创建.dat 文件和uninstall.exe。但除此之外,这些安装程序仍在调用 MSI 并创建安装表和数据库。因此,卸载信息的实际位置并不是一门精确的科学!


推荐阅读