如何在Wix中发送SHChangeNotify

时间:2013-09-18 03:16:12

标签: wix

在我的Wix项目中,我需要将外部应用程序设置为新文件类型的默认程序,因此我在注册表项中添加了一些文件关联(我知道很奇怪,但我正在开发一个插件而且我不知道找到一种处理外部程序的本地方式)。   MSDN说如果我们改变文件关联,我们应该调用SHChangeNotify。如果不是,则在系统重新启动之前,新关联将不起作用。这是我的问题,我怎么能在Wix中做到这一点?我找到一个实现此功能的tool,但我需要的是Wix Installer中的硬代码。

[解决方案]首先,我以@ BdN3504显示的方式添加ProgId元素。然后我使用自定义操作发送SHChangeNotify。干杯〜

1 个答案:

答案 0 :(得分:0)

您是否看过这个answer

您必须先在FileSearch中找到目标应用程序,然后在Extension元素中引用它。

<Property Id="TARGETEXE">
    <DirectorySearch Path="C:\Program Files (x86)\App"
        Depth="0"
        AssignToProperty="no"
        Id="NppSearch">
            <FileSearch Name="Target.exe"
                Id="targetExeFileSearch" />
    </DirectorySearch>
</Property>
<ProgId Id='Fileassoc.assoc' Description='File extension description'>
  <Extension Id='assoc' ContentType='application/assoc'>
    <Verb Id='open' Command='Open' TargetProperty='TARGETEXE' Argument='"%1"' />
  </Extension>
</ProgId>

请参阅

的文档