安装后MSI文件复制到哪里?

Posted

技术标签:

【中文标题】安装后MSI文件复制到哪里?【英文标题】:Where the MSI file is copied after the installation? 【发布时间】:2011-01-05 12:34:54 【问题描述】:

由于阻止软件卸载的错误,我必须更换它,但如果我使用文件搜索实用程序,Windows 无法找到 MSI 文件,但我认为 MSI 存储在Add or Remove Programs 实用程序可以的位置使用它。

【问题讨论】:

修复卸载问题的推荐/正确方法使用小升级来“修复”已安装的产品,然后触发其固定的卸载顺序 b> 如下所示,由 saschabeaumont 表示。次要升级可以作为常规 MSI 或补丁包(对于大型产品)提供。 Adding this answer as well 供将来参考。 【参考方案1】:

不进入%windir%\installer\

虽然我认为这些文件可能会被重命名。不确定您从哪里获得名称映射...

这个目录变得非常大,所以我将它移动到外部驱动器。这有时会导致卸载或更新因缺少 msi 错误而失败,但这可以通过放回目录来解决

【讨论】:

太棒了!我现在确定文件已重命名,但您可以在 Windows 注册表中找到新名称 啊,很高兴你知道如何获取映射【参考方案2】:

Installshield 在%windir%\installer\ 路径创建*.msi 文件的副本,其中%windir% 是一个通常指向C:\Windows\ 的环境变量。在创建 *.msi 文件的副本之前,它使用一些随机命名法重命名它,例如我可以在我的C:\Windows\Installer 目录中看到一个名为65ec5c99.msi 的文件。

现在要找出重命名的 MSI 文件的实际产品名称,有两种方法:

    检查LocalPackage 路径内注册表中的属性 - [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersio‌​n\Installer\UserData‌​\<InternalUserId>\Pr‌​oducts\<ProductGUID>‌​\InstallProperties]InternalUserId 类似于 S-1-5-18ProductGUID 是一个类似于 00058CD18F0BF523DA1072073D56715D 的 GUID,作为 MSI 文件本身的公共属性嵌入。您可以通过使用任何工具打开 MSI 文件来检查此公共属性,例如逆戟鲸

    在资源管理器中打开 C:\Windows\Installer 文件夹。将目录的视图更改为Details 视图。将Subject 列添加到视图中。现在可以在Subject 列中看到产品名称,如下图所示:

注意C:\Windows\installer\ 目录在资源管理器中不可见,直到我们选中 Show hidden files, folders, and drives 并取消选中查看文件夹选项下的 Hide protected operating system files(Recommended) 高级设置,如下面的屏幕截图所示:

【讨论】:

如果 Windows 设置为德语的任何人试图在资源管理器中显示“主题”列:激活“Betreff”【参考方案3】:

您可以使用 MSIEXEC 强制重新缓存/重新安装,更新无法删除的错误安装包的推荐方法是使用固定包重新缓存,然后照常卸载。

MSIEXEC /fv setup.msi

【讨论】:

【参考方案4】:

当您使用 Windows Installer 服务安装软件包时,msi 文件会 缓存在隐藏文件夹“%windir%\installer”中。它确实被重命名了,新名称是一个十六进制字符串,与原始名称没有明显的相关性。类似于“123ab4.msi”。

不难确定哪一个是您应用的缓存副本。 最快的方法是寻找相同大小的缓存文件。如果您认为已找到它,请将指针悬停在 Windows 资源管理器中的文件名上。工具提示将出现,它会显示来自包的摘要信息流的数据。产品名称、作者姓名等。找到正确的文件后,您可以直接使用 Orca 等工具对其进行编辑。

如果您只是想在自己的机器上修复问题,那么直接编辑缓存的数据库可能是一个不错的选择。但是,Microsoft 确实提供了一种内置方法来处理此类问题。您可以创建一个补丁(一个 msp 文件),其中包含原始 msi 文件和更新后的 msi 文件之间的差异。然后可以将该补丁分发给已使用原始安装安装您的应用的任何其他人,并且它会很容易使用。

MSDN 在这里讨论补丁创建 - http://msdn.microsoft.com/en-us/library/aa368060%28VS.85%29.aspx

删除隐藏文件夹通常不是一个好主意,因为这会破坏安装程序服务的一些核心功能。这包括修补、检测和修复,以及通过迁移而不是卸载和重新安装进行升级的能力。

【讨论】:

【参考方案5】:

要在C:\Windows\Installer 中查看有用的 msi 文件名称,请右键单击资源管理器顶部并添加字段以查看主题(可能必须选择更多,因为它不是默认名称,修改日期等。 ) 从这里您可以找到 msi 并使用它来卸载程序。

【讨论】:

【参考方案6】:

也许 msi 只是被删除了。您可以删除安装文件夹并运行 msi cleanup 实用程序,然后重新安装程序。

【讨论】:

MSIZAP (Windows Installer Cleanup) 是一个非常危险的工具。请参阅robmensching.com/blog/posts/2009/3/6/… 了解更多信息

以上是关于安装后MSI文件复制到哪里?的主要内容,如果未能解决你的问题,请参考以下文章

如何在InstallShield项目中以静默方式安装msi文件

安装VMware提示:安装程序无法复制vmci.sys

模块的实际文件在哪里? [复制]

卸载程序不会将复制的库删除到 VS2010 安装程序项目中的系统文件夹。

已经装了VISual studio 2017, mySQL 安装显示未检测到

WIX:将文件复制到另一个分区中的自定义目录