代码之家  ›  专栏  ›  技术社区  ›  Jader Dias

安装后在何处复制MSI文件?

  •  6
  • Jader Dias  · 技术社区  · 14 年前

    我必须替换它,因为一个阻止软件卸载的错误,但如果我使用文件搜索实用程序,Windows找不到msi文件,但我认为msi存储在 Add or Remove Programs 实用程序可以使用它。

    6 回复  |  直到 7 年前
        1
  •  11
  •   Random206    10 年前

    它不进入%windir%\installer吗\

    尽管我认为这些文件可能会被重新命名。不确定从何处获取名称映射…

    这个目录变大了,所以我把它移到一个外部驱动器。这有时会导致卸载或更新失败,并出现丢失的msi错误,但可以通过将目录放回原处来解决此问题。

        2
  •  6
  •   saschabeaumont    14 年前

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

    MSIEXEC /fv setup.msi
    
        3
  •  4
  •   Ed.    14 年前

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

    不难知道哪一个是应用程序的缓存副本。 最快的方法是查找相同大小的缓存文件。当您认为已经找到它时,将指针悬停在Windows资源管理器中的文件名上。工具提示将出现,它将显示包的摘要信息流中的数据。产品名称、作者名称等。一旦找到了正确的文件,您就可以使用像orca这样的工具直接对其进行编辑。

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

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

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

        4
  •  4
  •   RBT    7 年前

    我在接受的答案中写下了很多评论,所以我想在创建了一个总结之后,我会发布一个答案,并提供一些额外的细节:

    InstallShield将*.msi文件的副本创建到 %windir%\installer\. path where%windir%is an environment variable which always points to c:\windows\. 。在创建*.msi文件的副本之前,它使用一些随机命名法对其进行重命名,例如,我可以看到一个名为 65ec5c99.msi in my c:\windows\installer directory.

    现在要计算重命名的msi文件的实际产品名称,有两种方法:

    1. 检查注册表中路径- [hkey_local_machine\software\microsoft\windows\currentversio_ InternalUserID is something of sort S-1-5-18 productguid is a guid like 00058cd18f0bf523da10720773d56715d embedded as a public property inside the msi file itself.您可以通过使用任何工具(如orca)打开msi文件来检查此公共属性。

    2. 打开资源管理器中的文件夹。将目录视图更改为 details view。将 subject column添加到视图中。哇!!谜团解开了。产品名称在 subject column中可见

    监狱:

    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-18 . ProductGUID 是一个GUID 00058CD18F0BF523DA1072073D56715D 作为公共属性嵌入到MSI文件本身中。您可以通过使用任何工具(如orca)打开msi文件来检查此公共属性。

    2. 正常开放 C:\Windows\安装程序 资源管理器中的文件夹。将目录视图更改为 Details 查看。添加 Subject 列到视图。哇!!谜团解开了。产品名称在此处可见 主体

    enter image description here

        5
  •  2
  •   thrax    8 年前

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

        6
  •  -1
  •   Klaus Byskov Pedersen    14 年前

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