惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Cloudbric
Cloudbric
C
CERT Recently Published Vulnerability Notes
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
C
Cisco Blogs
T
Tenable Blog
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
I
Intezer
AWS News Blog
AWS News Blog
IT之家
IT之家
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
S
SegmentFault 最新的问题
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Hacker News: Front Page
Latest news
Latest news
Scott Helme
Scott Helme
腾讯CDC
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
S
Securelist
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
Project Zero
Project Zero
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
F
Fortinet All Blogs
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 最新话题
S
Schneier on Security
NISL@THU
NISL@THU
Jina AI
Jina AI
M
MIT News - Artificial intelligence

博客园 - 萧萧空间

Windows 2003,XP安装Windows Phone 7 从海量数据中找出中位数(转) 界面开发(五)--- 界面优化 界面开发(四)--- 还窗体的新面貌 界面开发(三)--- 设置窗体的Region 界面开发(二)--- NativeWindow 界面开发(一)--- Hook所有的窗体 界面开发概述 ExtJs扩展之GroupPropertyGrid ExtJs之带图片的下拉列表框 寻找第K大的数的方法总结 我自己的ColorSpy Office 2010 beta版安装 Java反编译工具JD ExtJs Grid Drag Drap Splash窗体(ProgressWindowForm修改) 异步窗体实现操作进度(ProgressWindow) 线程封装组件(BackgroundWorker)和线程(Thread) 多线程开发
NSIS 的使用心得
萧萧空间 · 2009-11-18 · via 博客园 - 萧萧空间

      最近开发了一个项目,需要做成安装程序给客户,但是使用微软的安装和部署却遇到了很多的问题。而且编译得到的文件非常的大,无奈之余,发现一个很好的安装程序自作软件----NSIS(Nullsoft Scriptable Install System),这是一个基于脚本的安装程序制作工具,不仅使用了安装程序制作向导,而且还可以自定义开发自己的应用,简单而且使用,并且压缩后的文件想当的小,感觉很好,特介绍给大家。

     NSIS的官方地址是:http://nsis.sourceforge.net/Main_Page

     NSIS的下载地址是:http://nsis.sourceforge.net/Download,目前最新的版本为2.45

     NSIS的帮助文档是:http://nsis.sourceforge.net/Docs/,并且在安装中也带有自己的安装文档。

     NSIS的官方定义是:

     NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.

     下面是我使用NSIS的一些体会,NSIS使用非常方便,而且对我这个喜欢编程的人来说更加容易:

     判断DotNetFrameWork是否安装,可以自己添加如下的代码:

     Function IsNetfx35Installed

    ;Check is Net 3.5 is install

    ;Push 0 for true, Pop -1 for false

    ${registry::Read} "HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v3.5" "SP" $R0 $R1

    ${If} $R1 == ""

        Push -1

    ${Else}

        Push 0

    ${EndIf}

  FunctionEnd 

     这是一个定义函数,他首先可以使用${registry::Read}来读取注册表中的值,并放入$R0 $R1,分别是类型和值,判断获取的值是不是为空,就可以判断是不是安装过.NET Framework 3.5了。

     安装.NET Framework 3.5:

  Function InstallDotNetFx

      SetOutPath "$PLUGINSDIR"

      Banner::show /NOUNLOAD "正在安装.NET运行库,请耐心等待..."

      ExecWait '"$EXEDIR\DotNetFX35\dotNetFx35setup.exe"' $0

      pop $0

      ${If} $0 != "0"

          Banner::destroy

          abort

      ${EndIf}

      Banner::destroy

  FunctionEnd

  这是.NET Framework 3.5的安装,我选择了dotNetFx3.5的离线安装包,并将其放在安装文件的目录下,这样可以不把

 .NET Framework 3.5打包到程序中,减少程序的大小。$EXEDIR是NSIS的内部程序常量,可以获取安装文件的目录。而且他还提供了很多的内部宏和常量。

  插件的自作,需要访问已经安装的程序目录,这就要使用对其注册表的方法,将程序的安装目录获取,对于NSIS,这也是相当的简单的。 

  首先在安装目录的最上方:

  InstallDir "$PROGRAMFILES\Test"

  修改为:

  InstallDirRegKey HKLM "SOFTWARE\Test" "Path"

  然后在Function .onInit中添加如下的内容:

    StrCmp $INSTDIR "" 0 Continue

      MessageBox MB_OK|MB_ICONSTOP "Test 未安装,请先安装Test。"

      Abort

   Continue:

  相当的简单。