使用WiX Toolset创建文件关联

时间:2015-12-23 19:51:06

标签: xml wix installer registry file-association

我创建了一个可以打开图像文件的应用程序。现在我使用WiX工具集创建安装程序。在过去的几天里,我遇到了一些误解:尝试注册我的应用并将其与所需的扩展相关联。所有内容都出现在注册表中,但我的文件都没有打开我的应用程序,就像它没有安装一样。

这是我描述可执行文件并为其注册所有扩展的部分:

<Component Id="CmpLightImageViewer.exe" Guid="{...}">
  <File Id="MainExe" Name="LightImageViewer.exe" />
</Component>

<Component Id="CmpLightImageViewerProgId" Guid="{391FBC30-B5A1-4AB7-8FA4-254C1CE2BF69}" KeyPath="yes">
  <ProgId Id="LightImageViewerSvg" Description="Light image viewer">
    <Extension Id="svg">
      <Verb Id="open" TargetFile="MainExe" Argument="&quot;%1&quot;" />
    </Extension>
  </ProgId>
  <ProgId Id="LightImageViewerGif" Description="Light image viewer">
    <Extension Id="gif">
      <Verb Id="open" TargetFile="MainExe" Argument="&quot;%1&quot;" />
    </Extension>
  </ProgId>
...
</Component>

这就是我在注册管理机构HKCR中看到的内容。在HKCU / Software / Classes中也是如此,但在HCLM / Software / Classes中则不一样:

enter image description here

我错过了什么?我还需要做些什么才能让它发挥作用?虽然我可以使用Windows工具手动为每种类型设置文件关联,但这并不是我希望它工作的方式。

我使用wix3.10

在windows10中使用vs2015构建它

1 个答案:

答案 0 :(得分:2)

这是在Vista中启动的一种安全功能 - Windows保护&#34;默认&#34;关联,允许用户选择它们。如果您希望您的程序成为&#34;默认&#34;用于处理现有文件类型,因此覆盖用户设置(据我所知,这正是此功能应该阻止的内容),那么您可以查看一下这个问题的例子:

How to associate application with existing file types using WiX installer?