Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在WiX中的单独组件中注册文件关联_Windows_Wix_Windows Installer_Installation - Fatal编程技术网

Windows 如何在WiX中的单独组件中注册文件关联

Windows 如何在WiX中的单独组件中注册文件关联,windows,wix,windows-installer,installation,Windows,Wix,Windows Installer,Installation,我正在尝试创建一个单独的功能,用于在WiX安装程序中注册文件关联: <Feature Id="AssociationFeature" Title="File Association" Description="Register file association"> <ComponentRef Id="AssociationComponent" /> </Feature> 但是,负责注册文件关联和安装可执行文件本身的部分位于不同的组件中: <!-

我正在尝试创建一个单独的功能,用于在WiX安装程序中注册文件关联:

<Feature Id="AssociationFeature" Title="File Association" Description="Register file association">
  <ComponentRef Id="AssociationComponent" />
</Feature>

但是,负责注册文件关联和安装可执行文件本身的部分位于不同的组件中:

<!-- Component containing application executable -->
<Component Id="ExeComponent" Guid="F183BFA1-A7AB-45E4-1FB7-0A680826C58E">
   <File Name="my-application.exe" Id="Executable" />
</Component>

<!-- Component registering the file extension association -->
<Component Id="AssociationComponent" Guid="1575A831-5FE0-4720-9646-535C88CDE46B">
  <RegistryValue Root="HKLM" Key="SOFTWARE\Classes\my-application.abc" Name="FriendlyTypeName" Value="My Application" Type="string" />
  <ProgId Id="my-application.abc">
    <Extension Id="abc">
       <Verb Id="Open" TargetFile="Executable" /> <!-- This gives the error -->
    </Extension>
  </ProgId>
</Component>

这会导致以下错误:

错误LGHT0204:ICE69:组件引用不匹配。注册表表的条目“…”属于组件“
AssociationComponent
”。但是,“
Value
”列中的格式化字符串引用了属于组件“
ExeComponent
”的文件“
可执行文件”。组件属于不同的特征


有没有办法在不同于可执行文件的单独组件中注册文件关联?

处理此问题的一般方法是使用两个组件。两者都包含文件,但只有一个组件包含快捷方式。在安装时,只需选择适当的组件。只要组件(或特性)上的条件确保不会安装这两个组件,这就行了

也许可以解释一下你想用这个解决什么问题。为什么是一个单独的组件?@PhilDW正如我在文章开头所写的,我想将其作为单独的功能,以便用户可以选中/取消选中。尝试使用
TargetProperty
而不是
TargetFile
。将属性设置为可执行文件的绝对路径。解释为什么不能引用另一个组件。@johndoe:但是分离功能并不意味着分离组件。这就是问题所在。不清楚为什么不能有一个包含快捷方式+组件的功能,而另一个功能只能包含该组件。@PhilDW必须安装可执行组件,它不是
功能。但是用户可以选择一个
功能
-来注册与此可执行文件的文件关联或不注册。我是Wix新手,但如果我理解正确,这将导致我们有两个独立的组件。