原文 轻狂写的桌面日历秀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 ...
随机推荐
- jdk并发包 CopyOnWriteArrayList源代码分析
CopyOnWriteArrayList是jdk1.5并法包里面用于处理高并发下.读多写少的情况下.减少锁等待的集合类.以下对该类实现做一个简要的分析 1,首先CopyOnWriteArrayList ...
- android CountDownTimer
最近进行的项目使用的定时功能,我发现了一个非常容易使用内置类CountDownTimer.当然,可以使用这种效果TimerTask + Timer为了实现.只是我个人的意见CountDownTimer ...
- ORA-00020的思考
今天,历史的图书馆例行检查DB,发现alert.log有一"ORA-00020: maximum number of processes (150) exceeded",这是一个常 ...
- 表白程序源代码,android
弄了一个表白程序,还是不错的,内容能够自己设置.并附上源代码:http://download.csdn.net/detail/a358763471/7803571 看下效果图吧.是动画的哦...
- 一个简单的带缓存http代理
眼下1.0版模型非常easy.即对客户机发来的请求进行简单处理后,转发到server.转发之前先检查本地缓存.假设有.则直接回送给客户本地资源 程序流程大致例如以下图: 缓存是通过把文件保存到磁盘上, ...
- LayoutInflater使用
在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会依据情况在代码中自己定义控件,这就须要用到LayoutInflater.LayoutInflater在Android中是“扩展”的意思,作 ...
- 设计模式 - Abstract Factory模式(abstract factory pattern) 详细说明
Abstract Factory模式(abstract factory pattern) 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/ ...
- Maven学习笔记(十一年):柔性结构
一个典型的项目将是开发环境.测试环境和生产环境,这些环境的数据库配置是不一样的,并使用正确的配置. Maven为了支持构建的灵活性,内置了三大特性,即属性.Profile和资源过滤.本章将介绍这些特性 ...
- linux下一个oracle11G DG建立(一个):准备环境
linux下一个oracle11G DG建立(一个):准备环境 周围环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g ...
- 玩转Web之easyui(三)-----easy ui dataGird 重新指定url以获取不同数据源信息
如果已经写了一个dataGird并且已经通过url绑定数据源,能不能在其他地方改变url使其从不同数据源获取信息,从而实现查询等操作?答案当然是肯定的,而且仅需要几行代码 $('#btnq').bin ...