【发布时间】:2018-06-25 11:11:14
【问题描述】:
在使用 NSIS 安装应用程序时,我需要(强制)更改特定文件类型(扩展名“.theext”)的文件关联以使用“myapp.exe”打开。
我已经阅读了一些关于如何实现这一点的建议,所以目前这就是我在 NSIS 脚本中的内容:
DeleteRegKey HKCR ".theext"
DeleteRegKey HKLM ".theext"
DeleteRegKey HKCU ".theext"
WriteRegStr HKCR ".theext" "" "theextfile"
WriteRegStr HKCR "theextfile" "" "My App Document"
WriteRegStr HKCR "theextfile\DefaultIcon" "" "$INSTDIR\${EXENAME}.exe,0"
WriteRegStr HKCR "theextfile\shell\open\command" "" '"$INSTDIR\${EXENAME}.exe" "%1"'
WriteRegStr HKCR "theextfile\shell\print\command" "" '"$INSTDIR\${EXENAME}.exe" /p "%1"'
WriteRegStr HKLM "Software\RegisteredApplications" "${EXENAME}" "$INSTDIR\${EXENAME}.exe"
WriteRegStr HKCU "Software\RegisteredApplications" "${EXENAME}" "$INSTDIR\${EXENAME}.exe"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.theext\OpenWithList" "a" "$INSTDIR\${EXENAME}.exe"
为了测试这一点,我使用 WIndows 7 Explorer 将文件 assoc 设置为 GVIM.exe。
由于这样做,每次我运行安装程序时,Windows 7 仍然使用 GVim 双击打开文件,而不是“MyApp.exe”。
但是当我如下检查文件关联时,一切似乎都很好:
ftype | findstr /i theext
给予:
theextfile="C:\Program File (x86)\My App\myapp.exe" "%1"
【问题讨论】:
-
使用 regedit 去打猎。看起来
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.theext\OpenWithList有多个条目 a、b、c、d、e,其中最后一个是 GVim。我会进一步调查。 -
OpenWithList 只是您可以打开的额外项目,它不控制默认值。
标签: nsis file-extension file-association