我计划替换MSI文件中的DLL文件。有没有办法做到这一点,而不影响MSI安装从MSI替换文件
从MSI替换文件
回答
尝试从http://apps.instedit.com/ InstEdit,但我不知道是否有可能替换MSI包内的文件。你也可以看看Windows SDK附带的Microsoft Orca msi编辑器。
首先,您可能想要查看除直接修改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接口)
打开表选项卡(见图片)
点击媒体项目,你会看到一些右侧信息
右键单击右侧窗口并选择重建所选CAB。
如果替换在所有项目的MSI被发现目录中的旧项目,那么当你单击重建选定的CAB它会自动导入该项目的新版本,并重建CAB。
错误是神秘的,但如果你仔细阅读它们,你可以弄清楚它是否工作。我用新建的版本替换了MSI中的EXE。
编辑
这是近1年,我回来提醒自己的insted的工具是如何工作的。但是,我也偶然发现了一个可能遇到的错误,所以我想添加其他信息。
当您试图[重建选定的社区顾问]你可能会得到它看起来像下面的错误:
这有点的神秘的错误。 InstEd试图告诉你,你需要在试图重建CAB的位置创建CommonFilesFolder。然后将Main.exe放在该文件夹中。它也在同一个文件夹中查找Main.ico。
您只需将目标.exe和.ico(或任何提及的文件)复制到CommonFilesFolder中,然后再次运行重建,它就会起作用。
- 1. 如何在MSI升级时强制进行文件替换
- 2. 从msi文件中访问msi文件名
- 3. 替换文件
- 4. AppleScript替换文件
- 5. 从文件读取变量并替换
- 6. 2009年的InstallShield MSI基础:文件未更换后新设置升级(1个文件替换)
- 7. 如何从另一个MSI调用MSI文件?
- 8. 从CreateProcess调用c中的msi文件
- 9. 从命令行添加文件到MSI?
- 10. 从.exe文件创建安装(.msi)
- 11. 如何从CAB文件创建MSI?
- 12. msi文件大小
- 13. 推出MSI文件
- 14. 从文本文件中的目录替换文件名
- 15. 查找和从值文件替换主文件
- 16. 将文件从URL替换到原始文件夹
- 17. 替换emacs处的文件
- 18. 替换一个大文件
- 19. Flask文件名替换
- 20. fstream的替换文件
- 21. 文件替换确认
- 22. 替换logback.xml文件目录
- 23. 替换文件中的行
- 24. C#文件内容替换
- 25. 替换/与文件内容
- 26. Maven - 用jar替换文件
- 27. TFS检入替换文件
- 28. 文件java替换字符
- 29. web.config文件部分替换
- 30. 击:替换文件名
因为InstEd接口非常直观,所以我在几周前写了上面的答案并忘记了它。今天我必须编辑另一个MSI(我们现在拥有许可版本),然后我回到这里来记住如何使用该软件。 ;) – raddevus 2016-07-26 15:03:56