2011-01-31 51 views
2

这里就是我希望做的:找到预安装的应用程序的MSI安装包?

我想执行应用程序安装在远程机器上;作为该过程的一部分,在我安装新版本之前,我想检查该机器的注册表是否为同一应用程序的预先存在的版本

如果该机器已经安装了应用程序的现有实例,我想找到用于安装它的MSI,所以我可以备份MSI并在必要时执行“回滚”。据我所知,Windows创建了这些MSI的副本,并将它们放置在某个临时文件夹中,并带有随机名称,以便它可以将其用于卸载。

我该如何找到这个位置? (另外,有关如何检查跨网络注册表值的建议将不胜感激。)

回答

3

据我所知,您不必找到确切的MSI软件包。为了卸载产品,知道其产品代码并运行msiexec /x {PRODUCT-CODE-GUID-HERE}就足够了。产品代码可以在卸载注册表项下找到(通常为SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)。

+1

是的:这基本上是我搜索后发现的。我想在“C:\ Windows \ Installer \ .msi”中找到操作系统缓存的MSI,我可以在“SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-1-5-18” \ Products \ \ InstallProperties“中的LocalPackage值。 (在我的Windows Vista机器上可以找到。) – Dave

+1

@Dave是的,而且您提供的注册表路径中的是冗长的产品代码GUID。以防万一有人试图自动从产品代码中获取缓存的MSI的过程。以下链接提供了有关通用GUID的信息:http://www.symantec.com/connect/blogs/guid-converter – ksun