原文 轻狂写的桌面日历秀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脚本的Demo
这个NSIS脚本是打包公司的整个Release项目工程. 用NSIS编译器编译下就可以了. ; Script generated by the HM NIS Edit Script Wizard. ! ...
- 全方位掌握nsis脚本
NSIS 确实是一个不错的安装程序制作软件.新版本 2.0a7 真正实现了中文支持和支持 WinXP 的安装对话框. 不过要用它实现漂亮的安装界面和完美的安装功能就必须好好的写脚本. 而 NSIS 的 ...
- NSIS脚本入门和进阶方法
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.对于新手来说,它有 ...
- NSIS脚本:在卸载页面收集信息
原文 NSIS脚本:在卸载页面收集信息 此功能用于在软件卸载时收集相关信息,以便进行后续改进.实现功能如图: 以下为实现代码: 01 !include nsDialogs.nsh 02 !includ ...
- 基于NSIS脚本开发的安装程序制作软件:易量安装
原文 基于NSIS脚本开发的安装程序制作软件:易量安装 前几天“萝卜”给我推荐了一款安装程序制作工具——易量安装. 易量安装是一款安装程序制作软件,基于著名的NSIS(Nullsoft Scripta ...
- 使用NSIS脚本制作一个安装包
大部分人第一次看到NSIS脚本都是一脸懵逼的.因为它这个脚本的结构乍一看上去就非常奇怪,不作说明的话是看不懂的. 编写脚本命令的时候要非常注意,命令要按照规定写在脚本中不同的段落里,也就是说,命令的先 ...
- 桌面上嵌入窗口(桌面日历)原理探索(将该窗口的Owner设置成桌面的Shell 窗口,可使用SetWindowLong更改窗口的GWL_HWNDPARENT,还要使用SetWindowPos设置Z-Order)
今天在QQ群里有人问怎样实现将自己的窗口嵌入桌面,让它和桌面融为一体,就像很多桌面日历软件那样. 我当时想到的就是建立一个Child Window,将他的父窗口设置成桌面Shell窗口就可以了.但是 ...
- Cmake调用NSIS(一个可执行文件,其实就是一个编译器)编译NSIS脚本问题研究
技术经理说,可以用Cmake当中的add_custom_command,add_custom_target命令来使用. 我初次研究了下,add_custom_command应该用官方文档中说明的第二种 ...
- NSIS脚本:更改壁纸
原文 NSIS脚本:更改壁纸 我们在制作主题安装包的时候,经常要进行自动更改壁纸的操作,其实用NSIS实现这一点非常简单.示例代码如下: 01 Name "更改壁纸" 02 Out ...
随机推荐
- Android 大约Dialog弹出窗口
直接效果图: 实现步骤: 1.主界面activity_main.xml非常easy,一个button <RelativeLayout xmlns:android="http://sch ...
- Cocos2d-x 地图步行实现1:图论Dijkstra算法
下一节<Cocos2d-x 地图行走的实现2:SPFA算法>: http://blog.csdn.net/stevenkylelee/article/details/38440663 本文 ...
- linux sort,uniq,cut,wc命令详解 (转)
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- 广域网佰腾玩O2O笑话——它看起来很漂亮,注定不低于
据说 2014.8.29:中国最大的商业运营商万达在一起的互联网服务供应商百度.腾讯在深圳(属性)战略合作签约仪式举行. 从功能表面上.万达代表实体,百度代表数据.腾讯代表社区:按三个合伙人理解,是要 ...
- 通过action 跨进程启动activity
在一些场景中我们需要从一个进程启动另外的一个应用的activity,这有什么好办法? 这里介绍一种方法,通过自定义 action 通过filter来启动. 如果你需要启动一个你自己写的另一个app的a ...
- 解决TabActivity中子页面不通过导航跳转到还有一个页面的问题
问题:当你的导航在TabActivity中 而子页面的一个button须要切换到当中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址: ...
- sql server从一个数据库复制一个表到另一个数据库的方法
分两步进行: 第一步,复制表结构: 在表上面右击——>编写表脚本为:——>Create到——>新查询编辑器窗口,你也可以保存为sql文件, 将新查询编辑器窗口最上面的一句话USE [ ...
- List Set Map用法和区别
List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是.如图: Collection ├List │├LinkedList │├ArrayList │└Vec ...
- CSU 1659: Graph Center(SPFA)
1659: Graph Center Time Limit: 1 Sec Memory Limit: 128 MB Submit: 63 Solved: 25 [id=1659"> ...
- sql系列(基础)-第二章 限制和排序数据
更好的看↑代码点击VIEW PLAN 第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时.条件包括 ...