2013-02-24 5 views
1

У меня есть установщик на основе 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, а затем я получаю один для А.

ответ

0

Fixed его, поместив оба файла в одном компоненте:

<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 являются полным болотом.