我试图执行sql脚本而不使用本机installshield功能。我已将sql文件存储在二进制表中(不支持文件,因为它不安全)。在msi文件中,我已经看到任何二进制文件的完整路径被替换为“ {binaryname}“花括号名称。如何在其他自定义操作中使用带花括号的二进制名称?有没有像我们在日常访问中访问公共属性的方法?
我不同意Binary table比ISSetupFile表更安全或更不安全的概念。它们都存储(引用)其记录中的二进制流,并且可以通过变换进行更改。也许你的意思是可以轻松改变已经提取的文件?但是,让我们把它放在一边,专注于你的问题。
花括号是InstallShield在这种情况下用于指示二进制表引用的可视表示法。它不是Windows Installer识别的符号。所以你必须找到一些东西。
如果要在自定义操作期间使用二进制表记录的内容,有两个选项:
如果在C ++ DLL中执行后者,则可能需要的功能至少包括以下内容:
SELECT * FROM `Binary` WHERE `Name`=?
因为你可能知道你的二进制表的记录的名称,你可以硬编码为'namehere'
代替?
并跳过记录。请注意表和列名称周围的反引号,但值周围的撇号。或者,为了更好的安全性,您可以使用问号占位符,并使用MsiCreateRecord和MsiRecordSetString填充记录。
其他语言以不同方式公开相同的底层功能。有关VBScript中的概述,请参阅SDK示例WIStream.vbs,但请注意,您的操作必须作为自定义操作而不是外部脚本运行。