2013-02-24 65 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.如果我注释掉B的进程id,然后我得到了一个A.

回答

0

通过把两个文件在同一组件固定它:

<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安装程序都是完全的恶意软件。