Wix:为单个文件类型创建多个关联

时间:2013-02-24 03:24:03

标签: installer wix file-association

我有一个基于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的ProgId,那么我得到A的那个。

1 个答案:

答案 0 :(得分: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安装程序都是混乱的。