2010-12-09 218 views
1

我计划替换MSI文件中的DLL文件。有没有办法做到这一点,而不影响MSI安装从MSI替换文件

回答

0

尝试从http://apps.instedit.com/ InstEdit,但我不知道是否有可能替换MSI包内的文件。你也可以看看Windows SDK附带的Microsoft Orca msi编辑器。

2

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

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

1

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

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

  2. 开放InstEdit并打开MSI(或只是拖/放MSI到InstEdit接口)

  3. 打开表选项卡(见图片)

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

  5. 右键单击右侧窗口并选择重建所选CAB。

如果替换在所有项目的MSI被发现目录中的旧项目,那么当你单击重建选定的CAB它会自动导入该项目的新版本,并重建CAB。

错误是神秘的,但如果你仔细阅读它们,你可以弄清楚它是否工作。我用新建的版本替换了MSI中的EXE。

InstEdit Media Rebuild

编辑

这是近1年,我回来提醒自己的insted的工具是如何工作的。但是,我也偶然发现了一个可能遇到的错误,所以我想添加其他信息。

当您试图[重建选定的社区顾问]你可能会得到它看起来像下面的错误:

add folders

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

您只需将目标.exe和.ico(或任何提及的文件)复制到CommonFilesFolder中,然后再次运行重建,它就会起作用。

+0

因为InstEd接口非常直观,所以我在几周前写了上面的答案并忘记了它。今天我必须编辑另一个MSI(我们现在拥有许可版本),然后我回到这里来记住如何使用该软件。 ;) – raddevus 2016-07-26 15:03:56