【问题标题】:Writing Data to MSI Database将数据写入 MSI 数据库
【发布时间】:2013-01-28 12:38:55
【问题描述】:

我需要能够更新二进制表,我这样做:

View v = session.Database.OpenView("SELECT `Data` FROM `Binary` WHERE `Name` = '{0}'", binaryKeyName);

            v.Execute();

            var IsReadOnly = session.Database.IsReadOnly;

            Record r = v.Fetch();

            StreamReader reader = new StreamReader(r.GetStream("Data"));
            string text = reader.ReadToEnd();
            text = text.Replace(@"Test12345", "TTTest");

            byte[] byteArray = Encoding.ASCII.GetBytes(text);
            MemoryStream stream = new MemoryStream(byteArray);

一旦我有了流,我想更新数据库表。我该怎么做?

谢谢

【问题讨论】:

    标签: wix windows-installer wix3.5 wix3.6 wixlib


    【解决方案1】:

    WiX 附带的dtf.chm 文档包含以下有关如何更新二进制表的示例:

    Database db = null;
    View view = null;
    Record rec = null;
    try
    {
        db = new Database("product.msi", DatabaseOpenMode.Direct);
        view = db.OpenView("UPDATE `Binary` SET `Data` = ? WHERE `Name` = '{0}'", binName))
        rec = new Record(1);
        rec.SetStream(1, binFile);
        view.Execute(rec);
        db.Commit();
    }
    finally
    {
        if (rec != null) rec.Close();
        if (view != null) view.Close();
        if (db != null) db.Close();
    }
    

    【讨论】:

    • 您有该文档的链接吗?在我的情况下,“binFile”中有什么?谢谢
    • 据我所知,它不在线。它位于与 WiX 工具集一起安装的 DTF.chm 文件中。请参阅“部署工具基础开发指南”>>“使用 MSI 数据库”一文
    • 我在这一行打开数据库时出错:db = new Database(@"c:\Temp\WixSqlDeployment\Setup\bin\Debug\Setup.msi", DatabaseOpenMode.Direct);
    • 系统无法打开指定的设备或文件。数据库="c:\Temp\WixSqlDeployment\Setup\bin\Debug\Setup.msi"
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多