【问题标题】:Reading the Directory table of an MSI with a custom action使用自定义操作读取 MSI 的目录表
【发布时间】:2015-03-30 11:25:18
【问题描述】:

我有一个托管代码自定义操作,它使用以下代码读取自定义表。

var Configfolder = session.Database.OpenView(session.Database.Tables["ProtectedConfigFolders"].SqlSelectString);

当我尝试以相同的方式读取目录表时,这仍然有效

var dirview = session.Database.OpenView(session.Database.Tables["Directory"].SqlSelectString);

我明白了

类型异常 'Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException' 发生在 Microsoft.Deployment.WindowsInstaller.dll 中。

【问题讨论】:

    标签: wix windows-installer wix3.8 dtf


    【解决方案1】:

    如果您的自定义操作是在 CostFinalize 之后执行的,您可以通过将它们视为 MSI 属性来引用目录表值(即获取目录的方式与在自定义操作中获取“ProductVersion”或“ProductName”的方式相同)。

    【讨论】:

    • 我最终这样做了,因为我必须完成产品。但我真的很想读表来获取父目录,我只使用了 Directory.GetParent 方法,但奇怪的是我无法读取该表,并想知道这是否是 DTF 中的一个错误,因为我也可以以相同的方式读取文件表和组件表,没有问题。但是,我找不到其他有关此问题的参考。我会等待,如果明天之前没有人提出答案,我会标记你的答案。虽然它没有回答我的问题,但我使用的解决方案在技术上是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多