【发布时间】:2017-04-20 20:21:39
【问题描述】:
我打算替换 MSI 文件中的 DLL 文件。有什么方法可以在不影响 MSI 安装的情况下做到这一点
【问题讨论】:
标签: replace windows-installer edit
我打算替换 MSI 文件中的 DLL 文件。有什么方法可以在不影响 MSI 安装的情况下做到这一点
【问题讨论】:
标签: replace windows-installer edit
首先,除了直接修改 MSI 之外,您可能还想查看其他替代方法。这很少是一个好方法,但你可能有你的理由。如需其他选项,请查看MSDN on patches。
但如果您要直接修改它,请查看此blog entry。它解释了如何使用 Orca、InstEdit、MSIdb 和 IExpress 提取 CAB、解压缩 CAB、替换文件、重新压缩并将 CAB 文件附加回 MSI。
【讨论】:
InstEdit (http://www.instedit.com/) 确实有效,但它不是一个直观的工具。您不必拥有加号版本,这是基本的作品。
刚刚使用完毕。这是过程。
1.获取旧的MSI并安装它以获得所有安装的原始目标。
将所有安装目标复制到当前 MSI 的工作目录。
打开 InstEdit 并打开 MSI(或将 MSI 拖放到 InstEdit 界面中)
打开表格选项卡(见图)
点击媒体项,您会在右侧看到一些信息
在右侧窗口中单击鼠标右键并选择 Rebuild Selected CABs。
如果您在找到所有 MSI 项目的目录中替换旧项目,那么当您单击重建选定的 CAB 时,它将自动导入该项目的较新版本并重建您的 CAB。
错误是神秘的,但如果你仔细阅读它们,你可以弄明白它确实有效。我用新构建的版本替换了 MSI 中的 EXE。
编辑
已经快 1 年了,我回来提醒自己 InstEd 工具的工作原理。但是,我还偶然发现了一个您也可能遇到的错误,因此我想添加其他信息。
当您尝试 [重建选定的 CAB] 时,您可能会收到如下所示的错误:
这是一个有点神秘的错误。 InstEd 试图告诉您,您需要在您尝试重建 CAB 的位置创建的 CommonFilesFolder。然后将 Main.exe 放在该文件夹中。它还在同一个文件夹中寻找 Main.ico。
您需要做的就是将目标 .exe 和 .ico(或任何提到的文件)复制到 CommonFilesFolder 并再次运行重建,它就会工作。
【讨论】:
从http://apps.instedit.com/ 尝试 InstEdit,但我不确定是否可以替换 msi 包中的文件。您也可以看看 Windows SDK 附带的 Microsoft Orca msi 编辑器。
【讨论】: