【问题标题】:InstallShield msp package is in big sizeInstallShield msp 包很大
【发布时间】:2015-05-14 12:11:32
【问题描述】:

我正在使用补丁设计从两个 msi 文件(新旧文件)中生成一个 msp,但我的问题是我生成的 msp 几乎是 msi 大小的 3/4。 有什么理由吗?通常msp应该只包含差异,但是当我安装补丁时,我可以看到它携带了msi的所有文件。

提前致谢。

【问题讨论】:

    标签: windows-installer installshield msp


    【解决方案1】:

    从 Windows Installer 视图来看,我认为 InstallShield 在这方面支持...

    补丁构建中应该有一个“包含整个文件”选项。如果你正在使用它,那么是的,如果有很多文件被修补,补丁会很大。另一种方式是每个二进制文件之间的增量,并且可能更小。我怀疑您可能包含整个文件。

    你怎么能“看到补丁携带了所有的文件”?我不明白你在说什么。如果在第一个 MSI 和最新的 MSI 之间有 100 个文件发生了变化,那么无论补丁是否包含整个文件,都会有 100 个文件需要修补。

    如果您要重建每个文件,但实际上只有少数文件需要在补丁中,那么在某个地方有一个选项 - 在生成补丁时忽略丢失的文件。问题是即使代码和版本没有改变,重建也会改变内部日期和二进制文件的其他部分。这就是为什么忽略丢失的文件是一种选择。确保补丁生成仅使用您希望在用于补丁生成的管理映像中为其打补丁的文件。补丁生成过程需要两个 MSI aetups 的管理映像,基本上是 MSI 文件和提取到某个位置的所有文件。如果您设置了忽略丢失的文件选项,则可以从新的管理映像中手动删除您不想修补的文件。在补丁生成中使用的 PCP 文件中,其 IgnoreMissingSrcFiles 如下: https://msdn.microsoft.com/en-us/library/aa372066(v=vs.85).aspx

    【讨论】:

    • 感谢您的回复。包含整个文件选项设置为否。我知道它通过安装msi携带所有文件然后删除所有安装的文件然后安装补丁,如果比较前后文件的数量相同。仅允许包含所需文件的选项在哪里,我已启用忽略丢失的文件。是的,我们的构建服务器更改了修改的数据和二进制文件内容(混淆)并且文件版本仍然相同。没明白这点“确保补丁生成只使用你要补丁的文件”怎么弄?
    • 我无法手动删除文件,因为它是在服务器上运行的自动化进程,使用 perl 脚本解压缩 msi 并通过 msiexec 命令生成 msp。我也很难验证应该修补什么,什么不应该由 IS 完成。但是我同意每次构建都会更改二进制文件,因为我们对每个构建都应用了混淆过程,但问题是有一些 xml 或 txt 文件仍然是相同的内容和修改日期正在修补,你认为测试我以上对msp文件的验证是否正确?
    • 更新:我在 msi Diff 工具中打开了两个 msis,我注意到每个文件都有已删除和已添加的状态,我认为它以某种方式比较组件名称而不是实际文件.因为所有的msi文件都是通过“动态链接”选项抓取的,你对此有什么解释吗?
    • 我的调查表明,在我们生成文件的构建服务器上,每晚都会创建一个具有不同名称的新文件夹,并且 msi 文件链接到这些文件(路径 virtual 和 static ) ,因此,每创建一个新路径,它都被视为一个新组件,旧的将被删除。有没有办法将文件与文件名而不是路径进行比较?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多