从MSI文件中选择行的问题

时间:2019-11-01 07:01:16

标签: c# database windows-installer

我写了一个配置工具来轻松配置我用Visual Studio安装项目创建的msi安装程序。我已成功编辑InstallExecuteSequence表中的条目。现在,我也想在Control表中进行更改,但是select查询返回0个条目。

using (Database db = new Database(path, DatabaseOpenMode.Transact))
{
    using (var vw = db.OpenView(db.Tables["Control"].SqlSelectString))
    {
        vw.Execute();

        Record record = vw.Fetch();    // <= this always returns null

        while (record != null)
        {
            record = vw.Fetch();

            if (record == null)
                break;

            if (record["Dialog_"].ToString().ToLower().Contains("CustomCheckA") && record["Control"].ToString().ToLower().Contains("Text"))
            {
                tbName.Text = record["Text"].ToString();
            }

            if (record["Dialog_"].ToString().ToLower().Contains("CustomCheckA") && record["Control"].ToString().ToLower().Contains("BodyText"))
            {
                tbDescription.Text = record["Text"].ToString();
            }
        }

        if (String.IsNullOrEmpty(eintrag.IDString))
            MessageBox.Show("This file does not contain the searched keywords");

       vw.Close();
   }

   db.Close();
}

1 个答案:

答案 0 :(得分:0)

我相信您需要添加所需结果的更多信息,但是我在这里看到了一些东西。

 if (record["Dialog_"].ToString().ToLower().Contains("CustomCheckA") 

您正在将其转换为小写,然后检查是否包含该单词,但该单词并非全为小写。因此结果总是错误的。