Windows Installer Automation和Installshield Basic MSI:链式MSI期间的神秘字符串

时间:2014-08-15 21:08:01

标签: hash windows-installer installshield

编辑:原来这个神秘字符串是一个简单的MD5哈希文件名(包括扩展名和大小写)。

我正在尝试通过InstallShield自动创建链式MSI的过程。在GUI中,这涉及到Releases,添加链式包,链接到MSI并将文件流式传输到项目中。

我通过将项目文件分析为XML来逆向设计幕后发生的事情。它基本上只归结为表格编辑。我了解您可以使用Windows Installer Automation打开*.ism文件并访问数据库表(LINK)。

然而,ISChainPackageData表中只有一个字段,我似乎无法生成或弄清楚它是如何计算的。这是标题为File的专栏。它是一个32字符的十六进制字符串,后面是下划线。我发现确定此字段的唯一属性是要流式传输的MSI文件的名称。例如:

Test.msi的名称链接到已链接的MSI,产生_29B31F67F21C9EE77CBF8C4C5D24ACE9

更改名称会改变这一点。更改文件,包括用同名的空文件替换它,不会。

我相信这是名字的某种简单哈希,但我没有运气猜测它。

有没有人对他们在这里使用的内容有任何见解?

谢谢!

1 个答案:

答案 0 :(得分:1)

关闭。它是一些基于哈希的GUID,是几件事的组合。我必须跋涉代码才能找到确切的内容,但它至少是相对路径和文件名,并且可能与相关软件包有关(可能是其主键值)。

这用于为包含的每个文件生成唯一键,而不允许重复文件。 (Windows Installer不喜欢其主键中的反斜杠。)这里的实际值没有意义;如果您小心避免重复键并且不重叠文件路径和名称组合,则可以输入您喜欢的任何有效键值。但是,这可能会阻止IDE自身检测重复项。