【问题标题】:How to extract and run a file during installation如何在安装过程中提取和运行文件
【发布时间】:2011-11-07 08:19:32
【问题描述】:

我使用 C# 创建了一个自定义操作 (DTF)。
在那个 CA 中,我想从 msi 中提取一个文件(在 wix 中声明为二进制文件)并使用一些参数运行它。
我还没有找到任何样本或帮助..
我必须在 msi 上执行一个请求,但我想要一个样本。谢谢!

【问题讨论】:

    标签: wix wix3.5 dtf


    【解决方案1】:

    DTF.chm 有一个如何更新二进制表的示例。它在“使用 MSI 数据库”主题中。你可以猜出如何做相反的操作。代码可能如下所示:

      using (var db = new Database("test.msi", DatabaseOpenMode.Direct))
      {
        using (var view = db.OpenView("SELECT `Data` FROM `Binary` WHERE `Name` = '{0}'", "testbinary"))
        {
          view.Execute();
          var rec = view.Fetch();
    
          var inStream = rec.GetStream("Data");
          if (inStream != null)
          {
            using (var file = File.OpenWrite("S:\\testfile.zip"))
            {
              CopyStream(inStream, file);
            }
          }
        }
      }
    

    CopyStream 方法的代码可以取自this answer of omnipresent Jon Skeet。请注意,如果您应该从 CA 执行此操作,您将引用像 session.Database 这样的数据库对象,而不是创建它。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 2018-11-19
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多