原文 轻狂写的桌面日历秀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‘ |
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" |
012 |
RequestExecutionLevel admin |
014 |
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ |
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" |
027 |
!define MUI_FINISHPAGE_RUN_TEXT "运行桌面日历秀" |
030 |
!insertmacro MUI_PAGE_WELCOME |
032 |
!define MUI_LICENSEPAGE_CHECKBOX |
033 |
!insertmacro MUI_PAGE_LICENSE "license.rtf" |
035 |
!insertmacro MUI_PAGE_COMPONENTS |
037 |
!define MUI_PAGE_CUSTOMFUNCTION_show Pageshow |
038 |
!insertmacro MUI_PAGE_DIRECTORY |
040 |
!insertmacro MUI_PAGE_INSTFILES |
042 |
!define MUI_FINISHPAGE_RUN "$INSTDIR\XDeskCal.exe" |
043 |
!insertmacro MUI_PAGE_FINISH |
046 |
!insertmacro MUI_UNPAGE_INSTFILES |
049 |
!insertmacro MUI_LANGUAGE "SimpChinese" |
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" |
062 |
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS |
063 |
; ------ MUI 现代界面定义结束 ------ |
065 |
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" |
066 |
OutFile "XDeskCal_Free.exe" |
067 |
InstallDir "D:\Program Files\XDeskCal\" |
068 |
;读取注册中的键值,如果没有,就按默认路径。 |
069 |
InstallDirRegKey HKCU "Software\XDeskCal" "" |
071 |
ShowUnInstDetails show |
072 |
ShowInstDetails hide ;该项默认为show,hide表示不显示安装信息,点击显示按钮后显示。 |
073 |
ShowUnInstDetails hide ;该项同上,卸载过程 |
074 |
BrandingText "轻狂志www.flighty.cn - 编译日期${VER_BUILD}" |
078 |
SetOutPath "$INSTDIR" |
083 |
SectionGroup "快捷方式" SEC02 |
085 |
Section "开始菜单" SEC0201 |
087 |
CreateDirectory "$SMPROGRAMS\桌面日历秀" |
088 |
CreateShortCut "$SMPROGRAMS\桌面日历秀\桌面日历秀.lnk" "$INSTDIR\XDeskCal.exe" |
089 |
CreateShortCut "$SMPROGRAMS\桌面日历秀\卸载日历秀.lnk" "$INSTDIR\卸载程序.exe" |
094 |
CreateShortCut "$DESKTOP\桌面日历秀.lnk" "$INSTDIR\XDeskCal.exe" |
100 |
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "XDeskCal" "$INSTDIR\XDeskCal.exe" |
104 |
WriteUninstaller "$INSTDIR\卸载程序.exe" |
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}" |
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 |
121 |
/****************************** |
123 |
******************************/ |
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" |
134 |
Delete "$SMPROGRAMS\桌面日历秀\卸载日历秀.lnk" |
135 |
Delete "$SMPROGRAMS\桌面日历秀\桌面日历秀.lnk" |
136 |
Delete "$SMSTARTUP\桌面日历秀.lnk" |
137 |
Delete "$DESKTOP\桌面日历秀.lnk" |
139 |
RMDir "$SMPROGRAMS\桌面日历秀" |
141 |
RMDir /r "$INSTDIR\Res" |
142 |
RMDir /r "$INSTDIR\PluginSkins" |
143 |
RMDir /r "$INSTDIR\mainskins" |
144 |
RMDir /r "$INSTDIR\icon" |
145 |
RMDir "$INSTDIR\DataBackup" |
146 |
RMDir "$INSTDIR\Data" |
150 |
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" |
152 |
DeleteRegKey /ifempty HKCU "Software\XDeskCal" |
154 |
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "XDeskCal" |
159 |
ReadRegStr $0 HKCU "Software\XDeskCal" "" |
163 |
FindWindow $0 "#32770" "" $HWNDPARENT |
164 |
GetDlgItem $0 $0 1001 |
167 |
FindWindow $0 "#32770" "" $HWNDPARENT |
168 |
GetDlgItem $0 $0 1019 |
170 |
FindWindow $0 "#32770" "" $HWNDPARENT |
171 |
GetDlgItem $0 $0 1006 |
172 |
SendMessage $0 ${WM_SETTEXT} 0 "STR:您已经安装过 ${PRODUCT_NAME} ,现在进行的覆盖安装不能更改安装目录,如果您需要更改安装目录,请先卸载已经安装的版本之后再运行此安装程序!" |
177 |
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2 |
181 |
Function un.onUninstSuccess |
183 |
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功卸载,您的用户配置和数据文件需要手工删除!" |
|
轻狂写的桌面日历秀NSIS脚本供大家参考学习,布布扣,bubuko.com
轻狂写的桌面日历秀NSIS脚本供大家参考学习
原文:http://www.cnblogs.com/lonelyxmas/p/3652088.html