windows - 如何以编程方式在 Windows 中查找已安装应用程序的安装位置

标签 windows installation windows-installer uninstallation

我想以编程方式查找基于 MSI 的安装的安装位置。该应用程序不会在注册表的卸载键中输入安装位置。应用程序不填充 ARPINSTALLLOCATION 属性。 (这与添加/删除程序引用的值相同,并存储在卸载键中)。但是卸载仍然会找到它所在的位置并可以将其卸载。这些信息存储在哪里? Windows 使用缓存的 MSI 安装程序来卸载应用程序,但安装位置是在安装时首次确定的,因此此信息不是安装程序包的一部分。

最佳答案

我假设当您说“安装位置”时,您的意思是“应用程序的 EXE 位于哪个目录?”否则,这个问题是模棱两可的,因为 MSI 不一定要安装“应用程序”。它可以安装没有 EXE 的组件。并且它可以跨多个目录安装...

但这可能会起作用:

调用MsiGetProductInfo获取 ARPINSTALLLOCATION。您将需要知道安装时的“产品名称”。作为第一个参数。调用MsiEnumProducts如果需要,枚举所有已安装的“产品”

关于windows - 如何以编程方式在 Windows 中查找已安装应用程序的安装位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849207/

相关文章:

javascript - UWP:如何调用WinAPI方法

python - 为什么脚本语言不将 Unicode 输出到 Windows 控制台?

python - shutil.move() 和 copy() 的问题

installation - MacOS Big Sur 安装后放大器不工作

visual-studio-2010 - 如何为 Office 2007 .NET 3.5 目标环境部署 Excel 2010 加载项?

windows - 提取 git commit 中更改的所有文件

android - 安装 HAXM 会得到 "Failed to configure driver: unknown error. Failed to open driver"

visual-studio - 为什么在 .NET 中分发应用程序的 Debug 版本是一种不好的做法?

docker - Acumatica - 在一台计算机上安装多个版本

wix - 为什么 Icon 元素要求 Id 属性以 '.exe' 或 '.ico' 结尾