杉宫竹苑工作室

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

仿网易云音乐【传统与现代风格】

[复制链接]
发表于 2018-8-12 20:10:24 | 显示全部楼层 |阅读模式

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

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

x
  1. # 单行注释用井号"#"或分号";",跨行注释用可以用C/C++中注释语法。
  2. # 使用!define定义一些常量(如安装包的版本号等)
  3. # 对常量或变量的引用可以使用如${PRODUCT_NAME}格式,也可以使用如$PRODUCT_NAME格式

  4. !define PRODUCT_NAME           "网易云音乐"
  5. !define EXE_NAME               "cloudmusic.exe"
  6. !define PRODUCT_VERSION        "1.0.0.1"
  7. !define PRODUCT_PUBLISHER      "NetEase"
  8. !define PRODUCT_LEGAL          "NetEase 1999-2014"
  9. !define TEMP_DIR               ""

  10. /*
  11. NSIS内置了一些常用的变量,如
  12. $INSTDIR 表示用户定义的解压路径;
  13. $DESKTOP 表示Windows桌面目录;
  14. 等等。


  15. 也可以用 Var 命令来声明自己的变量($VARNAME)。 NSIS的变量都是全局的并且可以在任何区段或函数中使用。
  16. 另外堆栈可以用来作为临时存储。 使用 Push 和 Pop 命令来访问堆栈。Push把一个值添加到堆栈,Pop移除一个值并且设置该变量。
  17. 且NSIS内置了20个已注册的变量 (如 $0~$9 和 $R0~$R9)。 这些变量不需要声明就可以使用。
  18. */

  19. # 定义安装包可执行文件的版本信息
  20. VIProductVersion                    "${PRODUCT_VERSION}"
  21. VIAddVersionKey "ProductVersion"    "${PRODUCT_VERSION}"
  22. VIAddVersionKey "ProductName"       "${PRODUCT_NAME}"
  23. VIAddVersionKey "CompanyName"       "${PRODUCT_PUBLISHER}"
  24. VIAddVersionKey "FileVersion"       "${PRODUCT_VERSION}"
  25. VIAddVersionKey "InternalName"      "${EXE_NAME}"
  26. VIAddVersionKey "FileDescription"   "${PRODUCT_NAME}"
  27. VIAddVersionKey "LegalCopyright"    "${PRODUCT_LEGAL}"

  28. # ==================== NSIS属性 ================================
  29. # 设置安装包的压缩方案,有ZLIB(默认)、BZIP2、LZMA
  30. SetCompressor lzma

  31. ; 设置安装包名字,显示在安装包标题栏等位置
  32. Name "$PRODUCT_NAME"

  33. # 安装包可执行程序文件名
  34. OutFile "网易云音乐安装-Basic UI.exe"

  35. # 安装包默认安装位置,也就是安装路径的默认值
  36. InstallDir "$PROGRAMFILES\Netease\CloudMusic"


  37. # 设置是否显示安装详细信息
  38. ShowInstDetails hide

  39. # 设置是否显示卸载详细信息
  40. ShowUnInstDetails   hide

  41. # 针对Vista和win7 的UAC进行权限请求.
  42. # RequestExecutionLevel none|user|highest|admin
  43. RequestExecutionLevel admin


  44. # 安装和卸载程序的图标
  45. Icon             "image\logo.ico"
  46. UninstallIcon    "image\un_logo.ico"


  47. /*
  48. 向导页面是NSIS安装程序中最重要的界面元素,在nsis脚本中可以使用NSIS内置页面或者定制界面,
  49. 通过脚本可以指定页面的顺序、显示样子和行为。 PageEx指令用来定义安装程序中的页面,也可以使用Page指令,但PageEx提供更多选项;UninstPage用来定义卸载页面。
  50. 页面显示的顺序和它在nsis脚本中定义的次序一致。

  51. 安装页面有:license|components|directory|instfiles|
  52. 卸载页面有:uninstConfirm

  53. 每个页面有不同元素和属性。
  54. 也可以使用Page custom来自定义页面,这个后面的文章有讲到。
  55. */

  56. PageEx license
  57.     LicenseData "license.rtf"       #可以是txt或rtf文件格式
  58. PageExEnd


  59. /*
  60. 在一个普通的安装包里用户需要安装许多东西。例如在NSIS安装包里你可以选择安装源码、附加插件、脚本样例或其他。
  61. 里面的每个组件都有它自己的代码块,当用户选择了安装该组件,那么安装程序就会执行对应的代码。
  62. 在脚本里,这些代码称为区段,见下面的Section。每个可见的区段都可以作为一个组件给用户选择是否安装。你可以只使用一个区段来构建安装包,但是如果你想要使用组件页来让用户选择可选的组件,那你就需要使用多个区段。
  63. */
  64. PageEx components
  65.     Caption "组件选择"
  66.     ComponentText "选择安装组件:" "主程序" "快捷方式"
  67. PageExEnd

  68. PageEx directory
  69.     Caption "安装目录"
  70.     DirText "请选择安装目录:"
  71. PageExEnd

  72. PageEx instfiles
  73. PageExEnd


  74. # 区段1
  75. # 区段名以一个!开头,那么该区段的显示名称将以粗体字显示.
  76. Section "!Files" "des_files"

  77.   ; 设置下面指定的文件在安装时默认的解压路径
  78.   SetOutPath $INSTDIR

  79.   ; 指明哪些文件需要被压缩进入安装包,"app\*.*"是相对于nsis脚本文件的相对路径
  80.   File /r "app\*.*"

  81. SectionEnd


  82. # 区段2
  83. # 该区段专门用来创建一些快捷方式
  84. #
  85. Section "Shortcut" "des_shortcut"
  86.   SetShellVarContext all
  87.   CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  88.   CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${EXE_NAME}"
  89.   CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\卸载${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
  90.   SetShellVarContext current
  91. SectionEnd


  92. # 区段3
  93. # 区段名为空、遗漏或者以一个 "-" 开头,那么它将是一个隐藏的区段,用户也不能选择禁止它.
  94. #
  95. Section "-Necessary"

  96.     # 生成卸载程序
  97.     WriteUninstaller "$INSTDIR\uninst.exe"

  98.     # 添加卸载信息到控制面板
  99.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME}"
  100.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$INSTDIR\uninst.exe"

  101.     /*
  102.     在NSIS脚本里每一行都作为一个命令处理,如果这一行太长的话你可以使用“\”来分隔,编译器会自动地把下一行接到上一行来作为完整的一行,而不是看作新的行。
  103.     */
  104.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" "$INSTDIR\${EXE_NAME}"
  105.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "$INSTDIR\${PRODUCT_PUBLISHER}"
  106. SectionEnd


  107. # 卸载区段,如果一个区段名为“Uninstall”或以“un.”为前缀,那么它就是一个卸载程序区段。
  108. #
  109. Section "Uninstall"

  110.   ; 删除快捷方式,SetShellVarContext 设置操作是针对当前用户还是所有用户
  111.   SetShellVarContext all
  112.   Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
  113.   Delete "$SMPROGRAMS\${PRODUCT_NAME}\卸载${PRODUCT_NAME}.lnk"
  114.   RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
  115.   Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
  116.   SetShellVarContext current

  117.   SetOutPath "$INSTDIR"

  118.   ; 删除安装的文件
  119.   Delete "$INSTDIR\*.*"

  120.   SetOutPath "$DESKTOP"

  121.   RMDir /r "$INSTDIR"
  122.   RMDir "$INSTDIR"

  123.   SetAutoClose true
  124. SectionEnd


  125. # ============================== 回调函数 ====================================

  126. # 函数名以“.”开头的一般作为回调函数保留.
  127. # 函数名以“un.”开头的函数将会被创建在卸载程序里,因此,普通安装区段和函数不能调用卸载函数,而卸载区段和卸载函数也不能调用普通函数。

  128. Function .onInit
  129. FunctionEnd

  130. Function .onGUIInit

  131. FunctionEnd


  132. # 安装成功以后.
  133. Function .onInstSuccess

  134. FunctionEnd


  135. # 卸载操作开始前.
  136. Function un.onInit
  137.     MessageBox MB_ICONQUESTION|MB_YESNO "你确实要完全删除网易云音乐,及其所有组件吗?" /SD IDYES IDYES +2 IDNO +1
  138.     Abort
  139. FunctionEnd

  140. # 卸载成功以后.
  141. Function un.onUninstSuccess
  142.     MessageBox MB_ICONINFORMATION|MB_OK "${PRODUCT_NAME} 已成功地从你的计算机移除" /SD IDOK
  143. FunctionEnd
复制代码
传统脚本附件
游客,本帖隐藏的内容需要积分高于 500 才可浏览,您当前积分为 0


现代
  1. # 单行注释用井号"#"或分号";",跨行注释用可以用C/C++中注释语法。
  2. # 使用!define定义一些常量(如安装包的版本号等)
  3. # 对常量或变量的引用可以使用如${PRODUCT_NAME}格式,也可以使用如$PRODUCT_NAME格式

  4. !define PRODUCT_NAME           "网易云音乐"
  5. !define EXE_NAME               "cloudmusic.exe"
  6. !define PRODUCT_VERSION        "1.0.0.1"
  7. !define PRODUCT_PUBLISHER      "NetEase"
  8. !define PRODUCT_LEGAL          "NetEase 1999-2014"
  9. !define TEMP_DIR               ""

  10. /*
  11. NSIS内置了一些常用的变量,如
  12. $INSTDIR 表示用户定义的解压路径;
  13. $DESKTOP 表示Windows桌面目录;
  14. 等等。


  15. 也可以用 Var 命令来声明自己的变量($VARNAME)。 NSIS的变量都是全局的并且可以在任何区段或函数中使用。
  16. 另外堆栈可以用来作为临时存储。 使用 Push 和 Pop 命令来访问堆栈。Push把一个值添加到堆栈,Pop移除一个值并且设置该变量。
  17. 且NSIS内置了20个已注册的变量 (如 $0~$9 和 $R0~$R9)。 这些变量不需要声明就可以使用。
  18. */

  19. # 定义安装包可执行文件的版本信息
  20. VIProductVersion                    "${PRODUCT_VERSION}"
  21. VIAddVersionKey "ProductVersion"    "${PRODUCT_VERSION}"
  22. VIAddVersionKey "ProductName"       "${PRODUCT_NAME}"
  23. VIAddVersionKey "CompanyName"       "${PRODUCT_PUBLISHER}"
  24. VIAddVersionKey "FileVersion"       "${PRODUCT_VERSION}"
  25. VIAddVersionKey "InternalName"      "${EXE_NAME}"
  26. VIAddVersionKey "FileDescription"   "${PRODUCT_NAME}"
  27. VIAddVersionKey "LegalCopyright"    "${PRODUCT_LEGAL}"

  28. # ==================== NSIS属性 ================================
  29. # 设置安装包的压缩方案,有ZLIB(默认)、BZIP2、LZMA
  30. SetCompressor lzma

  31. ; 设置安装包名字,显示在安装包标题栏等位置
  32. Name "$PRODUCT_NAME"

  33. # 安装包可执行程序文件名
  34. OutFile "网易云音乐安装-Basic UI.exe"

  35. # 安装包默认安装位置,也就是安装路径的默认值
  36. InstallDir "$PROGRAMFILES\Netease\CloudMusic"


  37. # 设置是否显示安装详细信息
  38. ShowInstDetails hide

  39. # 设置是否显示卸载详细信息
  40. ShowUnInstDetails   hide

  41. # 针对Vista和win7 的UAC进行权限请求.
  42. # RequestExecutionLevel none|user|highest|admin
  43. RequestExecutionLevel admin


  44. # 安装和卸载程序的图标
  45. Icon             "image\logo.ico"
  46. UninstallIcon    "image\un_logo.ico"


  47. /*
  48. 向导页面是NSIS安装程序中最重要的界面元素,在nsis脚本中可以使用NSIS内置页面或者定制界面,
  49. 通过脚本可以指定页面的顺序、显示样子和行为。 PageEx指令用来定义安装程序中的页面,也可以使用Page指令,但PageEx提供更多选项;UninstPage用来定义卸载页面。
  50. 页面显示的顺序和它在nsis脚本中定义的次序一致。

  51. 安装页面有:license|components|directory|instfiles|
  52. 卸载页面有:uninstConfirm

  53. 每个页面有不同元素和属性。
  54. 也可以使用Page custom来自定义页面,这个后面的文章有讲到。
  55. */

  56. PageEx license
  57.     LicenseData "license.rtf"       #可以是txt或rtf文件格式
  58. PageExEnd


  59. /*
  60. 在一个普通的安装包里用户需要安装许多东西。例如在NSIS安装包里你可以选择安装源码、附加插件、脚本样例或其他。
  61. 里面的每个组件都有它自己的代码块,当用户选择了安装该组件,那么安装程序就会执行对应的代码。
  62. 在脚本里,这些代码称为区段,见下面的Section。每个可见的区段都可以作为一个组件给用户选择是否安装。你可以只使用一个区段来构建安装包,但是如果你想要使用组件页来让用户选择可选的组件,那你就需要使用多个区段。
  63. */
  64. PageEx components
  65.     Caption "组件选择"
  66.     ComponentText "选择安装组件:" "主程序" "快捷方式"
  67. PageExEnd

  68. PageEx directory
  69.     Caption "安装目录"
  70.     DirText "请选择安装目录:"
  71. PageExEnd

  72. PageEx instfiles
  73. PageExEnd


  74. # 区段1
  75. # 区段名以一个!开头,那么该区段的显示名称将以粗体字显示.
  76. Section "!Files" "des_files"

  77.   ; 设置下面指定的文件在安装时默认的解压路径
  78.   SetOutPath $INSTDIR

  79.   ; 指明哪些文件需要被压缩进入安装包,"app\*.*"是相对于nsis脚本文件的相对路径
  80.   File /r "app\*.*"

  81. SectionEnd


  82. # 区段2
  83. # 该区段专门用来创建一些快捷方式
  84. #
  85. Section "Shortcut" "des_shortcut"
  86.   SetShellVarContext all
  87.   CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  88.   CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${EXE_NAME}"
  89.   CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\卸载${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
  90.   SetShellVarContext current
  91. SectionEnd


  92. # 区段3
  93. # 区段名为空、遗漏或者以一个 "-" 开头,那么它将是一个隐藏的区段,用户也不能选择禁止它.
  94. #
  95. Section "-Necessary"

  96.     # 生成卸载程序
  97.     WriteUninstaller "$INSTDIR\uninst.exe"

  98.     # 添加卸载信息到控制面板
  99.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME}"
  100.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$INSTDIR\uninst.exe"

  101.     /*
  102.     在NSIS脚本里每一行都作为一个命令处理,如果这一行太长的话你可以使用“\”来分隔,编译器会自动地把下一行接到上一行来作为完整的一行,而不是看作新的行。
  103.     */
  104.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" "$INSTDIR\${EXE_NAME}"
  105.     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "$INSTDIR\${PRODUCT_PUBLISHER}"
  106. SectionEnd


  107. # 卸载区段,如果一个区段名为“Uninstall”或以“un.”为前缀,那么它就是一个卸载程序区段。
  108. #
  109. Section "Uninstall"

  110.   ; 删除快捷方式,SetShellVarContext 设置操作是针对当前用户还是所有用户
  111.   SetShellVarContext all
  112.   Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
  113.   Delete "$SMPROGRAMS\${PRODUCT_NAME}\卸载${PRODUCT_NAME}.lnk"
  114.   RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
  115.   Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
  116.   SetShellVarContext current

  117.   SetOutPath "$INSTDIR"

  118.   ; 删除安装的文件
  119.   Delete "$INSTDIR\*.*"

  120.   SetOutPath "$DESKTOP"

  121.   RMDir /r "$INSTDIR"
  122.   RMDir "$INSTDIR"

  123.   SetAutoClose true
  124. SectionEnd


  125. # ============================== 回调函数 ====================================

  126. # 函数名以“.”开头的一般作为回调函数保留.
  127. # 函数名以“un.”开头的函数将会被创建在卸载程序里,因此,普通安装区段和函数不能调用卸载函数,而卸载区段和卸载函数也不能调用普通函数。

  128. Function .onInit
  129. FunctionEnd

  130. Function .onGUIInit

  131. FunctionEnd


  132. # 安装成功以后.
  133. Function .onInstSuccess

  134. FunctionEnd


  135. # 卸载操作开始前.
  136. Function un.onInit
  137.     MessageBox MB_ICONQUESTION|MB_YESNO "你确实要完全删除网易云音乐,及其所有组件吗?" /SD IDYES IDYES +2 IDNO +1
  138.     Abort
  139. FunctionEnd

  140. # 卸载成功以后.
  141. Function un.onUninstSuccess
  142.     MessageBox MB_ICONINFORMATION|MB_OK "${PRODUCT_NAME} 已成功地从你的计算机移除" /SD IDOK
  143. FunctionEnd
复制代码


现代脚本
游客,本帖隐藏的内容需要积分高于 500 才可浏览,您当前积分为 0


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 22:24 , Processed in 0.108554 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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