我有一个基于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的那个。
答案 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安装程序都是混乱的。