杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1689|回复: 0

NSIS格式关联

[复制链接]
发表于 2019-3-1 17:46:40 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. !include "FileAssociation.nsh"
  2. ...

  3. ${registerExtension} "c:\myplayer.exe" ".mkv" "MKV_File"

  4. ${unregisterExtension} ".mkv" "MKV File"


  5. FileAssociation.nsh
  6. !ifndef FileAssociation_INCLUDED
  7. !define FileAssociation_INCLUDED

  8. !include Util.nsh

  9. !verbose push
  10. !verbose 3
  11. !ifndef _FileAssociation_VERBOSE
  12.   !define _FileAssociation_VERBOSE 3
  13. !endif
  14. !verbose ${_FileAssociation_VERBOSE}
  15. !define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
  16. !verbose pop

  17. !macro FileAssociation_VERBOSE _VERBOSE
  18.   !verbose push
  19.   !verbose 3
  20.   !undef _FileAssociation_VERBOSE
  21.   !define _FileAssociation_VERBOSE ${_VERBOSE}
  22.   !verbose pop
  23. !macroend



  24. !macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
  25.   !verbose push
  26.   !verbose ${_FileAssociation_VERBOSE}
  27.   Push `${_DESCRIPTION}`
  28.   Push `${_EXTENSION}`
  29.   Push `${_EXECUTABLE}`
  30.   ${CallArtificialFunction} RegisterExtension_
  31.   !verbose pop
  32. !macroend

  33. !macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
  34.   !verbose push
  35.   !verbose ${_FileAssociation_VERBOSE}
  36.   Push `${_EXTENSION}`
  37.   Push `${_DESCRIPTION}`
  38.   ${CallArtificialFunction} UnRegisterExtension_
  39.   !verbose pop
  40. !macroend



  41. !define RegisterExtension `!insertmacro RegisterExtensionCall`
  42. !define un.RegisterExtension `!insertmacro RegisterExtensionCall`

  43. !macro RegisterExtension
  44. !macroend

  45. !macro un.RegisterExtension
  46. !macroend

  47. !macro RegisterExtension_
  48.   !verbose push
  49.   !verbose ${_FileAssociation_VERBOSE}

  50.   Exch $R2
  51.   Exch
  52.   Exch $R1
  53.   Exch
  54.   Exch 2
  55.   Exch $R0
  56.   Exch 2
  57.   Push $0
  58.   Push $1

  59.   ReadRegStr $1 HKCR $R1 ""  
  60.   StrCmp "$1" "" NoBackup  
  61.   StrCmp "$1" "$R0" NoBackup
  62.     WriteRegStr HKCR $R1 "backup_val" "$1"
  63. NoBackup:
  64.   WriteRegStr HKCR $R1 "" "$R0"

  65.   ReadRegStr $0 HKCR $R0 ""
  66.   StrCmp $0 "" 0 Skip
  67.     WriteRegStr HKCR "$R0" "" "$R0"
  68.     WriteRegStr HKCR "$R0\shell" "" "open"
  69.     WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
  70. Skip:
  71.   WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
  72.   WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
  73.   WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'

  74.   Pop $1
  75.   Pop $0
  76.   Pop $R2
  77.   Pop $R1
  78.   Pop $R0

  79.   !verbose pop
  80. !macroend



  81. !define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
  82. !define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`

  83. !macro UnRegisterExtension
  84. !macroend

  85. !macro un.UnRegisterExtension
  86. !macroend

  87. !macro UnRegisterExtension_
  88.   !verbose push
  89.   !verbose ${_FileAssociation_VERBOSE}

  90.   Exch $R1
  91.   Exch
  92.   Exch $R0
  93.   Exch
  94.   Push $0
  95.   Push $1

  96.   ReadRegStr $1 HKCR $R0 ""
  97.   StrCmp $1 $R1 0 NoOwn
  98.   ReadRegStr $1 HKCR $R0 "backup_val"
  99.   StrCmp $1 "" 0 Restore
  100.   DeleteRegKey HKCR $R0
  101.   Goto NoOwn

  102. Restore:
  103.   WriteRegStr HKCR $R0 "" $1
  104.   DeleteRegValue HKCR $R0 "backup_val"
  105.   DeleteRegKey HKCR $R1

  106. NoOwn:

  107.   Pop $1
  108.   Pop $0
  109.   Pop $R1
  110.   Pop $R0

  111.   !verbose pop
  112. !macroend

  113. !endif
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 11:44 , Processed in 0.097930 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表