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

Installation Wix:为单个文件类型创建多个关联,installation,wix,file-association,Installation,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" A

我有一个基于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的扩展名。

将两个文件放在同一个组件中修复了它:

<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中的一个bug,您需要将所有内容都放在同一个组件中。总体来说,我对Wix有点失望,但我也没有使用过任何竞争对手。也许所有的Windows安装程序都是一个烂摊子