安装后复制MSI文件的位置?

时间:2010-01-15 13:38:48

标签: .net windows windows-xp windows-installer

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

6 个答案:

答案 0 :(得分:11)

不会进入%windir%\ installer \

虽然我认为文件可能会被重命名。不知道从哪里得到名称映射...

此目录变得非常大,所以我将其移动到外部驱动器。这有时会导致卸载或更新失败并丢失msi错误,但这可以通过放回目录来修复

答案 1 :(得分:6)

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

MSIEXEC /fv setup.msi

答案 2 :(得分: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

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

答案 3 :(得分:4)

我已经在接受的答案中记下了很多评论,所以我想在创建一个包含更多其他详细信息的摘要后我更愿意发布答案:

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

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

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

  2. 在资源管理器中打开C:\Windows\Installer文件夹。将目录视图更改为Details视图。将Subject列添加到视图中。 Whooaa!这个谜团已经解决了。产品名称在Subject

  3. 中可见

    enter image description here

答案 4 :(得分:2)

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

答案 5 :(得分:-1)

可能只是删除了msi。您可以删除安装文件夹并运行msi清理实用程序,然后重新安装程序。