我正在尝试不使用本机installshield功能执行sql脚本。我已将sql文件存储在二进制表中(由于不安全,因此不存储在支持文件中)。在msi文件中,我已经看到任何二进制文件的完整路径是大括号名称替换为“ {binaryname}”。如何在其他自定义操作中使用带有花括号的二进制名称?有什么办法像我们在customactions中访问Public属性吗?
答案 0 :(得分:0)
我不同意Binary table比ISSetupFile表安全得多的观点。它们都在其记录中存储(引用)二进制流,并且可以通过转换进行更改。也许您的意思是可以轻松地更改已提取的文件?但是让我们搁置一旁,专注于您的问题。
花括号是InstallShield在这种情况下使用的一种视觉表示法,用于指示Binary表引用。 Windows Installer无法识别该符号。所以你必须找到一些东西。
如果要在自定义操作期间使用二进制表记录的内容,则有两个选项:
如果您在C ++ DLL中执行后者,则可能需要的功能至少包括以下内容:
SELECT * FROM `Binary` WHERE `Name`=?
由于您大概知道二进制表记录的名称,因此可以将其硬编码为'namehere'
来代替?
并跳过该记录。注意表和列名前后的反引号,但值前后用撇号引起来。或者,为了提高安全性,您可以使用问号占位符,并使用MsiCreateRecord和MsiRecordSetString填充记录。
其他语言以不同的方式公开相同的基础功能。例如,请参见SDK示例WIStream.vbs,以了解VBScript的概述,但请注意,您必须将其作为自定义操作而不是外部脚本来运行。