我有一个可以打开两种类型文件的程序:.animera
和.png
。我希望该程序是的默认设置,.animera
而不是的默认设置.png
。我有这个用于处理.animera
文件:
WriteRegStr HKCR '.animera' '' 'AnimeraSprite'
WriteRegStr HKCR 'AnimeraSprite' '' 'Animera Sprite'
WriteRegStr HKCR 'AnimeraSprite\shell' '' 'open'
WriteRegStr HKCR 'AnimeraSprite\shell\open\command' '' '"$INSTDIR\bin\Animera.exe" open "%1"'
WriteRegStr HKCR 'AnimeraSprite\shell\edit\command' '' '"$INSTDIR\bin\Animera.exe" open "%1"'
WriteRegStr HKCR 'AnimeraSprite\DefaultIcon' '' '$INSTDIR\bin\Animera.exe,1'
似乎有十二种方法可以执行此操作,但是上面的代码片段效果很好。悬停显示文件类型为“ Animera Sprite”,显示图标,然后双击打开程序。.png
除了不希望该程序成为默认png查看器之外,我尝试了类似的操作。我只希望用户可以选择使用该程序。这是我尝试过的:
WriteRegStr HKCR '.png\OpenWithProgids' 'AnimeraPNG' ''
WriteRegStr HKCR 'AnimeraPNG\shell' '' 'open'
WriteRegStr HKCR 'AnimeraPNG\shell\open\command' '' '"$INSTDIR\bin\Animera.exe" open "%1"'
右键单击png文件,然后将鼠标悬停在“打开方式”上,不会在列表中显示该程序。那我该怎么做呢?
看来您已正确完成所有操作,但在某些时候(Windows 8?),Windows开始要求更多信息才能显示应用程序,并且MSDN从未更新。
您至少需要在版本信息或未记录的注册表项中提供公司名称,也许还提供应用程序名称:
RequestExecutionLevel User
Name "Test"
OutFile "AnimeraPNG.exe"
!include "LogicLib.nsh"
!include "FileFunc.nsh"
Function .onInit
${GetParameters} $0
${If} $0 != ""
MessageBox mb_ok "File:$0"
Quit
${EndIf}
FunctionEnd
Section
WriteRegStr HKCU 'Software\Classes\.png\OpenWithProgids' 'AnimeraPNG' '' ; WinXP+
WriteRegStr HKCU 'Software\Classes\AnimeraPNG\shell' '' 'open'
WriteRegStr HKCU 'Software\Classes\AnimeraPNG\shell\open\command' '' '"$exepath" "%1"'
SectionEnd
!if 1
VIProductVersion 1.2.3.4
VIAddVersionKey /LANG=0 "CompanyName" "AnimeraPNG fake company"
VIAddVersionKey /LANG=0 "ProductName" "AnimeraPNG product"
VIAddVersionKey /LANG=0 "FileDescription" "AnimeraPNG Application"
!else
Section
WriteRegStr HKCU 'Software\Classes\AnimeraPNG\Application' 'ApplicationName' 'AnimeraPNG'
WriteRegStr HKCU 'Software\Classes\AnimeraPNG\Application' 'ApplicationCompany' 'AnimeraPNG fake company'
;WriteRegStr HKCU 'Software\Classes\AnimeraPNG\Application' 'ApplicationIcon' '$exepath'
;WriteRegStr HKCU 'Software\Classes\AnimeraPNG\Application' 'ApplicationDescription' '...'
;WriteRegStr HKCU 'Software\Classes\AnimeraPNG\Application' 'AppUserModelId' '...'
SectionEnd
!endif
或者只是将其添加为额外的动词:
WriteRegStr HKCU 'Software\Classes\SystemFileAssociations\.png\shell\AnimeraPNG\command' '' '"$exepath" "%1"' ; WinXP+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句