从MSI替换文件

时间:2010-12-09 12:12:44

标签: replace windows-installer edit

我打算在MSI文件中替换DLL文件。有没有办法在不影响MSI安装的情况下执行此操作

3 个答案:

答案 0 :(得分:2)

首先,您可能想要查看除直接修改MSI之外的其他选择。这很少是一个好方法,但你可能有自己的理由。有关其他选项,请查看MSDN on patches

但如果您要直接修改它,请查看此blog entry。它解释了如何使用Orca,InstEdit,MSIdb和IExpress来提取CAB,解压缩CAB,替换文件,重新压缩并将CAB文件附加回MSI。

答案 1 :(得分:2)

InstEdit(http://www.instedit.com/)确实有效,但它不是一个直观的工具。您不必拥有加号版本,基本适用于此。 刚刚完成使用它。这是这个过程 1.使用旧的MSI并安装它以获得所有原始安装目标。

  1. 使用当前的MSI将所有安装目标复制到工作目录。

  2. 打开InstEdit并打开MSI(或者只是将MSI拖放到InstEdit界面)

  3. 打开“表格”标签(见图)

  4. 点击媒体项目,您会在右侧看到一些信息

  5. 右键单击右侧窗口,然后选择“重建选定的CAB”。

  6. 如果替换了找到MSI所有项目的目录中的旧项目,那么当您单击“重建所选CAB”时,它将自动导入该项目的较新版本并重建您的CAB。

    错误是神秘的,但如果你仔细阅读它们,你就可以弄明白它确实有效。我用新版本替换了MSI中的EXE。

    InstEdit Media Rebuild

    修改

    已经差不多1年了,我回来提醒自己InstEd工具是如何工作的。但是,我也偶然发现了您可能遇到的错误,因此我想添加其他信息。

    当您尝试[重建选定的CAB]时,您可能会收到如下错误:

    add folders

    这有点神秘错误。 InstEd试图告诉您需要在尝试重建CAB的位置创建的CommonFilesFolder。然后将Main.exe放在该文件夹中。它也在同一个文件夹中寻找Main.ico。

    您需要做的就是将目标.exe和.ico(或任何提到的文件)复制到CommonFilesFolder并再次运行重建,它将起作用。

答案 2 :(得分:0)

http://apps.instedit.com/尝试InstEdit,但我不确定是否可以替换msi包中的文件。您还可以查看Windows SDK附带的Microsoft Orca msi编辑器。