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 - это просто болячка.