这个NSIS脚本是打包公司的整个Release项目工程。

用NSIS编译器编译下就可以了。

; Script generated by the HM NIS Edit Script Wizard.
!include "StrFunc.nsh"
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "dlf_setup_v2.0"
!define PRODUCT_VERSION "2.0"
!define PRODUCT_PUBLISHER "DouBan Inc."
!define PRODUCT_WEB_SITE "http://wwwdouban.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\makensis.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define INSTALL_DIR_FILENAME "DouBan" ; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "x64.nsh"
!include "EnvVarUpdate.nsh"
!include "WinVer.nsh" ; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\Wintech.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\Wintech.ico" ; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\License.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
;!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\wlp_exe_gui.exe"
;!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
!insertmacro MUI_PAGE_FINISH ; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES ; Language files
!insertmacro MUI_LANGUAGE "English" !echo "Running${out_suffix}" ; MUI end ------ RequestExecutionLevel admin Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "dlf_setup_${out_suffix}.exe"
InstallDir "$PROGRAMFILES\${INSTALL_DIR_FILENAME}"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show Section "MainSection" SEC01 ${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR\bin" ; appends to the system path
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "${NSISDIR}\makensis.exe"
CreateDirectory "$INSTDIR"
;CreateShortCut "$SMPROGRAMS\${INSTALL_DIR_FILENAME}\${INSTALL_DIR_FILENAME}.lnk" "$INSTDIR\makensis.exe"
;CreateShortCut "$DESKTOP\${INSTALL_DIR_FILENAME}.lnk" "$INSTDIR\makensis.exe"
CreateShortCut "$DESKTOP\WinTech.lnk" "$INSTDIR\bin\wlp_exe_gui.exe" File "${NSISDIR}\License.txt"
File /r "setup\*"
File /r "DLP4100 FPGA Program file\*"
Var /GLOBAL WINDOWS_ARCHITECTURE
;这里用了GetVersion插件,但是该插件的作者已经停止维护了,
;但是不得已,需要使用,把GetVersion.dll放到了NSIS的插件目录下
GetVersion::WindowsPlatformArchitecture
Pop $WINDOWS_ARCHITECTURE ; 32 or 64 ; MessageBox MB_OK "${Version}"
; ${GetWindowsVersion} $R0 ${If} ${IsWinXP} ${If} "$WINDOWS_ARCHITECTURE" != "32"
MessageBox MB_OK "Sorry this application cannot run on this machine architecture!"
Quit ;结束整个安装进程
${EndIf}
${If} "${Version32}" != "X86"
MessageBox MB_OK "Sorry this application cannot run on this machine architecture!"
Quit ;结束整个安装进程
${EndIf}
${EndIf} ${If} ${IsWin7}
${If} "X$WINDOWS_ARCHITECTURE" != "${Version64}"
MessageBox MB_OK "Sorry this application cannot run on this machine architecture!"
Quit ;结束整个安装进程
${EndIf}
${EndIf} ${If} ${IsWin7} Exec '"$INSTDIR\bin\driver\win7\dpinst.exe" /c /f /se /sw /path "$INSTDIR\bin\driver\win7"'
ExecWait '"$INSTDIR\bin\vs2010sp1vcredist.exe" /q' ${EndIf} ;${If} ${IsWinXP} ;Exec '"$INSTDIR\bin\driver\win7\Psexec.exe" -i -d -s "$INSTDIR\bin\driver\win7\install_wdf_driver.exe"'
;ExecWait '"$INSTDIR\bin\vs2010sp1vcredist.exe" /q' ;${EndIf} ${If} ${IsWinXP} ExecWait '"$INSTDIR\bin\vs2010sp1vcredist.exe" /q' MessageBox MB_OK "You Must Install Driver manually! The Driver Installation Instruction is located in ReadMe.txt" ${EndIf} ExecShell open "$INSTDIR\" ;Detect windows is 32bit or 64bit ;${If} ${RunningX64}
; 64bit bits go here
; Exec '"$INSTDIR\bin\driver\win7\Psexec.exe" -i -d -s "$INSTDIR\bin\driver\win7\install_wdf_driver.exe"'
;-i -d -s "$INSTDIR\bin\Driver\win7install_wdf_driver.exe"' ; Exec "$INSTDIR\bin\driver\win7\install_wdf_driver.exe"
;ExecWait '"$INSTDIR\bin\vs2010sp1vcredist.exe" /q' ;${Else}
; 32bit bits go here
; Exec '"$INSTDIR\bin\driver\win7\Psexec.exe" -i -d -s "$INSTDIR\bin\driver\win7\install_wdf_driver.exe"'
; ExecWait '"$INSTDIR\bin\vs2010sp1vcredist.exe" /q'
;${EndIf} SectionEnd Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\MyScript\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\MyScript\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\makensis.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\makensis.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\setup"
Delete "$INSTDIR\License.txt"
Delete "$INSTDIR\makensis.exe" Delete "$SMPROGRAMS\${INSTALL_DIR_FILENAME}\Uninstall.lnk"
Delete "$SMPROGRAMS\${INSTALL_DIR_FILENAME}\Website.lnk"
Delete "$DESKTOP\${INSTALL_DIR_FILENAME}.lnk"
Delete "$SMPROGRAMS\${INSTALL_DIR_FILENAME}\${INSTALL_DIR_FILENAME}.lnk" RMDir "$SMPROGRAMS\${INSTALL_DIR_FILENAME}"
RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

  一些常用的NSIS代码

 ;获取操作系统盘符
ReadEnvStr $R0 SYSTEMDRIVE
;创建log文件夹
CreateDirectory "$R0\log"
;递归删除log文件夹
RMDir /r "$R0\log" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;弹出Windows关机框
FindWindow $0 "shell_traywnd"
SendMessage $0 273 506 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;请求Windows帮助
FindWindow $0 "shell_traywnd"
SendMessage $0 273 503 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;一句话刷新屏幕
System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;打开桌面属性
;...cpl,0,3'中的3可以改为
;-1 主题 0 壁纸 1 屏保 2 外观 3 设置
Exec 'Rundll32.exe shell32.dll,Control_RunDLL Desk.cpl,0,3' ;打开"设置" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;获得安装程序所在目录
System::Call 'kernel32::GetCurrentDirectory(i 1024,t .R1)'
MessageBox MB_OK '安装程序所在目录:$R1'
;或者直接使用变量
MessageBox MB_OK '文件名$EXEFILE,所在文件夹$EXEDIR,完整路径$EXEPATH。' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;获得当前安装程序进程PID
System::Call 'kernel32::GetCurrentProcessId()i .R0'
MessageBox MB_OK '安装程序进程PID:$R0' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;获得磁盘卷标
StrCpy $R0 "C:\"
System::Call 'kernel32::GetVolumeInformationA(t R0,t .R1,i 100,i .R3,i .R4,i .R5,t .R6,i 100)'
MessageBox MB_OK '盘符:$R0$\n卷标:$R1$\n文件格式:$R6' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;设置磁盘卷标
StrCpy $R0 "C:\" ;盘符
StrCpy $R1 "系统" ;卷标
System::Call 'kernel32::SetVolumeLabelA(t R0,t R1)' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;设置文件属性
StrCpy $R0 "C:\1.EXE" ;文件
StrCpy $R1 0x20 ;属性
System::Call 'kernel32::SetFileAttributesA(t R0,i 0x100)'
;属性表
;0x20 FILE_ATTRIBUTE_ARCHIVE,存档
;0x2 FILE_ATTRIBUTE_HIDDEN,隐藏
;0x80 FILE_ATTRIBUTE_NORMAL,正常
;0x2000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,不索引
;0x1000 FILE_ATTRIBUTE_OFFLINE,离线
;0x1 FILE_ATTRIBUTE_READONLY,只读
;0x4 FILE_ATTRIBUTE_SYSTEM,系统
;0x100 FILE_ATTRIBUTE_TEMPORARY,;临时属性(一般无效) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;在WIN7任务栏中增加图标链接
SetOutPath $WINDIR
CreateShortcut "$DESKTOP\记事本.lnk" "$WINDIR\notepad.exe"
ExecShell taskbarpin "$DESKTOP\记事本.lnk" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;安装结束后调用HTTP下载插件下载文件并运行
Function .onGUIEnd
NSISdl::download "http://www.flighty.cn/服务器文件名.exe" "本地文件名.exe"
Pop $R0 ;获取返回值
StrCmp $R0 "success" +3
MessageBox MB_OK "下载失败,原因: $R0"
Quit
exec ""本地文件名.exe""
FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;隐藏/显示文件扩展名实时生效,写入 0 (0x00000000) 显示或 1 (0x00000001) 来隐藏
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "HideFileExt" 0x00000001
SendMessage ${HWND_BROADCAST} ${WM_SETTINGCHANGE} 0 "STR:ShellState"
System::Call "shell32::SHChangeNotify(i0x08000000,i0,i0,i0)" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OutFile "ScreenRes.exe"
Name "获取当前屏幕分辨率"
Caption "获取当前屏幕分辨率"
XPStyle "on" Function ".onInit"
System::Call 'user32::GetSystemMetrics(i 0) i .r0'
System::Call 'user32::GetSystemMetrics(i 1) i .r1'
MessageBox MB_OK|MB_ICONINFORMATION "当前屏幕分辨率为: $\r$\n$0 X $1"
Quit
FunctionEnd Section "轻狂志"
;您的其他代码
SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OutFile flighty.exe
Section "将轻狂志设为首页"
WriteRegStr HKCU "Software\Microsoft\Internet Explorer\Main" "Start Page" http://www.flighty.cn
SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;调用 Windows API 来获取运行时间
System::Alloc 16
System::Call kernel32::GetLocalTime(isR0)
System::Call *$R0(&i2.R1,&i2.R2,&i2.R3,&i2.R4,&i2.R5,&i2.R6,&i2.R7,&i2.R8)
System::Free $R0
MessageBox MB_OK "$R1年$R2月$R4日,星期$R3,$R5:$R6:$R7.$R8" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;使用MiscButtonText修改按钮文本
;分别对应[上一步]、[下一步]、[取消]、[关闭],如果留空参数,则使用默认值
MiscButtonText "" "" "" "完成(&G)"
;安装过程页面
!insertmacro MUI_PAGE_INSTFILES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;清除目录权限及设置目录权限
AccessControl::DisableFileInheritance "$INSTDIR" ;禁止继承
AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess" ;设置Everyone权限 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Name "获得CPU和BIOS信息"
OutFile "flighty.exe" Section
SectionEnd Function .onInit
ReadRegStr $0 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0" "VendorIdentifier"
ReadRegStr $1 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0" "ProcessorNameString"
ReadRegStr $2 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0" "Identifier"
ReadRegStr $3 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0" "~MHz" ReadRegStr $4 HKLM "HARDWARE\DESCRIPTION\System\BIOS" "BaseBoardManufacturer"
ReadRegStr $5 HKLM "HARDWARE\DESCRIPTION\System\BIOS" "BIOSVersion"
ReadRegStr $6 HKLM "HARDWARE\DESCRIPTION\System\BIOS" "BIOSReleaseDate"
MessageBox MB_OK|MB_ICONEXCLAMATION "CPU制造商$0 $\r$\nCPU型号$1 $\r$\nCPU标识$2 $\r$\nCPU主频$3 $\r$\n$\r$\n主板品牌$4 $\r$\n主板BIOS版本$5 $\r$\n主板BIOS日期$6"
Abort
FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Name "判断操作系统位宽"
OutFile "判断操作系统位宽.exe"
!include "x64.nsh" Section
SectionEnd Function .onInit
${If} ${RunningX64}
MessageBox MB_OK ""
${Else}
MessageBox MB_OK ""
${EndIf}
FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;在 hosts 文件中追加地址屏蔽脚本
ClearErrors
SetFileAttributes "$SYSDIR\drivers\etc\hosts" NORMAL ;去只读属性
FileOpen $9 $SYSDIR\drivers\etc\hosts a ;追加数据
;FileSeek $9 0 END ;指针定位到相对于文件结尾
FileWrite $9 "127.0.0.1 adcount.sandai.net $\r$\n"
FileWrite $9 "127.0.0.1 biz4.sandai.net $\r$\n"
;下面自己加
SetFileAttributes "$SYSDIR\drivers\etc\hosts" READONLY ;加只读属性
FileClose $9 ;关闭打开的文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;对比两个文件的时间,如两个时间相等,就返回0;如R0小于R1,返回-1;如R1小于R0,返回1
StrCpy $R0 "C:\boot.ini"
StrCpy $R1 "C:\AUTOEXEC.BAT"
System::Call 'kernel32::CompareFileTime(t R0,t R1) i.R2'
MessageBox MB_OK '文件$R0与$R1时间比较结果$R2' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;注册apache服务器, -n MyWebServer表示apache2注册服务名为MyWebServer,默认服务名为Apache2
nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/apache2/bin/httpd.exe" -k install -n MyWebServer' ;注册MySQL服务器, MyDBServer表示MySQL注册服务名为MyDBServer,默认服务名为MySQL
nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/mysql5/bin/mysqld-nt.exe" -install MyDBServer' ;启动apache服务和MySQL服务
nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/apache2/bin/httpd.exe" -k start -n MyWebServer'
;或者
nsExec::ExecToLog 'cmd.exe /c net start MyWebServer'
nsExec::ExecToLog 'cmd.exe /c net start MyDBServer' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;从注册表中读取操作系统语言
ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Nls\Language" "Default"
${If} $0 = 0804
MessageBox MB_OK "您的操作系统语言为简体中文。"
${ElseIf} $0 == 0404
MessageBox MB_OK "您的操作系统语言为繁体中文。"
${ElseIf} $0 == 0409
MessageBox MB_OK "您的操作系统语言为英文。"
${EndIf}

reference:

http://www.flighty.cn/plus/view.php?aid=156

关于NSIS脚本的Demo的更多相关文章

  1. NSIS脚本入门和进阶方法

    NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.对于新手来说,它有 ...

  2. Cmake调用NSIS(一个可执行文件,其实就是一个编译器)编译NSIS脚本问题研究

    技术经理说,可以用Cmake当中的add_custom_command,add_custom_target命令来使用. 我初次研究了下,add_custom_command应该用官方文档中说明的第二种 ...

  3. NSIS脚本:更改壁纸

    原文 NSIS脚本:更改壁纸 我们在制作主题安装包的时候,经常要进行自动更改壁纸的操作,其实用NSIS实现这一点非常简单.示例代码如下: 01 Name "更改壁纸" 02 Out ...

  4. NSIS脚本:在卸载页面收集信息

    原文 NSIS脚本:在卸载页面收集信息 此功能用于在软件卸载时收集相关信息,以便进行后续改进.实现功能如图: 以下为实现代码: 01 !include nsDialogs.nsh 02 !includ ...

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

    原文 轻狂写的桌面日历秀NSIS脚本供大家参考学习 现在共享桌面日历秀的NSIS脚本,以便交流学习.此脚本实现的功能如下: 7-Zip打开看不到内容.自动读取原安装路径,如果有则不允许更改.取得编译日 ...

  6. 基于NSIS脚本开发的安装程序制作软件:易量安装

    原文 基于NSIS脚本开发的安装程序制作软件:易量安装 前几天“萝卜”给我推荐了一款安装程序制作工具——易量安装. 易量安装是一款安装程序制作软件,基于著名的NSIS(Nullsoft Scripta ...

  7. 全方位掌握nsis脚本

    NSIS 确实是一个不错的安装程序制作软件.新版本 2.0a7 真正实现了中文支持和支持 WinXP 的安装对话框. 不过要用它实现漂亮的安装界面和完美的安装功能就必须好好的写脚本. 而 NSIS 的 ...

  8. 使用NSIS脚本制作一个安装包

    大部分人第一次看到NSIS脚本都是一脸懵逼的.因为它这个脚本的结构乍一看上去就非常奇怪,不作说明的话是看不懂的. 编写脚本命令的时候要非常注意,命令要按照规定写在脚本中不同的段落里,也就是说,命令的先 ...

  9. 简单易用的安装文件制作工具NSIS的使用demo示例

    安装文件制作工具NSIS 使用总结   在给客户开发客户端软件时,为避免技术人员亲自上门安装带来额外的成本损耗,通常我们都会自作一个安装包,以确保我们开发的程序的相关依赖资源.环境在客户端运行前能自动 ...

随机推荐

  1. iOS越狱开发手记 - iOS9.3 dyld_decache不能提取arm64的dyld的解决方法

    参考以下文章 http://iosre.com/t/when-dyld-decache-fails-on-dyld-shared-cache-arm64-dsc-extractor-saves-our ...

  2. HDU5266---pog loves szh III (线段树+LCA)

    题意:N个点的有向树, Q次询问, 每次询问区间[L, R]内所有点的LCA. 大致做法:线段树每个点保存它的孩子的LCA值, 对于每一次询问只需要 在线段树查询即可. #include <bi ...

  3. Hadoop2.4.1 使用MapReduce简单的数据清洗

    package com.bank.service; import java.io.IOException;import java.text.ParseException;import java.tex ...

  4. MYSQL存储过程,清除指前缀的定表名的数据

    MYSQL存储过程,清除指前缀的定表名的数据 DELIMITER $$ DROP PROCEDURE IF EXISTS `drop_table`$$ ),)) BEGIN ) DEFAULT NUL ...

  5. 我为什么要再给lua写一个json模块

    最近要给自己编写的服务器加上json解析模块.根据我当前的项目,可以预测服务器中使用json的地方: 通信.由于与客户端通信使用google protocolbuffer,仅在与SDK通信中使用jso ...

  6. Highcharts教程2

    参数配置(属性+事件) chart.events.addSeries:添加数列到图表中. chart.events.click:整个图表的绘图区上所发生的点击事件. chart.events.load ...

  7. C语言--对数组地址的解析

    在C编程中,我们进程会用到数组,这看起来很简单,因为,数组就是存储相同类型元素的集合嘛,不过,当你还没考虑到数组的地址问题时,一切都是简单的,如果你接触了数组中的地址概念,也许你会改变你的想法. 下面 ...

  8. INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法

    在安装APK文件时出现类似INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES的提示,同时类似的提示如下: Android Launch! adb is run ...

  9. 遍历Jenkins全部项目的配置

    随着任务的增多.须要一个脚本能够检查全部的jenkins project的配置.比方提取任务计划配置,开发人员信息等. 首先要能够得到全部的project名称. 能够通过REST API实现: htt ...

  10. 服务 IntentService 前台服务 定时后台服务

    Activity public class MainActivity extends ListActivity {     private int intentNumber = 0;     @Ove ...