2013-11-11 3 views
0

У меня есть 2 функции (feature1 и feature2) оба использует Comon componentgroup вроде этого:WiX: Нет ярлык не создан для общего компонента

<Feature1 ... 
<ComponentGroupRef Id="compA"> 
> 

И то же самое:

<Feature2 ... 
<ComponentGroupRef Id="compA"> 
> 

COMPA :

<Component Id="ComponentA"> 
<Shortcut Id="ImportantShortcurt" Advertise="yes" Directory="..." 
     Name="..." LongName="..." Icon="..."/> 
</Component> 

Этот компонент входит в

<ComponentGroup Id="compA"> 
    <ComponentRef Id="ComponentA" /> 
    .... 
</ComponentGroup> 

Пользователь может выбрать вариант Feature1, Feature2, оба из них. Если он хочет установить оба или Feature2 - все в порядке, если только Feature1, но не Feature2 - все в порядке, за исключением того, что нет ярлыка с идентификатором «ImportantShortcut» (файлы установлены, только ярлык отсутствует).

Я использовал msiexec с протоколированием. Все вроде бы хорошо, но

Выполнение оп: ShortcutCreate для моего ярлыка отсутствует

Feature1 в file1.wxi, feature2 в file2.wxi Оба они включены в файл продукта ,

<Fragment ...> 
<?Include file1.wxi> 
<?Include file2.wxi> 
<...> 

Итак, вопрос: где shortcut, если Feature2 отсутствует? Все файлы из ComponentA находятся здесь.

+0

Я могу добавить любую часть лог-файла. Это более 3 М, поэтому я могу прикрепить части, связанные с Feature1, Feature2, ComponentA, ярлыками. – tribunal2000

ответ

0

Это интересно. Моей первой реакцией было бы, вероятно, что Feature2 тянет «ярлык» для себя, даже если функция2 отключена или нет.

Для начала, я бы правильно реализовать ярлык, например, с помощью RemoveFolder & добавления ключа реестра для маркировки как ключевой ресурс, как здесь:

http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html

Смотрите, если это делает его лучше, я не знаком с флагом рекламы, это может повлиять.

Также можно использовать ORCA.EXE и посмотреть, что происходит с таблицами. Вы поймете это намного лучше. Вы можете использовать ORCA.exe для сравнения двух файлов .MSI и посмотреть, какая часть выполняет трюки - тогда мы можем смотреть дальше, если вы не нашли исправления.

+0

Благодарим вас за ответ. Orca показала, что мой ярлык является единственной целью моего Feature2, поэтому результат здесь: no Feature2 - нет ярлыка. Но я не знаю, как это сделать: ярлык должен быть здесь, если установлен feature1 или feature2 (или оба из них). Извините, я новичок в WiX. Мне сложно узнать что-то после C/C++ :) – tribunal2000

+0

Может быть, я должен добавить компонент как независимую функцию? Я все еще изучаю WiX, но я продолжу свои эксперименты. – tribunal2000

+0

Да, это самый простой. У меня сейчас нет кода, но вы можете создать новую функцию, поместить туда ярлык и сделать функцию «ВКЛЮЧЕНА ВСЕГДА». Кстати, вы можете использовать компонентную/функциональную логику, поэтому ваша функция будет установлена ​​только в том случае, если присутствует feature1 или feature2. –

Смежные вопросы