Wix: создание нескольких ассоциаций для одного типа файла

У меня есть установщик на основе Wix, который устанавливает два исполняемых файла. Я хочу связать свой собственный тип файла с обоими исполняемыми файлами

<Component Id="A.exe" Guid="{GUID}">
    <File Id="A.exe" Name="A.exe" Source="../A.exe" KeyPath="yes" Checksum="yes"/>
    <ProgId Id="cfgfilerun" Description="Config file for A" Advertise="no" >
        <Extension Id="cfg" ContentType="application/text" Advertise="no" >
            <Verb Id="Run" Command="Run" TargetFile="A.exe" Argument='"%1"' />
        </Extension>
    </ProgId>
</Component>

тогда позже

<Component Id="B.exe" Guid="{GUID}">
    <File Id="B.exe" Name="B.exe" Source="../B.exe" KeyPath="yes" Checksum="yes"/>
    <ProgId Id="cfgfileopen" Description="Config file" Advertise="no" >
        <Extension Id="cfg" ContentType="application/text" Advertise="no" >
            <Verb Id="Open" Command="Open" TargetFile="B.exe" Argument='"%1"' />
        </Extension>
    </ProgId>
</Component>

не работает. Как исправить? Поведение состоит в том, что только одно из расширений появляется и работает, то есть для B. Если я закомментирую ProgId B, то получу одно для A.

1 ответ

Исправлено, помещая оба файла в один и тот же компонент:

<Component Id="A.exe" Guid="{GUID}">
    <File Id="A.exe" Name="A.exe" Source="../A.exe" KeyPath="yes" Checksum="yes"/>
    <File Id="B.exe" Name="B.exe" Source="../B.exe" Checksum="yes"/>
    <ProgId Id="cfgfilerun" Description="Config file for A" Advertise="no" >
        <Extension Id="cfg" ContentType="application/text" Advertise="no" >
            <Verb Id="Run" Command="Run" TargetFile="A.exe" Argument='"%1"' />
            <Verb Id="Open" Command="Open" TargetFile="B.exe" Argument='"%1"' />
        </Extension>
    </ProgId>
</Component>

Я посмотрел на вывод отладки из журнала от msiexecто, что он делал раньше с файлом cfg, выглядело неработающим. Я думаю, что это ошибка в Wix, что вам нужно, чтобы все было в одном компоненте. Вообще, я немного разочарован Wix в целом, но опять же я не использовал ни одного из конкурентов. Возможно, все установщики Windows - это просто болячка.

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