Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Windows installer 为什么Installshield msp的大小很大_Windows Installer_Installshield_Patch_Msp - Fatal编程技术网

Windows installer 为什么Installshield msp的大小很大

Windows installer 为什么Installshield msp的大小很大,windows-installer,installshield,patch,msp,Windows Installer,Installshield,Patch,Msp,我有两个大小约为17MB的MSI,这两个MSI之间的差异很小。当我通过补丁设计生成补丁时,输出msp大约为15MB,这是不正确的,因为不存在这样的差异。这是什么原因?我如何验证我只修补了这两个MSI之间的差异? 请注意,所有文件都是通过动态链接选项添加到msi的。 我已经在msi Diff tool中打开了这两个msi,我注意到每个文件都有一个“已删除”和“已添加”的状态,我认为这是在比较组件名称,而不是实际的文件。因为所有的msi文件都是通过“动态链接”选项抓取的。在构建补丁时是否使用补丁优化

我有两个大小约为17MB的MSI,这两个MSI之间的差异很小。当我通过补丁设计生成补丁时,输出msp大约为15MB,这是不正确的,因为不存在这样的差异。这是什么原因?我如何验证我只修补了这两个MSI之间的差异? 请注意,所有文件都是通过动态链接选项添加到msi的。
我已经在msi Diff tool中打开了这两个msi,我注意到每个文件都有一个“已删除”和“已添加”的状态,我认为这是在比较组件名称,而不是实际的文件。因为所有的msi文件都是通过“动态链接”选项抓取的。

在构建补丁时是否使用补丁优化? 这对你的情况应该有帮助

请看以下文档:

此外,在构建修补程序时,还可以选择包含整个文件或不同的文件。确保你使用了这个选项

希望这有帮助

问候,,
Kiran Hegde

我的答案是,由于为每个新msi生成的动态根文件夹,msp将其视为一个新文件。 因此,如果在旧的msi中有一个像C:\1\abc.txt这样的文件路径,而在新的msi中,它变成了C:\2\abc.txt,msp将abc.txt作为一个区别,虽然它没有改变,但看起来它比较的是完整路径,而不仅仅是文件名(我在msi中使用组件处理文件)。
解决方案是将根路径设置为静态。

我的调查显示,在生成文件的构建服务器上,每晚都会创建一个不同名称的新文件夹,msi文件链接到这些路径(虚拟和静态),因此,创建每个新路径时,都会将其视为新组件,并删除旧组件。是否有一种解决方案来比较文件名不是路径的文件?例如,如果昨晚路径是C:\Build1.0.1\file.txt,并且生成了msi,那么下一个晚上新msi的路径将是C:\Build1.0.2\file.txt。修补程序将上一个视为已删除的组件,将新的视为新组件,而不管File.txt仍然是相同的,不应修补。如何解决这个问题?