Как извлечь и запустить файл во время установки

Я создал Custom Action (DTF) с C#.
В этом CA я хотел бы извлечь файл из msi (объявлен как двоичный в wix) и запустить его с некоторыми аргументами.
Я не нашел образцов или помощи по этому поводу..
Я должен выполнить запрос на MSI, но я хотел бы получить образец. Спасибо!

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 можно взять из этого ответа вездесущего Джона Скита. Обратите внимание, что если вы должны сделать это из CA, вы будете ссылаться на объект базы данных, как session.Databaseвместо того, чтобы создавать это.

Другие вопросы по тегам