Использование файлов WXI в проекте Visual Studio WiX - PullRequest
4 голосов
/ 29 апреля 2009

Я сталкивался с несколькими источниками, утверждающими, что нужно разбить установочный файл WiX на отдельные части (переменные, компоненты и т. Д.) С помощью включаемых файлов (.wxi). В этом есть смысл, поэтому я взял узлы из файла .wxs и поместил их в отдельный файл, но при попытке скомпилировать проект в Visual Studio 2008 я получаю сообщение об ошибке для каждого указания это «неразрешенная ссылка на символ« ... »в разделе« Товар: {...} »».

Я пытался использовать тег <? Include "Filename"?> В моем файле Product.wxs, но это, похоже, нарушает проверку схемы. Если это способ включить его, , куда нужно идти?

У меня есть следующие файлы.

Product.wxs

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product ...>
    <Package .../>
    <Media .../>
    <Directory Id="TARGETDIR" Name="SourceDir">
    </Directory>
    <Feature Id="MainProgram" Level="1">
      <ComponentRef Id="ProductComponent" />
      <Feature Id="ContextMenu" Level="2">
        <ComponentRef Id="ContextMenuComponent" />
      </Feature>
    </Feature>
  </Product>
</Wix>

Components.wxi

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Fragment>
    <Component Id="ProductComponent" ...>
      <File .../>
    </Component>
    <Component Id="ContextMenuComponent" ...>
      <RegistryKey .../>
    </Component>
  </Fragment>
</Include>

Как мне заставить его строить в Visual Studio? Сценарии сборки кажутся более простыми, но пока не моей.

Ответы [ 3 ]

11 голосов
/ 30 апреля 2009

Включаемые файлы следует рассматривать как заголовочные файлы, вы действительно хотите использовать их только для объявления общих переменных и т. Д., Которые вам нужно разделить между несколькими .wxs файлами.

Мой проект использует ~ 10 файлов .wxs и один файл .wxi, в котором я определяю код продукта, код обновления и т. Д.

Чтобы лучше понять, о чем я говорю, ознакомьтесь с вопросами SO Рекомендации по Wix и лучшие практики и Включение WiX против фрагментов , как всегда, документация в Wix.chm

4 голосов
/ 30 апреля 2009

Попробуйте использовать расширение WXS, а не WXI. Я сломал свой и использовал WXS в качестве расширения, и это просто сработало. Все файлы WXS в проекте передаются в wix-компилятор с помощью wixproj.

0 голосов
/ 12 февраля 2013

Нашел этот вопрос в поиске моей проблемы, и я решил добавить свое исправление, если кто-то пришел с того места, где я это сделал.

Если вы используете файл wixproj для компиляции из Visual Studio, кажется, что этот тип проекта не поддерживает ссылки на файлы (Добавить существующий элемент ... Добавить как ссылку). Вы получите ссылки в своем проекте, но при компиляции он будет жаловаться на наличие неразрешенных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...