轻狂写的桌面日历秀NSIS脚本供大家参考学习

原文 轻狂写的桌面日历秀NSIS脚本供大家参考学习

现在共享桌面日历秀的NSIS脚本,以便交流学习。此脚本实现的功能如下:

7-Zip打开看不到内容。
自动读取原安装路径,如果有则不允许更改。
取得编译日期。
自定义欢迎页面文字。
自定义图标。
文件版本声明。
多区段可选安装。
……

安装效果参考http://www.flighty.cn/html/soft/20101001_101.html

代码如下:

001 ;增加一个包含链接内容的7z压缩包到可执行文件头部,使7-Zip打开看不到其他内容。
002 !packhdr temp.dat 'cmd /c Copy /B temp.dat /B +轻狂志.7z temp.dat'
003  
004 ; 安装程序初始定义常量
005 !define PRODUCT_NAME "桌面日历秀"
006 !define PRODUCT_VERSION "3.1.0 免费版"
007 !define PRODUCT_UNINST_KEY"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
008 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
009 !define /date VER_BUILD "%Y.%m.%d"
010  
011 SetCompressor lzma
012 RequestExecutionLevel admin
013  
014 ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
015 !include "MUI.nsh"
016  
017 ; MUI 预定义常量
018 !define MUI_ABORTWARNING
019 !define MUI_HEADERIMAGE
020 !define MUI_HEADERIMAGE_BITMAP "modern-header.bmp"
021 !define MUI_ICON "ico.ico"
022 !define MUI_UNICON "unico.ico"
023 !define MUI_WELCOMEFINISHPAGE_BITMAP "modern-wizard.bmp"
024 !define MUI_WELCOMEPAGE_TITLE "\r\n    桌面日历秀 3.1.0 免费版"
025 !define MUI_WELCOMEPAGE_TEXT "\r\n    桌面日历秀是一款优秀的桌面日历和个人信息管理软件。\r\n\r\n    此版本已经剔除了原安装包中的haozip和百度搜霸,安装过程中可以自动进行软件注册而无任何功能或时间限制,所以命名为“免费版”。\r\n\r\n    桌面日历秀原始文件收集于网络,您使用该软件时所享受到的主要功能,皆为原始作者的开发成果。使用此软件是您的自由选择,轻狂志(www.flighty.cn)并不对可能由此给您带来的任何损失负责。如果您认为该软件具有实用价值,请从正式渠道获得授权许可。\r\n\r\n    $_CLICK"
026  
027 !define MUI_FINISHPAGE_RUN_TEXT "运行桌面日历秀"
028  
029 ; 欢迎页面
030 !insertmacro MUI_PAGE_WELCOME
031 ; 许可协议页面
032 !define MUI_LICENSEPAGE_CHECKBOX
033 !insertmacro MUI_PAGE_LICENSE "license.rtf"
034 ; 组件选择页面
035 !insertmacro MUI_PAGE_COMPONENTS
036 ; 安装目录选择页面
037 !define MUI_PAGE_CUSTOMFUNCTION_show Pageshow
038 !insertmacro MUI_PAGE_DIRECTORY
039 ; 安装过程页面
040 !insertmacro MUI_PAGE_INSTFILES
041 ; 安装完成页面
042 !define MUI_FINISHPAGE_RUN "$INSTDIR\XDeskCal.exe"
043 !insertmacro MUI_PAGE_FINISH
044  
045 ; 安装卸载过程页面
046 !insertmacro MUI_UNPAGE_INSTFILES
047  
048 ; 安装界面包含的语言设置
049 !insertmacro MUI_LANGUAGE "SimpChinese"
050  
051 ;文件版本声明
052   VIProductVersion "3.1.0.1225"
053   VIAddVersionKey /LANG=2052 "ProductName" "桌面日历秀免费版"
054   VIAddVersionKey /LANG=2052 "Comments" "免费使用,不限分发。"
055   VIAddVersionKey /LANG=2052 "CompanyName" "www.flighty.cn"
056   VIAddVersionKey /LANG=2052 "LegalTrademarks" "flighty"
057   VIAddVersionKey /LANG=2052 "LegalCopyright" "轻狂志"
058   VIAddVersionKey /LANG=2052 "FileDescription" "桌面日历秀免费版"
059   VIAddVersionKey /LANG=2052 "FileVersion" "3.1.0.1225"
060  
061 ; 安装预释放文件
062 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
063 ; ------ MUI 现代界面定义结束 ------
064  
065 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
066 OutFile "XDeskCal_Free.exe"
067 InstallDir "D:\Program Files\XDeskCal\"
068 ;读取注册中的键值,如果没有,就按默认路径。
069 InstallDirRegKey HKCU "Software\XDeskCal" ""
070 ShowInstDetails show
071 ShowUnInstDetails show
072 ShowInstDetails hide ;该项默认为show,hide表示不显示安装信息,点击显示按钮后显示。
073 ShowUnInstDetails hide ;该项同上,卸载过程
074 BrandingText "轻狂志www.flighty.cn - 编译日期${VER_BUILD}"
075  
076 Section "主程序" SEC01
077   SectionIn RO
078   SetOutPath "$INSTDIR"
079   SetOverwrite ifnewer
080   File /r "桌面日历秀\*.*"
081 SectionEnd
082  
083 SectionGroup "快捷方式" SEC02
084  
085   Section "开始菜单" SEC0201
086   SectionIn 1
087   CreateDirectory "$SMPROGRAMS\桌面日历秀"
088   CreateShortCut "$SMPROGRAMS\桌面日历秀\桌面日历秀.lnk""$INSTDIR\XDeskCal.exe"
089   CreateShortCut "$SMPROGRAMS\桌面日历秀\卸载日历秀.lnk" "$INSTDIR\卸载程序.exe"
090   SectionEnd
091  
092   Section "桌面" SEC0202
093    SectionIn 1
094   CreateShortCut "$DESKTOP\桌面日历秀.lnk" "$INSTDIR\XDeskCal.exe"
095   SectionEnd
096  
097 SectionGroupEnd
098  
099 Section "自动运行" SEC03
100 WriteRegStr   HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run""XDeskCal" "$INSTDIR\XDeskCal.exe"
101 SectionEnd
102  
103 Section -Post
104   WriteUninstaller "$INSTDIR\卸载程序.exe"
105 ;把用户选择的安装路径写入注册表中
106   WriteRegStr HKCU "Software\XDeskCal" "" $INSTDIR
107   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayName" "$(^Name)"
108   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""UninstallString" "$INSTDIR\uninst.exe"
109   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayVersion" "${PRODUCT_VERSION}"
110 SectionEnd
111  
112 ; 区段组件描述
113 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
114   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "桌面日历秀的主程序,必选!"
115   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "快捷方式可选安装。"
116   !insertmacro MUI_DESCRIPTION_TEXT ${SEC0201} "开始菜单快捷方式。"
117   !insertmacro MUI_DESCRIPTION_TEXT ${SEC0202} "桌面快捷方式。"
118   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "选择操作系统启动时是否自动运行桌面日历秀。"
119 !insertmacro MUI_FUNCTION_DESCRIPTION_END
120  
121 /******************************
122  *  以下是安装程序的卸载部分  *
123  ******************************/
124  
125 Section Uninstall
126   Delete "$INSTDIR\config.ini"
127   Delete "$INSTDIR\GdiPlus.dll"
128   Delete "$INSTDIR\Update.exe"
129   Delete "$INSTDIR\update.URS"
130   Delete "$INSTDIR\UpdateLang.ini"
131   Delete "$INSTDIR\XDeskCal.exe"
132   Delete "$INSTDIR\卸载程序.exe"
133  
134   Delete "$SMPROGRAMS\桌面日历秀\卸载日历秀.lnk"
135   Delete "$SMPROGRAMS\桌面日历秀\桌面日历秀.lnk"
136

你可能感兴趣的:(脚本)