【问题标题】:Find MSI install package for pre-installed application?查找预安装应用程序的 MSI 安装包?
【发布时间】:2011-01-31 01:54:37
【问题描述】:

这是我想要做的:

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

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

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

【问题讨论】:

    标签: c# installation windows-installer registry


    【解决方案1】:

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

    【讨论】:

    • 是的:这基本上是我搜索后发现的。我想在“C:\Windows\Installer\.msi”找到操作系统缓存的 MSI,我可以在“SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5”找到-18\Products\\InstallProperties" 在 LocalPackage 值中。 (在我的 Windows Vista 机器上找到。)
    • @Dave 是的,您提供的注册表路径中的 是经过修改的产品代码 GUID。以防万一有人试图自动化从产品代码中获取缓存 MSI 的过程。这是一个链接,提供有关什么是 munged GUID 的信息:symantec.com/connect/blogs/guid-converter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多