Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java或VBScript在两个MSI文件之间创建差异的最佳方法?_Java_Vbscript_Windows Installer - Fatal编程技术网

用Java或VBScript在两个MSI文件之间创建差异的最佳方法?

用Java或VBScript在两个MSI文件之间创建差异的最佳方法?,java,vbscript,windows-installer,Java,Vbscript,Windows Installer,我正在寻找关于包/导入的任何建议,这些包/导入可用于解析两个MSI文件并对它们进行区分(不是逐行,而是逐文件{添加的文件、修改的文件、删除的文件}) 我看过并研究过WiX,使用Java的JdbcOdbc解析它(不起作用), 并尝试使用Wise Package Studio进行适当的差异化,创建了一个补丁的PCP文件,从version50.msi转到version56.msi(不知道如何处理它) 非常感谢您的任何想法/建议。我不知道有任何现有的工具可以做到这一点,但您可能可以将WiDiffDb.v

我正在寻找关于包/导入的任何建议,这些包/导入可用于解析两个MSI文件并对它们进行区分(不是逐行,而是逐文件{添加的文件、修改的文件、删除的文件})

我看过并研究过WiX,使用Java的JdbcOdbc解析它(不起作用), 并尝试使用Wise Package Studio进行适当的差异化,创建了一个补丁的PCP文件,从version50.msi转到version56.msi(不知道如何处理它)


非常感谢您的任何想法/建议。

我不知道有任何现有的工具可以做到这一点,但您可能可以将WiDiffDb.vbs和WiFilVer.vbs结合在一起,这两个工具都在这里:

准确地说出你想要实现的目标可能会有所帮助。例如,如果两个MSI文件的组件ID不同或安装到不同的位置,则两个MSI文件之间的文件相同(或不相同)这一事实并不总是有用的。这种比较似乎是您正在寻找的解决方案,但我们在这里猜测的是根本问题

管理安装:正如菲尔所说,我们想知道你真正想要实现什么?如果您只想找出两个设置中哪些文件是不同的,那么我会为每个MSI使用一个(基本上为MSI使用一个文件提取),然后使用文件/文件夹比较软件检查哪些文件是不同的。我最喜欢的工具是(无关联),但任何文件/文件夹比较工具都可以

从cmd.exe运行管理安装

选项1,交互方式:
msiexec.exe/a File.msi

选项2,静默:
msiexec.exe/a File.msi TARGETDIR=C:\MyInstallPoint/qn

Dark.exe:您也可以使用WiX的恰当名称
Dark.exe
,将MSI反编译为其组成部分以及重新编译所需的相关WiX标记(需要一些黑色艺术来清理)

要从MSI中提取内容,可以尝试以下命令行:

dark.exe Setup.msi-x文件


虽然可能是扁平的(没有文件夹结构),但您应该能够使用上述方法比较从设置中提取的文件。

我的目标是完成程序的“轻安装”。例如,一个客户端有一个程序版本1.0,我想给他发送版本1.5,但由于wifi速度慢,他需要2个小时才能下载这个40GB的MSI文件,所以我想创建一个MSI,只显示两者之间的差异,这样下载时间就会少一些。这是你自己的MSI吗?您可以在旧版本和新版本之间创建修补程序,但它们很少在没有意外情况下工作,除非由供应商创建为修补程序。是的,软件是我们自己的。您使用什么工具来制作MSI文件?贵公司是否有专门的团队来制作这些文件?负责创建MSI文件的员工离开了公司,我认为答案可能是正确编辑MSI文件的版本和产品ID,这样我们可以使用microsoft修补程序从版本a转到版本B。