Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Hash Windows Installer Automation和Installshield基本MSI:链接MSI期间的神秘字符串_Hash_Windows Installer_Installshield - Fatal编程技术网

Hash Windows Installer Automation和Installshield基本MSI:链接MSI期间的神秘字符串

Hash Windows Installer Automation和Installshield基本MSI:链接MSI期间的神秘字符串,hash,windows-installer,installshield,Hash,Windows Installer,Installshield,编辑:发现神秘字符串是文件名(包括扩展名和大小写)的简单MD5散列 我正试图通过InstallShield自动化创建链接MSI的过程。在GUI中,这涉及到转到版本,添加链接包,链接到MSI,并将文件流式传输到项目中 通过将项目文件分析为XML,我对幕后发生的事情进行了反向工程。它本质上就是表编辑。我知道您可以使用Windows Installer Automation打开*.ism文件并访问数据库表() 然而,在ISChainPackageData表中有一个字段,我似乎无法生成或弄清楚它是如何计

编辑:发现神秘字符串是文件名(包括扩展名和大小写)的简单MD5散列

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

通过将项目文件分析为XML,我对幕后发生的事情进行了反向工程。它本质上就是表编辑。我知道您可以使用Windows Installer Automation打开
*.ism
文件并访问数据库表()

然而,在ISChainPackageData表中有一个字段,我似乎无法生成或弄清楚它是如何计算的。它是标题为“
文件”
的列。它是一个32字符的十六进制字符串,前面带有下划线。我发现,确定此字段的唯一属性是正在传输的MSI文件的名称。例如:

通过名为
Test.MSI
链接到链式MSI,将产生
\u 29B31F67F21C9EE77CBF8C4C5D24ACE9

更改名称将更改此设置。更改该文件(包括将其替换为同名的空文件)不会导致错误

我相信这是一个简单的名字散列,但我没有任何运气猜到它

有人知道他们在这里可能使用什么吗


谢谢

关闭。它是一个基于哈希的GUID,由一些内容组合而成。我必须在代码中找到确切的内容,但至少是相对路径和文件名,可能还有与所讨论的包相关的内容(可能是它的主键值)


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

很有趣。当你说IDE时,我相信你指的是InsallShield?我希望简单地生成一个常规GUID,并手动确保没有任何重复文件(尽管在这种特定情况下不太可能发生这种情况)。如果我从你说的话中收集到正确的信息,那么假设这不会对结果MSI的行为产生任何不良影响是否合理?(感谢您的详细回复!)正确。如果您打开一个修改过的项目并尝试添加一个重复的文件,它可能会让您知道密钥是否以不同的方式生成。但只要您避免这种情况,我就不会预见运行时会出现问题。如果存在冲突,可能只是哪个文件位于第二位的问题。