我想以编程方式查找基于 MSI 的安装的安装位置。该应用程序不会在注册表的卸载键中输入安装位置。应用程序不填充 ARPINSTALLLOCATION 属性。 (这与添加/删除程序引用的值相同,并存储在卸载键中)。但是卸载仍然会找到它所在的位置并可以将其卸载。这些信息存储在哪里? Windows 使用缓存的 MSI 安装程序来卸载应用程序,但安装位置是在安装时首次确定的,因此此信息不是安装程序包的一部分。
最佳答案
我假设当您说“安装位置”时,您的意思是“应用程序的 EXE 位于哪个目录?”否则,这个问题是模棱两可的,因为 MSI 不一定要安装“应用程序”。它可以安装没有 EXE 的组件。并且它可以跨多个目录安装...
但这可能会起作用:
调用MsiGetProductInfo获取 ARPINSTALLLOCATION。您将需要知道安装时的“产品名称”。作为第一个参数。调用MsiEnumProducts如果需要,枚举所有已安装的“产品”
关于windows - 如何以编程方式在 Windows 中查找已安装应用程序的安装位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849207/