我正在做一个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>
在上面的示例中,它无法解析目标文件,因为我没有明确告诉它在哪里可以找到它。我不希望它抓取我的版本并覆盖用户的版本。
谢谢
所有系统文件都可以使用WIX变量"SystemFolder"访问。
SystemFolder会给你默认的Windows文件夹路径。也就是TargetFile=[SystemFolder]Notepad.exe"
Windows Installer不支持已安装产品的文件关联。因此,如果要为现有文件创建文件关联,可以尝试通过注册表项手动创建:
- http://msdn.microsoft.com/en-us/library/cc144104 (VS.85) . aspx
- http://phi.lho.free.fr/windows_tips/FileAssociations.en.html