1

相关:从 DTF 访问 InstallShield“支持文件”(托管自定义操作)

我需要阅读属性SUPPORTDIR。根据这个论坛(http://community.flexerasoftware.com/showthread.php?t=180742&page=3),我需要使用 MsiGetProperty。

如何从 DTF 调用 MsiGetProperty?

4

2 回答 2

2

DTF的Session类有方法:

公共字符串 this[字符串属性] 获取:设置:

这被远程转移到非托管 C++ 端,在那里它们调用 MsiGetProperty 和 MsiSetProperty。它有点像 VBScript Session.Property("SUPPORTDIR") 只是更简单。

InstallShield 应该安排了一个名为 ISSetupFilesExtract 的自定义操作。记录您的安装并查看它是否正在执行并将路径分配给属性。

我能想到的唯一其他问题是,如果您正在做一个正确的 UAC 故事,即不提升您的 UI,然后提升您的执行序列,请确保 SUPPORTDIR 列在 SecureCustomProperties 属性中。只有在 UI 序列中获得值的“安全”属性才会被传递到执行序列。“PUBLIC”属性将默认恢复为安装程序开始执行时的状态。

我可以告诉您,我在 DTF 自定义操作中使用了 SUPPORTDIR(有时直接,有时通过 CustomActionData 序列化),我对此没有任何问题。

于 2011-01-13T13:51:35.320 回答
0

要将我的评论中的信息复制并扩展为从 DTF(托管自定义操作)访问 InstallShield“支持文件”

Session 类的对象被传递给 DTF 中的自定义操作。使用 session["SUPPORTDIR"] 访问属性值(立即采取行动)。对于延迟操作,您必须通过 CustomActionData 传递它。此外,对于直接 CA,请确保您在 CostFinalize 之后安排了读取 SUPPORTDIR 的操作 - 目录表中的所有条目都可以作为属性访问的时间点。

于 2011-01-13T10:05:26.067 回答