c#:Deployment.WindowsInstaller.BadQuerySyntaxException:SQL查询语法无效或不受支持

时间:2018-07-03 03:13:39

标签: c# windows-installer

我的程序很简单。

我想通过这种特定方法实现的目标-

  1. 查找快捷方式总数
  2. 删除与文档相关的快捷方式(即.pdf,.txt,.chm)

我正在使用Microsoft.Deployment.WindowsInstaller来读取MSI文件并创建MST。

在以下代码部分中失败:

count = (int)database.ExecuteScalar("SELECT COUNT(*) FROM Shortcut");
....
database.Execute("DELETE FROM Shortcut WHERE `Shortcut`.`Target` LIKE '%.chm'");
Console.WriteLine("chm deleted");

我得到的错误是:

  

未处理的异常:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException:SQL查询语法无效或不受支持。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

Windows Installer SQL与完整的SQL不同-它是一个子集,某些操作无效。例如,使用Select Count(*)在我的测试中不起作用,因此可能需要遍历它们。同样,可能不支持“喜欢”。

答案 1 :(得分:0)

在线 :正如Phil所言, MSI SQL语法是普通SQL的子集You can find information on the MSI SQL syntax online here


脱机 :您还可以找到 msi.chm 帮助文件(Windows Installer SDK)中描述的MSI SQL Syntax )(随Windows SDKWiX toolsetdownload)一起安装。

只需在磁盘上搜索帮助文件-如果已安装 WiX ,就可以在WiX安装文件夹中找到它。后者可能比搜索SDK文件夹更快,更容易。