NSIS学习笔记(转)

2023-05-16

转自:http://blog.csdn.net/lee353086/article/details/45919901

NSIS学习笔记
Date:2015-05-20
Author:kagula
Env:VS2013Update4、nsis-2.46.5-Unicode-setup.exe、CoolSoft_NSISDialogDesigner_1.4.0、eclipse-jee-kepler-SR2-win32、Win7-64bits


设置NSIS环境
Step1:(编译NSIS脚本)

从http://www.scratchpaper.com/网站下载“nsis-2.46.5-Unicode-setup.exe”文件并安装。


Step2:(NSIS脚本语法高亮)
参考资料[3]为Eclipse安装NSIS插件,用来编译NSIS脚本。
[Eclipse main menu]->[Help]->[Install new software...]->type the nsis http address and select component to install.
这里要注意的是
 [1]Eclipse NSIS插件不支持JDK1.8或更高版本。不支持Windows8或更高版本。
 [2]要先建一个空的project,然后通过向导添加NSIS Script会报错。错误信息为空。
 [3]通过向导添加Install Options文件(ini)文件

 输出文件名必须为[/"项目名"/"你文件的事名字"]这种形式,否则会报输出文件名非法的提示。

[4]你可能通过outline子窗口,快速定位NSI脚本中的变量与函数。

现在你可以直接把nsi文件拖入Eclipse中编辑了。
最新版本(不稳定版)可以直接从下面网址下载
https://github.com/henrikor2/eclipsensis


Step3:(自定义GUI)
参考资料[1]下载"CoolSoft_NSISDialogDesigner_1.4.0.exe",我们需要这个工具来自定义安装界面。




最简单的流程是
第一步:先在EclipseNSIS(或其它NSIS脚本编辑器)里把脚本写好.
第二步:启动NSIS compiler。[NSIS Menu]->[Compiler]->[compiler NSI scripts]。
第三步:把nsi文件,拖到NSIS compiler里,NSIS compiler会自动编译,setup.exe的生成。


要使用NSIS首先得学会使用它的脚本语言,NSIS脚本的每一行代表命令,源文件扩展名为nsi,头文件扩展名为.nsh。


一个软件可能有很多组件组成,NSIS用section代表每个组件。示例代码如下:
Section "My Program"
  SetOutPath $INSTDIR
  File "My Program.exe"
  File "Readme.txt"
SectionEnd


下面是一个典型的NSIS示例代码,除了自定义页面风格,该有的都有了。


# All the other settings can be tweaked by editing the !defines at the top of this script  
!define APPNAME       "比价系统"  
!define COMPANYNAME   "浙江天下商邦科技股份有限公司"  
!define SETUPFILENAME "setup.exe"  
!define DESCRIPTION   ""  
  
!define APPEXENAME    "cat8637_priceComparingSystem.exe"  
  
# These three must be integers  
# 这里定义的是安装包的版本,应该和当前主程序(EXE文件)的版本一致  
!define VERSIONMAJOR    2  
!define VERSIONMINOR    0  
!define VERSIONBUILD    0  
!define VERSIONREVISION 0  
  
#定义当前软件(EXE文件)的版本  
!define VERSIONLONG  "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.${VERSIONREVISION}"  
  
#安装程序ico文件名和位置  
!define ICOFILENAME "cat8637_brand2.ico"  
!define ICOFULLPATH "..\PriceComparingSystem\res\${ICOFILENAME}"  
  
# These will be displayed by the "Click here for support information" link in "Add/Remove Programs"  
# It is possible to use "mailto:" links in here to open the email client  
!define HELPURL   "http://www.8637.com/" # "Support Information" link  
!define UPDATEURL "http://www.8637.com/" # "Product Updates" link  
!define ABOUTURL  "http://www.8637.com/" # "Publisher" link  
  
# This is the size (in kB) of all the files copied into "Program Files"  
# issue 目录的大小  
!define INSTALLSIZE 84379885  
   
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)  
    
InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}"  
  
# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n)  
  
#MUI macro define  
!define MUI_PAGE_HEADER_TEXT ${COMPANYNAME}  
!define MUI_PAGE_HEADER_SUBTEXT '${APPNAME} v${VERSIONLONG}'  
!define MUI_ICON ${ICOFULLPATH}  
  
# This will be in the installer/uninstaller's title bar  
Name    "${APPNAME}"  
Icon    "${ICOFULLPATH}"  
outFile "${SETUPFILENAME}"  
;BrandingText '${APPNAME} v${VERSIONLONG}'  
 BrandingText '$0'  
   
!include LogicLib.nsh  
!include nsProcess.nsh  
  
#include custom page reference  
!include "MUI2.nsh"  
!include "nsDialogs.nsh"  
!include "kagulaWelcomePage.nsdinc"  
   
# Just three pages - license agreement, install location, and installation  
#!insertmacro MUI_PAGE_WELCOME  
;Page custom fnc_kagulaWelcomePage_Show  
;page license  
;page directory  
;Page instfiles  
!insertmacro MUI_PAGE_LICENSE "license.rtf"  
!insertmacro MUI_PAGE_DIRECTORY  
!insertmacro MUI_PAGE_INSTFILES  
  
!insertmacro MUI_UNPAGE_CONFIRM  
!insertmacro MUI_UNPAGE_INSTFILES  
!insertmacro MUI_UNPAGE_FINISH  
  
  
!insertmacro MUI_LANGUAGE "SimpChinese"  
  
!macro VerifyUserIsAdmin  
UserInfo::GetAccountType  
pop $0  
${If} $0 != "admin" ;Require admin rights on NT4+  
        messageBox mb_iconstop "需要管理员权限!"  
        setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED  
        quit  
${EndIf}  
!macroend  
   
!include "FileFunc.nsh"  
Var VersionNumber  
  
Function VerCheck  
pop $0  
;${GetFileVersion} "$INSTDIR\${APPEXENAME}" $VersionNumber  
${GetFileVersion} "$0" $VersionNumber  
FunctionEnd  
  
Function VersionCompare  
    !define VersionCompare `!insertmacro VersionCompareCall`  
   
    !macro VersionCompareCall _VER1 _VER2 _RESULT  
        Push `${_VER1}`  
        Push `${_VER2}`  
        Call VersionCompare  
        Pop ${_RESULT}  
    !macroend  
   
    Exch $1  
    Exch  
    Exch $0  
    Exch  
    Push $2  
    Push $3  
    Push $4  
    Push $5  
    Push $6  
    Push $7  
   
    begin:  
    StrCpy $2 -1  
    IntOp $2 $2 + 1  
    StrCpy $3 $0 1 $2  
    StrCmp $3 '' +2  
    StrCmp $3 '.' 0 -3  
    StrCpy $4 $0 $2  
    IntOp $2 $2 + 1  
    StrCpy $0 $0 '' $2  
   
    StrCpy $2 -1  
    IntOp $2 $2 + 1  
    StrCpy $3 $1 1 $2  
    StrCmp $3 '' +2  
    StrCmp $3 '.' 0 -3  
    StrCpy $5 $1 $2  
    IntOp $2 $2 + 1  
    StrCpy $1 $1 '' $2  
   
    StrCmp $4$5 '' equal  
   
    StrCpy $6 -1  
    IntOp $6 $6 + 1  
    StrCpy $3 $4 1 $6  
    StrCmp $3 '0' -2  
    StrCmp $3 '' 0 +2  
    StrCpy $4 0  
   
    StrCpy $7 -1  
    IntOp $7 $7 + 1  
    StrCpy $3 $5 1 $7  
    StrCmp $3 '0' -2  
    StrCmp $3 '' 0 +2  
    StrCpy $5 0  
   
    StrCmp $4 0 0 +2  
    StrCmp $5 0 begin newer2  
    StrCmp $5 0 newer1  
    IntCmp $6 $7 0 newer1 newer2  
   
    StrCpy $4 '1$4'  
    StrCpy $5 '1$5'  
    IntCmp $4 $5 begin newer2 newer1  
   
    equal:  
    StrCpy $0 0  
    goto end  
    newer1:  
    StrCpy $0 1  
    goto end  
    newer2:  
    StrCpy $0 2  
   
    end:  
    Pop $7  
    Pop $6  
    Pop $5  
    Pop $4  
    Pop $3  
    Pop $2  
    Pop $1  
    Exch $0  
FunctionEnd  
  
function .onInit  
    setShellVarContext all  
    !insertmacro VerifyUserIsAdmin  
      
    #check program running.  
    ${nsProcess::FindProcess} ${APPEXENAME} $R0  
    ${If} $R0 == "0"  
        # it's running  
        MessageBox MB_OK "软件正在运行,按确定退出!"  
        Quit  
    ${EndIf}  
      
;    MessageBox MB_OK "当前软件的版本为:${VERSIONLONG}"  
    #check version from custom install place      
    ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "MainProgramLocation"  
    ${If} $0 != ""  
;      MessageBox MB_OK "文件位置:$0"  
      ${If} ${FileExists} $0  
;        #if installed version is greater, return 2          
;        #else if equality, return 0.  
;        #else if less, return 1 and resume install process.  
;        #MessageBox MB_OK "Version=$R0"        
;       MessageBox MB_OK "before push the parameter for VerCheck function.$0"  
       push $0  
       Call VerCheck  
       ${VersionCompare} $VersionNumber ${VERSIONLONG} $R0  
       ${if} $R0 != "1"  
           MessageBox MB_OK "你已经安装同版本或较新版本${APPNAME}软件,按确定退出安装!"  
           Quit   
        ${Endif}  
      ${EndIf}  
;    ${Else}  
;      MessageBox MB_ICONSTOP "Not found"  
    ${EndIf}  
functionEnd  
   
section "install"  
    # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file)  
    setOutPath $INSTDIR  
      
    # Files added here should be removed by the uninstaller (see section "uninstall")  
    File /r "..\issue\"  
    file "${ICOFULLPATH}"  
    # Add any other files for the install directory (license files, app data, etc) here  
   
    # Uninstaller - See function un.onInit and section "uninstall" for configuration  
    writeUninstaller "$INSTDIR\uninstall.exe"  
   
    # Start Menu  
    createDirectory "$SMPROGRAMS\${COMPANYNAME}"  
    createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\${APPEXENAME}" "" "$INSTDIR\${ICOFILENAME}"  
      
    # create a shortcut named "new shortcut" in the start menu programs directory  
    # point the new shortcut at the program uninstaller  
    CreateShortCut "$SMPROGRAMS\${COMPANYNAME}\卸载.lnk" "$INSTDIR\uninstall.exe"  
   
    # Registry information for add/remove programs  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}"  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\${ICOFILENAME}$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "HelpLink" "$\"${HELPURL}$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\""  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.${VERSIONREVISION}$\""  
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR}  
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR}  
      
    # There is no option for modifying or repairing the install  
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1  
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1  
      
    # Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size  
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" ${INSTALLSIZE}  
      
    #Write file install location to register table.  
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "MainProgramLocation" "$INSTDIR\${APPEXENAME}"  
sectionEnd  
   
# Uninstaller  
   
function un.onInit  
    SetShellVarContext all   
   
    #Verify the uninstaller - last chance to back out  
    MessageBox MB_OKCANCEL "确定要移除 ${APPNAME} 吗?" IDOK next  
        Abort  
    next:  
    !insertmacro VerifyUserIsAdmin  
functionEnd  
  
section "uninstall"  
   
    # Remove Start Menu launcher  
    delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk"  
    delete "$SMPROGRAMS\${COMPANYNAME}\卸载.lnk"  
      
    # Try to remove the Start Menu folder - this will only happen if it is empty  
    rmDir "$SMPROGRAMS\${COMPANYNAME}"  
   
    # Remove files  
    delete $INSTDIR\${ICOFILENAME}  
   
    # Always delete uninstaller as the last action  
    delete $INSTDIR\uninstall.exe  
   
    # Try to remove the install directory - this will only happen if it is empty  
    rmDir /r $INSTDIR  
   
    # Remove uninstaller information from the registry  
    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}"  
sectionEnd  
View Code

Q1、中文问题
参考资料[1]里的nsis-3.0b1-setup.exe是不支持中文的,得下载nsis-2.46.5-Unicode-setup.exe。
源文件设为utf-8编码类型。
采用下面的代码测试
     CreateShortCut "$SMPROGRAMS\中文测试.lnk" "$INSTDIR\uninstall.exe"
     MessageBox MB_OK  "中文测试" 
是可以正常显示中文的。


参考下面的代码段,把安装界面弄成中文
!include "MUI2.nsh"
..................
!insertmacro MUI_LANGUAGE "SimpChinese"


Q2、如何测试进程已经运行?
A:需要四个步骤。
第一步:从“http://nsis.sourceforge.net/NsProcess_plugin”下载nsProcess_1_6.7z
第二步:覆盖NSIS Unicode安装目录的目录树
第三步:把当前plugin目录中的nsProcessW.dll文件复制到Plugins目录并重命名为nsProcess.dll。
第四步:参数下面的代码修改即可
    ${nsProcess::FindProcess} "calc.exe" $R0
    ${If} $R0 == "0"
        # it's running
        MessageBox MB_OK "程序已经运行,按确定退出!"
        Quit
    ${EndIf}


Q3、如何使用NSISDialogDesigner
A1:
使用NSISDialogDesigner生成kagulaWelcomePage.nsdinc文件
在你的nsi主文件里,专门放Page命令的地方,添加下面的代码
!include "MUI2.nsh"
!include "nsDialogs.nsh"
!include "kagulaWelcomePage.nsdinc"


Page custom fnc_kagulaWelcomePage_Show
就会显示你自定义的页面,不过你会发现它是在frame里面。


Q4、关于Modern User Interface同NSIS传统的区别
显示license页面,MUI采用下面这行命令:
LicenseData "license.rtf"
page license
MUI方式采用下面这个命令。
!insertmacro MUI_PAGE_LICENSE "license.rtf"

 

Q5 如何实现高压缩比

SetCompressor lzma

 

Q6 NSIS 打包 win7 中无法删除快捷方式

http://www.cnblogs.com/08shiyan/archive/2011/01/10/1931766.html

 

参数资料
[1]NSIS Dialog Designer
http://coolsoft.altervista.org/en/nsisdialogdesigner#download
[2]NSIS home page
http://nsis.sourceforge.net/Main_Page
[3]Eclipse NSIS
http://eclipsensis.sourceforge.net/index.shtml
[4]Auto-uninstall old before installing new
http://nsis.sourceforge.net/Auto-uninstall_old_before_installing_new
[5]NSIS常见问题集锦 推荐新手参考学习
http://www.jb51.net/softjc/33522.html
[6]Unicode NSIS调用nsProcess插件报错
http://tunps.com/nsis-unicode-nsprocess-error
[7]NSIS detection of a 32-bit process in Win 7 x64
http://stackoverflow.com/questions/5353666/nsis-detection-of-a-32-bit-process-in-win-7-x64
[8]NSIS Modern User Interface
http://nsis.sourceforge.net/Docs/Modern%20UI/Readme.html#examples
[9]Customizing an exsisting NSIS MUI2 page
http://stackoverflow.com/questions/6531115/customizing-an-exsisting-nsis-mui2-page
[10]A sample script that uses several cool functions (replace txt, mutually exclusive functions, MUI, patch install, etc.)
http://nsis.sourceforge.net/A_sample_script_that_uses_several_cool_functions_(replace_txt,_mutually_exclusive_functions,_MUI,_patch_install,_etc.)
[11]NSIS 自定义安装界面准确获取安装进度完美解决方案
http://blog.csdn.net/shuijing_0/article/details/8291299
[12]DB 数据库地址及路径配置函数
http://www.cnblogs.com/freeliver54/archive/2010/11/26/1888902.html
[13]NSIS软件安装完成界面添加“设置主页”代码
http://www.veryhuo.com/a/view/40444.html

 

转载于:https://www.cnblogs.com/Yjianyong/p/5200364.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSIS学习笔记(转) 的相关文章

随机推荐

  • k8s中文文档

    k8s概念比较多 xff0c 有什么概念的疑惑的推 荐看k8s中文文档 me的环境 操作系统 xff1a centos7docker xff1a 1 12 6 环境跟me的不一致 xff1f 不要慌 xff0c 基本大部分操作都是行的通的
  • Spring Cloud Feign 请求动态URL

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 FeignClient 中不要写url 使用 64 RequestLine 修饰方法 2 调用地方必须引入 FeignClientConfiguration 必须有De
  • 折半查找:查找成功的最少/多次数、平均次数,查找不成功的最少/多次数、平均次数...

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最方面的方法是建立一个判定树 现在有11个数 xff1a xff08 第1行是索引 xff0c 第2行是数 xff09 0 1 2 3 4 5 6 7 8 9 10 7 1
  • goldengate 认证矩阵matrix

    http www oracle com technetwork middleware ias downloads fusion certification 100350 html 64 more 64 来自 ITPUB博客 xff0c 链接
  • 关于maven打包 “程序包com.sun.deploy.net不存在” 的问题

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 关于maven打包 程序包com sun deploy net不存在 的问题 遇到问题如下 xff1a INFO payGateway 1 0 SNAPSHOT SUCCE
  • 印度理工学院有多难考?

    http app myzaker com news article php pk 61 599546401bc8e08604000085 印度理工学院有多难考 xff1f 何赟08 17 原文是六月高考季时给公众号 34 中印对话 34 x
  • iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结

    今天 我对iOS系统下 的手机屏幕尺寸 分辨率 及系统版本做了一次系统总结 供大家参考 首先 是系统 xff1a 随着iOS 系统不断升级 xff0c 现在已经到iOS7 0了 xff0c 并且TA有了很多新变化 xff0c 最震撼的就是
  • android ViewFlipper的使用

    屏幕切换指的是在同一个Activity内屏幕见的切换 xff0c 最长见的情况就是在一个FrameLayout内有多个页面 xff0c 比如一个系统设置页面 xff1b 一个个性化设置页面 通过查看 OPhone API文档可以发现 xff
  • linux tail命令的使用方法详解

    本文介绍Linux下tail命令的使用方法 linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备 xff0c 通常是终端 xff0c 通俗讲来 xff0c 就是把某个档案文件的最后几行显示到终端上 xff0c 假设该档
  • C/C++中static的用法全局变量与局部变量

    1 什么是static static 是C C 43 43 中很常用的修饰符 xff0c 它被用来控制变量的存储方式和可见性 1 1static的引入 我们知道在函数内部定义的变量 xff0c 当程序执行到它的定义处时 xff0c 编译器为
  • ubuntu apt-get和aptitude 安装软件包

    一 apt get apt get是一条linux命令 xff0c 适用于deb包管理式的操作系统 xff0c 主要用于自动从互联网的软件仓库中搜索 安装 升级 卸载软件或操作系统 什么是apt get编辑 是debian xff0c ub
  • 关于Egret Engine 2.5.3引入GUI模块问题记录

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 基本环境 xff1a Egret Engine 2 5 3 Egret Wing 2 1 使用EgretWing创建Game项目 xff0c 然后需要引入GUI模块 具体引
  • linux brctl command not found

    root 64 localhost brctl bash brctl command not found 解决方法 xff1a root 64 localhost yum install bridge utils
  • 参数LOG_ARCHIVE_MIN_SUCCEED_DEST

    LOG ARCHIVE MIN SUCCEED DEST PropertyDescriptionParameter type IntegerDefault value 1Modifiable ALTER SESSION ALTER SYST
  • Boot loader: Grub入门(转)

    Boot Loader Grub 在看完了前面的整个启动流程 xff0c 以及核心模块的整理之后 xff0c 你应该会发现到一件事情 xff0c 那就是 boot loader 是加载核心的重要工具 啊 xff01 没有 boot load
  • 容器概念与Linux Container原理

    一 容器与LxC 在像KVM等众多主机虚拟化解决方案中 xff0c 对每一个虚拟机实例提供的是从底层硬件开始一直到上层的环境 xff0c 在硬件级进行资源划分 虚拟机的内核是运行在硬件内核之上的 由于每个虚拟实例都有自己的运行内核 xff0
  • springboot security

    Authority 权限 Credential 证书 Grant 授予 Authentication 身份验证 以下 xff0c 我们将通过四步 xff0c 逐步实现spring security的username 43 password身
  • MPEG-4视频编码核心思想

    1 引言 当今时代 xff0c 信息技术和计算机互联网飞速发展 xff0c 在此背景下 xff0c 多媒体信息已成为人类获取信息的最主要载体 xff0c 同时也成为电子信息领域技术开发和研究的热点 多媒体信息经数字化处理后具有易于加密 抗干
  • xss payload

    gt lt SCRIPT gt alert 34 hello 34 lt SCRIPT gt 转载于 https www cnblogs com fanzi2009 archive 2009 08 13 1545474 html
  • NSIS学习笔记(转)

    转自 xff1a http blog csdn net lee353086 article details 45919901 NSIS学习笔记 Date 2015 05 20 Author kagula Env VS2013Update4