我打算在MSI文件中替换DLL文件。有没有办法在不影响MSI安装的情况下执行此操作
答案 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并安装它以获得所有原始安装目标。
使用当前的MSI将所有安装目标复制到工作目录。
打开InstEdit并打开MSI(或者只是将MSI拖放到InstEdit界面)
打开“表格”标签(见图)
点击媒体项目,您会在右侧看到一些信息
右键单击右侧窗口,然后选择“重建选定的CAB”。
如果替换了找到MSI所有项目的目录中的旧项目,那么当您单击“重建所选CAB”时,它将自动导入该项目的较新版本并重建您的CAB。
错误是神秘的,但如果你仔细阅读它们,你就可以弄明白它确实有效。我用新版本替换了MSI中的EXE。
修改强>
已经差不多1年了,我回来提醒自己InstEd工具是如何工作的。但是,我也偶然发现了您可能遇到的错误,因此我想添加其他信息。
当您尝试[重建选定的CAB]时,您可能会收到如下错误:
这有点神秘错误。 InstEd试图告诉您需要在尝试重建CAB的位置创建的CommonFilesFolder。然后将Main.exe放在该文件夹中。它也在同一个文件夹中寻找Main.ico。
您需要做的就是将目标.exe和.ico(或任何提到的文件)复制到CommonFilesFolder并再次运行重建,它将起作用。
答案 2 :(得分:0)
从http://apps.instedit.com/尝试InstEdit,但我不确定是否可以替换msi包中的文件。您还可以查看Windows SDK附带的Microsoft Orca msi编辑器。