Использование файлов WXI в проекте Visual Studio WiX

StackOverflow https://stackoverflow.com/questions/803965

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Продукт.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>

Компоненты.wxi

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

Как мне заставить его построить в Visual Studio?Написание сценария сборки кажется проще, но это пока не моя проблема.

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top