2

我正在做一个 Wix 项目。我需要关联一个新的文件扩展名。就其本身而言,看起来很简单。问题是我想将新扩展名关联为一种可以使用标准 Windows NotePad.exe 打开的文本文件。我的问题/担心是我不想复制我的 XP 版本的记事本并将其安装在最终用户的 System32 中,并覆盖他们应该已经存在的 XP、Vista、Windows7 等记事本。

我应该如何正确引用这个关联。

最终答案归功于@Sunil

Wix 3.5 不喜欢具有系统文件夹和文件名的目标文件......因此,在我的组件/目录中,我创建了一个指向相关文件的文件 ID 条目,然后,与此文件 ID 参考的扩展关联如下...

<File Id="LinkingNotePad" Source="$(env.windir)\Notepad.exe" ></File>

<ProgId Id="MyProgID" Description="Text files for my new extension" Advertise="no" >
   <Extension Id="myExt" ContentType="application/text" Advertise="no" >
      <Verb Command="Open" Id="regMyProgID" TargetFile="LinkingNotePad" Argument="%1" />
   </Extension>
</ProgId>

在上面的示例中,它无法解析目标文件,因为我没有明确告诉它在哪里可以找到它。我不希望它获取我的版本并覆盖用户版本。

谢谢

4

2 回答 2

4

可以使用 WIX 变量“SystemFolder”访问所有系统文件。

SystemFolder 将为您提供默认的 Windows 文件夹路径。所以你会有TargetFile=[SystemFolder]Notepad.exe"

于 2011-08-01T18:01:40.117 回答
0

Windows Installer 不支持已安装产品的文件关联。因此,如果要为现有文件创建文件关联,可以尝试通过注册表项手动创建它:

于 2011-08-01T21:26:53.567 回答