2013-03-12 3 views
2

Я создал проект WixLib и решение, которое содержит фрагмент, который указывает на набор DLLS, которые я хотел бы включить в несколько проектов.Попытка изменить переменную препроцессора WixLib в ссылочном решении

Однако, когда я ссылаюсь на этот wixlib из других решений, значение препроцессора для каталога, в котором находятся dll, находится с wixlib. Я хотел бы переопределить это значение или обновить его.

Моего Wixlib выглядит следующим образом:

<Fragment> 
    <ComponentGroup Id="CG.FarPointComponents"> 
     <Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR" 
       Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3"> 
     <File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes" 
       Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" /> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

Я хочу, чтобы указать другой каталог для var.FarPointDir в другом решении, что я должен делать? Я использую WIX 3.6

ответ

2

Несколько вариантов:

  1. Создать binary .wixlib - использовать переключатель -bf в lit.exe вставлять файлы в .wixlib. Таким образом, .wixlib полностью автономный, хотя он будет больше.

  2. Использование bind paths - пути связывания подобны путям поиска, но для поиска файлов, которые должны быть в пакете. Если вы сделаете File/@Source родственником (не начинайте с X:\ или просто \), то будут искать искомые пути связывания. Вы указываете пути привязки к light.exe с помощью переключателя командной строки -bp. В качестве альтернативы вы можете использовать названные пути связывания, то они выглядят так:

    <File Source='!(bindpath.Name)\FarPoint.CalcEngine.dll' /> 
    

    Опять переключатель -bp может создавать именованные пути связывания.

  3. Использовать bind variable - вместо использования переменной препроцессора (разрешенной до компиляции) используйте переменную, которая разрешена при «времени связывания». Вы можете ссылаться на переменную связывания как: !(wix.Var). Это можно установить в командной строке до light.exe или вы можете установить его в коде с помощью элемента WixVariable.

Я использую вариант # 1, чтобы распределить .wixlibs других людей (чтобы быть самодостаточным), и вариантом # 2, если это только мои вещи (бинарное .wixlibs замедлит Билд немного).