<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
       <title>金电下载站 - 安装制作</title>
       <link>http://www.jdxz.com/</link>
       <description>安装制作</description>
       <language>zh-cn</language>
       <generator>Www.Jdxz.Net</generator>
       <copyright>Copyright 2001-2004 www.jdxz.net, All Rights Reserved</copyright>
       <pubDate>2011-5-4 6:11:44</pubDate>
       <item>
           <title>[安装制作]一个硬盘上安装两个Linux操作系统方法</title>
           <link>http://www.jdxz.com//softinfo/5454.html</link>
           <author>佚名</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-3-24 19:14:56</pubDate>
           <comments></comments>
           <description>　1个硬盘已安装Fedora 8 Linux系统，并安装grub引导管理程序，现要在这个硬盘的 
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　空闲分区中安装Fedora 9，操作如下：&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　1.将Fedora-9-i386-DVD.iso文件放到一个Windows Fat32分区（(hd0,4)）的根目录，将这个iso文件中的isolinux目录解压到更目录(hd0,4);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　2.进入Fedora 8 Linux系统,在文件/boot/grub/grub.conf中追加如下内容：&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　title install linux FC9&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;　　root (hd0,4)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　kernel /isolinux/vmlinuz&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　initrd /isolinux/initrd.img&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　3.重新启动机器，选择［install linux FC9］就能开启Fedora9安装程序，当要求选择介质安装源时，选择硬盘。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　说明：&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　1.(hd0,4)是grub对硬盘分区的编号，hd代表硬盘，不管是IDE还是SCSI都用hd表示，0表示第一块硬盘，4表示第五个分区；&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;　　2.若Fedora9安装过程中，选择了更新grub，则grub的启动选择菜单将以Fedora9中的为准。最好更新grub，因为 Fedora9的grub启动配置参数与Fedora8不同。进入Fedora9系统后，将Fedora8的启动配置参数从原grub.conf更新到文件Fedora9中的grub.conf文件。&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]关于安装程序制作的简明教程(二)</title>
           <link>http://www.jdxz.com//softinfo/5449.html</link>
           <author>佚名</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-3-24 18:57:57</pubDate>
           <comments></comments>
           <description>在关于安装程序制作的简明教程(一),我介绍了Inno Setup Compiler汉化版的使用,那在这篇我将完成介绍Install Maker Pro的使用.要是你把Inno Setup Compiler汉化版的使用学懂了,那这篇教程也就作用不会很大了.但为了使整篇文章的完整性我决定把它写下来,再说Install Maker Pro生成的安装界面是传统WIN9X的J.&lt;BR&gt;&lt;BR&gt;◎Install Maker Pro&lt;BR&gt;&lt;BR&gt;这个程序是E文的,但可以输入中文.只是不能修正字体,生成后的安装程序的中文字体不好看.这一点它不如Inno Setup Compiler汉化版.下面是它的界面:(见图1)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842437.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图1&lt;BR&gt;&lt;BR&gt;它的所有操作都在同一个窗口里,要填写的项目在不同的标签.界面很直观.下面还是老样子, 以制作ePSXe1.50汉化版安装程序为例作说明:(见图2)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842699.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图2&lt;BR&gt;&lt;BR&gt;这里是定位你要安装的文件的,在1里填上要安装的文件的所在目录,最好用3处的按纽来浏览.在2处把它打下钩,这样就可以把所有的字目录都包含进去了(这一点做得比Inno Setup Compiler方便).而在4里选择一个文件就可以在File Options里(5处)设置在开始菜单的程序组和桌面快捷方式,还包括设置完成安装后要查看/运行的文件,再有的就是一些高级选项(就是可以装文件设置成安装到WINDOWS,SYSTEM等文件夹里等等).像我那样的设置便是在开始菜单建立一个ePSXe程序组并在里面那立p-epsxe.exe的快捷方式名称为ePSXe1.50汉化版(在4的Options里会出现相应的标志).在5里的Shortcut里则是设置所选文件的桌面快捷方式:(如图3)&lt;BR&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842359.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图3&lt;BR&gt;&lt;BR&gt;那样就是在桌面生成一个p-epsxe.exe的快捷方式名称为ePSXe1.50汉化版.而在View/Run里则可将README.TXT文件设置成安装完成后查看,或安装完成后p-epsxe.exe自动运行.这里我就不放上图片了,自己研究一下,不难的J&lt;BR&gt;&lt;BR&gt;下面便是在Wizard Texts设置安装界面出现的文字了:(见图4)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842827.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图4&lt;BR&gt;&lt;BR&gt;在1处可以选择界面的各页(如欢迎界面,信息界面等,还有那些在安装过程中出错时的提示信息),在3里便可修改出现的文字,里面原先是E文的,你可以照着翻译就可以了.但#title这个宏不要删除也不要修改,它是用来代替2里的文字的J.在4里还可以看到E文的帮助.完成一页后可以按Preview查看效果.然后在1处选下一页:(如图5)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842772.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图5&lt;BR&gt;&lt;BR&gt;将1里的全部项目全部完成后就可以做下一步了:(见图6)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842246.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图6&lt;BR&gt;&lt;BR&gt;这里是设置整个安装界面的,在1里可以将安装界面设置为全屏的(即有背景图片的)或简单的(即只有对话框的).在2里便是设置背景图片,你可以让背景是可爱的MMJ.但只能是BMP文件,后果就是生成的EXE文件大一点.4里则是设置默认安装路径的.5和6则是从注册表项和从INI文件里添加选项的(一般我们的汉化补丁不用设置这两项J).设置好之后也可以按Preview查看结果.&lt;BR&gt;&lt;BR&gt;好了这里设置好后便是Install Info标签了,这个标签是往注册表和INI文件添加项目的, 一般我们的汉化补丁不用设置这个标签,所以这里我没有研究,要是有需要你可以试用一下J.&lt;BR&gt;&lt;BR&gt;往下就是设置UNINSTALL时显示的东东了:(见图7)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185842599.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图7&lt;BR&gt;&lt;BR&gt;这里的1就和图4里的那样,照着E文翻译就行了.在2 里则是设置一些要从注册表里删除的键.完成后就可以进行最后一步了:生成EXE文件!也就是又大功告成了!在BIULD里可以选择生成WIN9X的SETUP文件还是WIN32的SETUP文件,不用说我们要生成的当然是前者了(现在还有多少人用WIN32?).&lt;BR&gt;&lt;BR&gt;好了, Install Maker Pro的使用到这里也就介绍到这了.&lt;BR&gt;&lt;BR&gt;还有就是我介绍的这两个安装程序制作软件在设置好后可以把脚本保存成相应的文件的,可以下次使用时再利用!&lt;BR&gt;&lt;BR&gt;关于安装程序制作的简明教程,到这里我能写的都写完了,其实这两个软件还有很多强大的功能的,只是我在这里没介绍罢了(其实是我菜吗!),剩下的就*各位自己动手了,自力更生,丰衣足食,呵呵...&lt;BR&gt;</description>
       </item>
       <item>
           <title>[安装制作]关于安装程序制作的简明教程(一)</title>
           <link>http://www.jdxz.com//softinfo/5448.html</link>
           <author>佚名</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-3-24 18:55:55</pubDate>
           <comments></comments>
           <description>前段时间我完成了几个软件的汉化,想把它们打包起来,可是苦于我是一个很菜的鸟,很笨的瓜,只好上网找关于安装程序制作的文章.不幸我没能找到:-( 没法只好自己去华军软件园里找找制作安装程序的软件,并一把下载了好多个...&lt;BR&gt;&lt;BR&gt;EasySetup 2.08&lt;BR&gt;CreateInstall&lt;BR&gt;Setup Generator&lt;BR&gt;Installer VISE汉化精简版&lt;BR&gt;Inno Setup Compiler汉化版&lt;BR&gt;Install Maker Pro&lt;BR&gt;...&lt;BR&gt;&lt;BR&gt;经过好长一段时间的学用和试用,发现上面的(包括网上供下载的大部分)制作安装程序的软件好用的也就只有那么几个.对于我来说,比较好用的是:Install Maker Pro和Inno Setup Compiler汉化版,其实那些东东里大多比较适合于E文软件的打包(因为生成的安装程序界面的字体是E文字体,写上中文会显得字体好难看(包括Install Maker Pro).好在Inno Setup Compiler汉化版生成的安装程序的字体是宋体的:-)好看!并且它生成的界面是WIN2000的安装界面.而Install Maker Pro的则是传统的WIN9X界面的.结合易用性和生成效果的比较,我推荐使用Install Maker Pro和Inno Setup Compiler汉化版,而下面的教程将分别介绍这两个软件的使用:&lt;BR&gt;&lt;BR&gt;◎Inno Setup Compiler汉化版&lt;BR&gt;&lt;BR&gt;安装好Inno Setup Compiler汉化版启动软件后的界面(见图1):&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185644417.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图1&lt;BR&gt;&lt;BR&gt;下面我以制作ePSXe1.50汉化版安装程序为例简介制作过程,先将要打包的全部文件放到一个空文件夹里待用.(我的放在: D:\pp-work)&lt;BR&gt;&lt;BR&gt;选择创建新的空白脚本文件,按确定:(见图2)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185644425.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图2&lt;BR&gt;&lt;BR&gt;按下一步:(见图3)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185644339.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图3&lt;BR&gt;&lt;BR&gt;在相应的项目里填上该填的东东,(图里我已填好),按下一步:(图4)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645451.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图4&lt;BR&gt;&lt;BR&gt;不难,同样是在相应的项目填上该填的J,在应用程序基本目的目录的下拉选项里还有一个自定义,也就是自定义安装路径.而像我那样选就是将文件安装到: C:\Program Files\ePSXe里,其他的就相应的填.然后当然是下一步了:&lt;BR&gt;&lt;BR&gt;这一步要注意,在图中的1处填上主程序文件(建议用浏览的方法),然后按添加文件,添加要安装在C:\Program Files\ePSXe里的文件.再按添加目录,(只能一个个添加,要是子目录多就烦了).把要安装的目录全部添加完后,记住一定要编辑所添加的目录,要不全部文件都会安装在C:\Program Files\ePSXe里!步骤是:在2里选添加的目录后按编辑(见图6)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645995.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图6&lt;BR&gt;&lt;BR&gt;在1处填上子止录的名称,在2里还有其它选择,可以将其它的一些文件安装在WINDOWS,SYSTEM等其它目录里(见图7)&lt;BR&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645392.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图7&lt;BR&gt;&lt;BR&gt;其它的目录同样方法设置好,接着当然是下一步:(见图8)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645429.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图8&lt;BR&gt;&lt;BR&gt;这里也是相应的填好,就NEXT:(见图9)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645187.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图9&lt;BR&gt;&lt;BR&gt;一眼明了,不用我讲,填好就NEXT,然后按完成,程式问你是否对脚本进行编译,要你觉得可以了,那就让它编译,就会生成一个SETUP.EXE文件,大功就告成了!若你想修改修改那就按否,可以对脚本进行修改(比如在注册表加信息,在程序组加一个选项等等),当然就要知道它的语法了!一听到语法也许你就怕,其实它的语法是不难的,在帮助里一下就能看明白.只要你学过一点点编程.再说,大部分的东东已自动生成了.正好,我这个例子要在程序组里加一个英文版的快捷方式,且要修改快捷方式的工作目录!要不然,程序在用快捷方式启动后工作不了!(因为此程序要在快捷方式的工作目录里找其它文件!建议制作安装程序都修改工作目录,以免不正常)&lt;BR&gt;&lt;BR&gt;好了,生成的脚本格式在程序里是这样的:(见图10)&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 524px; CURSOR: pointer&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100323/20100323185645715.Jpg&quot; onload=&quot;javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;&quot; border=0 &amp;#111nclick=&quot;javascript:window.open(this.src);&quot; &amp;#111nmousewheel=&quot;return bbimg(this)&quot;&gt;&lt;BR&gt;图10&lt;BR&gt;&lt;BR&gt;可以直接在里面修改,你会看到语法是加亮的J好用吧!好了我们要修改的如下:&lt;BR&gt;&lt;BR&gt;修改前:&lt;BR&gt;...&lt;BR&gt;[Icons]&lt;BR&gt;Name: &quot;{group}\ePSXe 1.50 汉化版&quot;; Filename: &quot;{app}\p-epsxe.exe&quot;&lt;BR&gt;Name: &quot;{userdesktop}\ePSXe 1.50 汉化版&quot;; Filename: &quot;{app}\p-epsxe.exe&quot;; MinVersion: 4,4; Tasks: desktopicon&lt;BR&gt;...&lt;BR&gt;&lt;BR&gt;修改后:&lt;BR&gt;...&lt;BR&gt;[Icons]&lt;BR&gt;Name: &quot;{group}\ePSXe 1.50 汉化版&quot;; Filename: &quot;{app}\p-epsxe.exe&quot;; WorkingDir: &quot;{app}&quot;&lt;BR&gt;Name: &quot;{group}\ePSXe 1.50 英文版&quot;; Filename: &quot;{app}\epsxe.exe&quot;; WorkingDir: &quot;{app}&quot;&lt;BR&gt;Name: &quot;{userdesktop}\ePSXe 1.50 汉化版&quot;; Filename: &quot;{app}\p-epsxe.exe&quot;; MinVersion: 4,4; Tasks: desktopicon; WorkingDir: &quot;{app}&quot;&lt;BR&gt;...&lt;BR&gt;&lt;BR&gt;完成了!编译好就完成了安装程序的制作了!&lt;BR&gt;&lt;BR&gt;至於语法,可在帮助的Inno Setup资料里找到,它说得很详尽,要加东东只要依样画葫芦.如要在注册表加信息:&lt;BR&gt;&lt;BR&gt;...&lt;BR&gt;[Registry] &lt;BR&gt;Root: HKCU; Subkey: &quot;Software\My Company&quot;; Flags: uninsdeletekeyifempty &lt;BR&gt;Root: HKCU; Subkey: &quot;Software\My Company\My Program&quot;; Flags: uninsdeletekey &lt;BR&gt;Root: HKLM; Subkey: &quot;Software\My Company&quot;; Flags: uninsdeletekeyifempty &lt;BR&gt;Root: HKLM; Subkey: &quot;Software\My Company\My Program&quot;; Flags: uninsdeletekey &lt;BR&gt;Root: HKLM; Subkey: &quot;Software\My Company\My Program&quot;; ValueType: string; ValueName: &quot;InstallPath&quot;; ValueData: &quot;{app}&quot;&lt;BR&gt;...&lt;BR&gt;&lt;BR&gt;这样就行了(我也是对着它依样画葫芦画出来的,不过那个Inno Setup资料是E文的,要E文不好那可能看起来吃力点,不过为了学东东可以顶着上,不难的!J)&lt;BR&gt;&lt;BR&gt;好了,谢谢你读我的教程(还是我的第一个呢!),第一篇就到这了,欢迎读我的关于安装程序制作的简明教程(二),到时我将介绍Install Maker Pro的使用了。J&lt;BR&gt;</description>
       </item>
       <item>
           <title>[安装制作]nsis入门精解教程</title>
           <link>http://www.jdxz.com//softinfo/4998.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:30:08</pubDate>
           <comments></comments>
           <description>&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS (Nullsoft Scriptable Install System)是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样，NSIS是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法，但它是为安装程序这类应用所设计的。NSIS脚本通常以 nsi为扩展名，支持include功能，头文件扩展名为nsh。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS的主要特点是：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;nbsp; 开销小，一个完整功能的安装程序仅需要34k的额外开销。 
&lt;LI&gt;&amp;nbsp; 支持大多数Windows平台，包括：Windows 9.x，Windows NT, Windows 2000, Windows XP, Windows 2003 
&lt;LI&gt;&amp;nbsp; 支持三大压缩算法: Zlig, BZips, LZMA 
&lt;LI&gt;&amp;nbsp; 支持脚本 
&lt;LI&gt;&amp;nbsp; 支持多语言 
&lt;LI&gt;&amp;nbsp; 支持安装界面定制 
&lt;LI&gt;&amp;nbsp; 提供可扩展的插件接口 
&lt;LI&gt;&amp;nbsp; 支持网络安装、补丁 
&lt;LI&gt;&amp;nbsp; 支持无人值守的安装模式 
&lt;LI&gt;&amp;nbsp; 此外，NSIS的license允许任何用途免费使用。&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;开发一个NSIS的安装程序通常有以下几步：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;确定安装的功能和界面元素 
&lt;LI&gt;编写NSIS脚本 
&lt;LI&gt;使用NSIS提供的makensis或者makensisw程序，将步骤2编写的脚本编译成可执行的安装程序 
&lt;LI&gt;调试安装程序，如果有问题退到第二步重复&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;随着NSIS的流行，有一些第三方的NSIS脚本开发环境出现了，如HM NIS Edit，Venis IX前者是完全开源的，后者仅对个人和非商业用途免费。在这些集成开发环境下，步骤2，3可以方便的组合在一起。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS脚本的结构&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS脚本(下称nsi脚本)主要包含安装程序属性、页面、区段、函数。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;属性用来定义安装程序的行为和界面风格，这些属性大部分是编译时刻属性，即不能在运行时刻改变。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;页面是指安装程序的向导页面，示例：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Page license&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Page components&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Page directory&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Page instfiles&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;UninstPage uninstConfirm&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;UninstPage instfiles&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;区段是对应某种安装/卸载选项的处理逻辑，该段代码仅当用户选择相应的选项才被执行。卸载程序的区段名用&quot;un.&quot;作为前缀，示例如下：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Section &quot;Installer Section&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Section &quot;un.Uninstaller Section&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务，但最常用的指令是SetOutPath和File，前者用于指定目的位置，后者用于指定文件。示例：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Section &quot;My Program&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; SetOutPath $INSTDIR&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; File &quot;My Program.exe&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; File &quot;Readme.txt&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;区段名的修饰符/o表示该区段默认不选上，-表示隐藏区段(匿名区段也是隐藏区段)，！表示需要粗体显示的区段。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionIn表示该区段和安装类型之间的关系：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionIn insttype_index [insttype_index] ... [RO]&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;RO修饰符表示不可修改。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;子区段用于包含多个区段&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SubSection [/e] Caption [subsection_name index output]&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;修饰符/e用于该子区段的所有区段是否默认展开。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;函数包含了模块化的安装逻辑，在nsi脚本中函数分为两种：用户自定义函数和回调函数。用户自定义函数仅当是Call指令调用时才被执行，如果函数体中没有abort语句，则安装程序执行完了用户自定义函数，继续运行Call语句和指令。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;用户自定义函数的语法如下：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Function &amp;lt;函数名&amp;gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; # some commands&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;FunctionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;函数的调用则使用以下语法：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; Call &amp;lt;函数名&amp;gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;可见无论是函数的定义还是函数的调用都没有参数传递。通常nsi的参数传递是通过堆栈操作Pop,Push和20个寄存器变量$0~$9, $R0~$R9进行的。也可以通过全局变量完成参数传递。如：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Var input ;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Var output ;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Section bla&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; DeteailPrint &quot;input is $input$\n&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; Call square&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; DeteailPrint &quot;square of $input is $output$\n&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;SectionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Function square&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; output = input^2&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;FunctionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;回调函数则是由在特定的时间点触发的程序段。常用的回调函数如.onInit：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Function .onInit&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; MessageBox MB_YESNO &quot;This will install My Program. Do you wish to continue?&quot; IDYES gogogo&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abort&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; gogogo:&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;FunctionEnd&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS对于安装逻辑定义以下回调函数：.onGUIInit、.onInit、.onInstFailed、.onInstSuccess、. onGUIEnd、.onMouseOverSection、.onRebootFailed、.onSelChange、.onUserAbort、. onVerifyInstDir&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS对于卸载逻辑定义以下回调函数：un.onGUIInit、un.onInit、un.onUninstFailed、un.onUninstSuccess、un.onGUIEnd、un.onRebootFailed、un.onUserAbort&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本的变量定义&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本的变量定义用Var关键字，后跟变量名，变量是全局的并且是大小写敏感的。变量引用时需要加上前缀$。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;除了用户自定义的变量外，nsi脚本中与定义寄存器变量$0~$9,$R0~$R9用于参数传递，以及系统变量用于特定用途，这些变量主要有：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;$INSTDIR，$OUTDIR，$CMDLINE，$LANGUAGE这些变量都是可写的。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;$PROGRAMFILES，$COMMONFILES，$DESKTOP，$EXEDIR，${NSISDIR}，$WINDIR，$SYSDIR，$ TEMP，$STARTMENU，$SMPROGRAMS，$SMSTARTUP，$QUICKLAUNCH，$DOCUMENTS，$SENDTO，$ RECENT，$FAVORITES，$MUSIC，$PICTURES，$VIDEOS，$NETHOOD，$FONTS，$TEMPLATES，$ APPDATA，$PRINTHOOD，$INTERNET_CACHE，$COOKIES，$HISTORY，$PROFILE，$ ADMINTOOLS，$RESOURCES，$RESOURCES_LOCALIZED，$CDBURN_AREA，$HWNDPARENT，$ PLUGINSDIR&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本中可用于调试的系统函数有MessageBoxes,DetailPrint,Dumpstate。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本的编译器指令&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本的编译器指令主要指仅在编译时刻执行的命令。这些命令主要用来包含文件、条件化编译、定义常量、定义宏等。定义常量和宏是编译器指令最主要应用。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;定义常量的示例：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;!define VERSION &quot;1.0.3&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Name &quot;My Program ${VERSION}&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;OutFile &quot;My Program Installer - ${VERSION}.exe&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;定义宏的示例：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;!macro MyFunc UN&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Function ${UN}MyFunc&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; Call ${UN}DoRegStuff&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; ReadRegStr $0 HKLM Software\MyProgram key&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&amp;nbsp; DetailPrint $0&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;FunctionEnd &lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Modern UI&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;Modern UI是感观上模仿最新的Windows系统的界面风格，它由欢迎页面、结束页面和其他向导页面构成。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;插件&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi支持插件，通过插件可以方便的扩展NSIS安装程序的功能。NSIS插件是用C++,Delphi等语言编写的dll，在nsi脚本中调用nsi中的函数使用如下语法：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;DLLName::FunctionName &quot;参数1&quot; &quot;参数2&quot; &quot;参数3&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;示例1：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsExec::ExecToLog '&quot;${NSISDIR}\makensis.exe&quot; /CMDHELP'&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;执行makensis.exe命令，显示该命令用法。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;示例2：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;InstallOptions::dialog &quot;$PLUGINSDIR\test.ini&quot;&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;显示对话框&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;示例3：&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;下载文件&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;NSIS搜索插件的策略&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;默认情况下NSIS在其安装目录的子目录Plugins中搜索插件，用户可以使用!addplugindir指定增加插件的目录位置。&lt;/P&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;nsi脚本的基本语法&lt;BR&gt;注释&lt;BR&gt;单行注释用井号&quot;#&quot;或分号&quot;;&quot;，跨行注释用可以用c/C++中注释语法。&lt;BR&gt;&lt;BR&gt;数据类型&lt;BR&gt;数字&lt;BR&gt;&amp;nbsp;&amp;nbsp; 数字常量可以用十进制、十六进制(0x为前缀)、八进制(0为前缀)表示，颜色用类似html的中RGB表示法，但去井号&quot;#&quot;。&lt;BR&gt;字符串&lt;BR&gt;&amp;nbsp;&amp;nbsp; 字符串常量可以用引号引用，转意字符用&quot;$\&quot;作前缀。美元符号、常用转意字符换行、回车、制表符的nsi语法表示分别为：$$,$\n,$\r,$\t&lt;BR&gt;续行符&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nsi脚本用行尾的反斜杠&quot;\&quot;表示下一行和当前行逻辑上是同一行&lt;BR&gt;默认头文件&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果在makensis同目录下有nsisconf.nsh文件，该文件会被自动包含，除非编译时指定/NOCONFIG选项&lt;BR&gt;&lt;BR&gt;标号&lt;BR&gt;&amp;nbsp;&amp;nbsp; nsi使用GOTO语句和IfErrors, MessageBox, IfFileExists及StrCmp进行程序控制流表示，标号是这些语句的目标语句。标号定义的语法：&lt;BR&gt;&amp;nbsp;&amp;nbsp; 标号：语句&lt;BR&gt;&amp;nbsp;&amp;nbsp; 标号必须定义在函数和区段中，其作用范围仅限于定义它的区段或函数。以点号&quot;.&quot;开头的标号是全局标号。&lt;BR&gt;相对跳转&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nsi脚本常常使用相对跳转表示条件分枝，其语法是[+-][1-9]，加号表示从当前位置往前跳转，减号则表示从当前位置往后跳转。数字表示跳转的语句条数。示例： &lt;SPAN&gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;Goto +4&lt;BR&gt;&amp;nbsp;MessageBox MB_OK &quot;The following message will be skipped&quot;&lt;BR&gt;&amp;nbsp;Goto +3&lt;BR&gt;&amp;nbsp;MessageBox MB_OK &quot;You will never ever see this message box&quot;&lt;BR&gt;&amp;nbsp;Goto -3&lt;BR&gt;&amp;nbsp;MessageBox MB_OK &quot;Done&quot;&lt;BR&gt;&lt;BR&gt;页面&lt;BR&gt;向导页面是NSIS安装程序中最重要的界面元素，在nsi脚本中可以使用NSIS内置页面或者定制界面，通过脚本可以指定页面的顺序、显示样子和行为。 Page指令用来定义安装程序中的页面，UninstPage用来定义，此外PageEx指令提供类是功能，但提供更多选项。页面的顺序和它在nsi脚本中出现的次序一致。&lt;BR&gt;示例：&lt;BR&gt;&amp;nbsp;Page license&lt;BR&gt;&amp;nbsp;Page components&lt;BR&gt;&amp;nbsp;Page directory&lt;BR&gt;&amp;nbsp;Page instfiles&lt;BR&gt;&amp;nbsp;UninstPage uninstConfirm&lt;BR&gt;&amp;nbsp;UninstPage instfiles&lt;BR&gt;规定安装程序首先显示license页面，然后显示components选择页面，接着显示安装目录选择页面。&lt;BR&gt;&lt;BR&gt;页面选项&lt;BR&gt;不同的页面有不同的选项:&lt;BR&gt;License page有LicenseText,LicenseData,LicenseForceSelection;&lt;BR&gt;Components selection页面有ComponentText;&lt;BR&gt;Directory selection页面有DirText,DirVar(仅能在PageEx中使用),DirVerify;&lt;BR&gt;Un/Installation log页面有DetailsButtonText,CompletedText;&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-INDENT: 2em&quot;&gt;&lt;BR&gt;Uninstall confirmation页面有DirVar(仅能在PageEx中使用),UninstallText&lt;BR&gt;对于内置的Page，NSIS支持三个回调函数用于定制界面和验证，对于自定义页面NSIS支持两个回调函数。&lt;BR&gt;&lt;BR&gt;Page指令语法&lt;BR&gt;Page licensecomponentsdirectoryinstfilesuninstConfirm) [pre_function] [show_function] [leave_function]&lt;BR&gt;或者：&lt;BR&gt;Page custom [creator_function] [leave_function] [caption]&lt;BR&gt;示例：&lt;BR&gt;&amp;nbsp;Page license skipLicense &quot;&quot; stayInLicense&lt;BR&gt;&amp;nbsp;Page custom customPage &quot;&quot; &quot;: custom page&quot;&lt;BR&gt;&amp;nbsp;Page instfiles&lt;BR&gt;&lt;BR&gt;&amp;nbsp;Function skipLicense&lt;BR&gt;&amp;nbsp;&amp;nbsp; MessageBox MB_YESNO &quot;Do you want to skip the license page?&quot; IDNO no&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abort&lt;BR&gt;&amp;nbsp;&amp;nbsp; no:&lt;BR&gt;&amp;nbsp;FunctionEnd&lt;BR&gt;&lt;BR&gt;&amp;nbsp;Function stayInLicense&lt;BR&gt;&amp;nbsp;&amp;nbsp; MessageBox MB_YESNO &quot;Do you want to stay in the license page?&quot; IDNO no&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abort&lt;BR&gt;&amp;nbsp;&amp;nbsp; no:&lt;BR&gt;&amp;nbsp;FunctionEnd&lt;BR&gt;&lt;BR&gt;&amp;nbsp;Function customPage&lt;BR&gt;&amp;nbsp;&amp;nbsp; GetTempFileName $R0&lt;BR&gt;&amp;nbsp;&amp;nbsp; File /oname=$R0 customPage.ini&lt;BR&gt;&amp;nbsp;&amp;nbsp; InstallOptions::dialog $R0 &lt;SPAN&gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; Pop $R1&lt;BR&gt;&amp;nbsp;&amp;nbsp; StrCmp $R1 &quot;cancel&quot; done&lt;BR&gt;&amp;nbsp;&amp;nbsp; StrCmp $R1 &quot;back&quot; done&lt;BR&gt;&amp;nbsp;&amp;nbsp; StrCmp $R1 &quot;success&quot; done&lt;BR&gt;&amp;nbsp;&amp;nbsp; error: MessageBox MB_OKMB_ICONSTOP &quot;InstallOptions error:$\r$\n$R1&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp; done:&lt;BR&gt;&amp;nbsp;FunctionEnd&lt;BR&gt;&amp;nbsp;&lt;BR&gt;UninstPage指令语法&lt;BR&gt;UninstPage custom [creator_function] [leave_function] [caption]&lt;BR&gt;&amp;nbsp; OR&lt;BR&gt;UninstPage (licensecomponentsdirectoryinstfilesuninstConfirm) [pre_function] [show_function] [leave_function]&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;PageEx语法&lt;BR&gt;&amp;nbsp; PageEx使用嵌套结构，比如：&lt;BR&gt;&amp;nbsp;PageEx license&lt;BR&gt;&amp;nbsp;&amp;nbsp; LicenseText &quot;Readme&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp; LicenseData readme.rtf&lt;BR&gt;&amp;nbsp;&amp;nbsp; PageCallbacks licensePre licenseShow licenseLeave&lt;BR&gt;&amp;nbsp;PageExEnd&lt;BR&gt;&lt;BR&gt;常用的nsi指令&lt;BR&gt;nsi大致可以分为基本指令、注册表及ini操作指令、通用指令、流程控制指令、文件操作指令、卸载指令、字符串处理指令、多语言支持指令、重启指令。&lt;BR&gt;&lt;BR&gt;以下是常用的基本指令：&lt;BR&gt;Delete&lt;BR&gt;Delete [/REBOOTOK] file&lt;BR&gt;&lt;BR&gt;Exec &lt;BR&gt;Exec command&lt;BR&gt;&lt;BR&gt;ExecShell&lt;BR&gt;ExecShell action command [parameters] [SW_SHOWNORMAL SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_HIDE]ExecShell &quot;open&quot; 示例&lt;A href=&quot;http://nsis.sf.net/&quot;&gt;http://nsis.sf.net/&lt;/A&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;BR&gt;ExecWait&lt;BR&gt;ExecWait command [user_var(exit code)]&lt;BR&gt;示例：&lt;BR&gt;ExecWait '&quot;$INSTDIR\someprogram.exe&quot;'&lt;BR&gt;ExecWait '&quot;$INSTDIR\someprogram.exe&quot;' $0&lt;BR&gt;DetailPrint &quot;some program returned $0&quot;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;File&lt;BR&gt;File [/nonfatal] [/a] ([/r] [/x filewildcard [...]] (filewildcard) [...] /oname=file.dat infile.dat)&lt;BR&gt;/r选项用作递归模式，/x用于排出文件&lt;BR&gt;示例：&lt;BR&gt;File something.exe&lt;BR&gt;File /a something.exe&lt;BR&gt;File *.exe&lt;BR&gt;File /r *.dat&lt;BR&gt;File /r data&lt;BR&gt;File /oname=$TEMP\temp.dat somefile.ext&lt;BR&gt;File /nonfatal &quot;a file that might not exist&quot;&lt;BR&gt;File /r /x CVS myproject&lt;BR&gt;File /r /x *.res /x *.obj /x *.pch source&lt;BR&gt;&lt;BR&gt;Rename&lt;BR&gt;Rename [/REBOOTOK] source_file dest_file&lt;BR&gt;&lt;BR&gt;RMDir&lt;BR&gt;RMDir [/r] [/REBOOTOK] directory_name&lt;BR&gt;&lt;!-- google_ad_section_end --&gt;&lt;/DIV&gt;
&lt;H1&gt;NSIS System 插件&lt;/H1&gt;
&lt;P&gt;&lt;EM&gt;(C) brainsucker (Nik Medved), 2002&lt;/EM&gt; &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;内容表&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;简介&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;有效函数&lt;/FONT&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;内存相关函数&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;调用函数&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;64 位函数 &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;FAQ&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;简介&lt;/H2&gt;
&lt;P&gt;System 插件给开发者提供了从外部 DLL 调用任何函数的功能。例如，你可以用它来调用 &lt;FONT color=#1f3a87&gt;GetLogicalDriveStrings&lt;/FONT&gt; 来获取用户电脑里的驱动器列表。&lt;/P&gt;
&lt;P&gt;fortime.net&lt;/P&gt;
&lt;P&gt;System 插件也允许开发者来分配、释放、复制内存；与 COM 对象相配合并执行 64 位整数数学操作。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;为了理解 System 插件强烈推荐首先有程序方面的知识。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;H4&gt;档案里的一些使用例子&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;Get local time&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;Register conduits with Palm HotSync&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;Get free memory&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;Read REG_MULTI_SZ&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT color=#1f3a87&gt;Get disk serial number&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;有效函数&lt;/H2&gt;
&lt;H3&gt;内存相关函数&lt;/H3&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Alloc&lt;/STRONG&gt; &lt;EM&gt;SIZE&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;分配 &lt;EM&gt;SIZE&lt;/EM&gt; 字节并返回一个内存地址到堆栈上。 &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Alloc&lt;/STRONG&gt; 64  Pop $0  DetailPrint &quot;64 字节分配在 $0&quot;  System::Free $0   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;LI&gt;&lt;STRONG&gt;Copy&lt;/STRONG&gt; [/&lt;EM&gt;SIZE&lt;/EM&gt;] &lt;EM&gt;DESTINATION&lt;/EM&gt; &lt;EM&gt;SOURCE&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;从 &lt;EM&gt;SOURCE&lt;/EM&gt; 复制 &lt;EM&gt;SIZE&lt;/EM&gt; 字节到 &lt;EM&gt;DESTINATION&lt;/EM&gt;。如果不指定 &lt;EM&gt;SIZE&lt;/EM&gt;，&lt;EM&gt;SOURCE &lt;/EM&gt;的大小必须使用 GlobalSize。这意味着如果你不使用 System::Alloc，System::Call 或 GlobalAllocCopies 来分配&lt;EM&gt; SOURCE&lt;/EM&gt;，你就必须指定 &lt;EM&gt;SIZE&lt;/EM&gt;。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# 分配一个缓冲区并把‘测试字串'压入  System::Call &quot;*(&amp;amp;t1024 '测试字串', i 5) i .s&quot;  Pop $0  # 复制到一个自动创建的缓冲区  System::&lt;STRONG&gt;Copy&lt;/STRONG&gt; 0 $0  Pop $1  # 在 $1 缓冲区获取字串和整数  System::Call &quot;*$1(&amp;amp;t1024 .r2, i .r3)&quot;  # 释放缓冲区  System::Free $1  # 输出结果  DetailPrint $2  DetailPrint $3  # 复制到我们自己的缓冲区  System::Alloc 1028  Pop $1  System::&lt;STRONG&gt;Copy&lt;/STRONG&gt; $1 $0  # 在 $1 缓冲区获取字串和整数  System::Call &quot;*$1(&amp;amp;t1024 .r2, i .r3)&quot;  # 释放  System::Free $0  System::Free $1  # 输出结果  DetailPrint $2  DetailPrint $3   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;LI&gt;&lt;STRONG&gt;Free&lt;/STRONG&gt; &lt;EM&gt;ADDRESS&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;释放&lt;EM&gt;ADDRESS&lt;/EM&gt;. &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Alloc 64  Pop $0  DetailPrint &quot;64 字节分配在 $0&quot;  System::&lt;STRONG&gt;Free&lt;/STRONG&gt; $0   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;LI&gt;&lt;STRONG&gt;Store&lt;/STRONG&gt; &quot;&lt;EM&gt;OPERATION&lt;/EM&gt; [&lt;EM&gt;OPERATION&lt;/EM&gt; [&lt;EM&gt;OPERATION&lt;/EM&gt; ...]]&quot; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;执行堆栈操作。一个操作可以从 NSIS 堆栈压入或弹出一个已注册的变量或者压入弹出所有系统已注册的变量 ($0 - $9 和 $R0 - $R9)。操作可以由任何字符分割。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;H4&gt;有效的操作&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;要压入 $&lt;EM&gt;#&lt;/EM&gt;，使用 p&lt;EM&gt;#&lt;/EM&gt;，&lt;EM&gt;#&lt;/EM&gt; 是一个从 0 到 9 的数字。 
&lt;LI&gt;要弹出 $&lt;EM&gt;#&lt;/EM&gt;，使用 r&lt;EM&gt;#&lt;/EM&gt;，&lt;EM&gt;#&lt;/EM&gt; 是一个从 0 到 9 的数字。 
&lt;LI&gt;要压入 $R&lt;EM&gt;#&lt;/EM&gt;，使用 P&lt;EM&gt;#&lt;/EM&gt;，&lt;EM&gt;#&lt;/EM&gt; 是一个从 0 到 9 的数字。 
&lt;LI&gt;要弹出 $R&lt;EM&gt;#&lt;/EM&gt;，使用 R&lt;EM&gt;#&lt;/EM&gt;，&lt;EM&gt;#&lt;/EM&gt; 是一个从 0 到 9 的数字。 
&lt;LI&gt;要压入 $0-$9 和 $R0-$R9 到系统私有的堆栈，使用 s 或 S。 
&lt;LI&gt;要从系统私有的堆栈弹出 $0-$9 和 $R0-$R9 使用 l 或 L。&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;注意系统私有堆栈当 System 插件从 NSIS 卸载后将会丢失。如果你想使用它，你就必须保持 System 插件一直载入。你可以在你的脚本里使用 SetPluginUnload 或加 /NOUNLOAD 参数来使得插件不卸载。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;StrCpy $0 &quot;test&quot;  System::&lt;STRONG&gt;Store&lt;/STRONG&gt; &quot;p0&quot;  Pop $1  DetailPrint &quot;$0 = $1&quot;   &lt;P&gt;fortime.net&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;StrCpy $2 &quot;test&quot;  System::&lt;STRONG&gt;Store&lt;/STRONG&gt; &quot;p2 R2&quot;  DetailPrint &quot;$2 = $R2&quot;   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;StrCpy $3 &quot;test&quot;  System::&lt;STRONG&gt;Store&lt;/STRONG&gt; /NOUNLOAD &quot;s&quot;  StrCpy $3 &quot;another test&quot;  System::&lt;STRONG&gt;Store&lt;/STRONG&gt; &quot;l&quot;  DetailPrint $3   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Store&lt;/STRONG&gt; &quot;r4&quot; &quot;test&quot;  DetailPrint $4   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;H3&gt;调用函数&lt;/H3&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Call&lt;/STRONG&gt; &lt;EM&gt;PROC&lt;/EM&gt; [( &lt;EM&gt;PARAMS&lt;/EM&gt; ) [&lt;EM&gt;RETURN&lt;/EM&gt; [? &lt;EM&gt;OPTIONS&lt;/EM&gt;]]] 
&lt;LI&gt;&lt;STRONG&gt;Get&lt;/STRONG&gt; &lt;EM&gt;PROC&lt;/EM&gt; [( &lt;EM&gt;PARAMS&lt;/EM&gt; ) [&lt;EM&gt;RETURN&lt;/EM&gt; [? &lt;EM&gt;OPTIONS&lt;/EM&gt;]]] 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;调用和获取都是共用一个语法。就如名称所述， Call 就是调用 Get 就是获取。它要调用什么或获取什么？由 &lt;EM&gt;PROC&lt;/EM&gt; 的值决定。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;PARAMS&lt;/EM&gt; 是一个参数列表和要和他们做什么。你可以在参数里传递数据并且也可以从它们那里获取数据。这些参数列表由逗号分隔。每个参数由三个值组合而成: 类型、源、目标。类型可以是一个整数，一个字串，等等。源，就是参数值的源，可以是一个 NSIS 变量($0、$1、$INSTDIR)，NSIS 堆栈，一个具体的值(5、&quot;test&quot;，等等)或空(NULL)。目标，就是调用返回后的参数值，可以是 NSIS 变量，NSIS 堆栈或空(意味着该输出不需要)。如果不需要源或目标的话可以用一个句点表示(.)。 &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;RETURN&lt;/EM&gt; 像一个单一参数的定义，但当创建回调函数时仅使用到源。通常源是一个句点。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;OPTIONS&lt;/EM&gt; 是一个 System 插件行为控制方法的选项列表。每一个选项可以由一个感叹号前缀关闭。例如: &lt;STRONG&gt;?!e&lt;/STRONG&gt;。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;PARAMS&lt;/EM&gt;，&lt;EM&gt;RETURN&lt;/EM&gt; 和 &lt;EM&gt;OPTIONS&lt;/EM&gt; 在一个 Get/Call 行里可以重复多次。当重复时，可以省略很多，而只需要使用你需要改变的。类型，源 和/或目标可以省略每一个参数，即使返回值。选项可以添加或移除。这允许你来定义函数原型并保存为一些类型。&lt;FONT color=#1f3a87&gt;最后的两个例子&lt;/FONT&gt; 作了演示。 &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;PROC&lt;/EM&gt; 也可以重复但必须带井号前缀(#)。 &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;可能的 &lt;EM&gt;PROC&lt;/EM&gt; 值和意义&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;值&lt;/TH&gt;
&lt;TH&gt;意义&lt;/TH&gt;
&lt;TH&gt;例子&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;DLL&lt;/EM&gt;::&lt;EM&gt;FUNC&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;DLL 输出的函数&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;user32::MessageBox&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;::&lt;EM&gt;ADDR&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;地址为 ADDR 的函数&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;*&lt;EM&gt;ADDR&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;地址为 ADDR 的结构&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;*&lt;/TH&gt;
&lt;TD&gt;新结构&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;IPTR&lt;/EM&gt;-&amp;gt;&lt;EM&gt;IDX&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;成员索引 IDX 从界面由 IPTR 指向&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;lt;nothing&amp;gt;&lt;/TH&gt;
&lt;TD&gt;新的回调函数&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;PROC&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;由 Get 返回的 &lt;EM&gt;PROC&lt;/EM&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#1f3a87&gt;看下面&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;有效的参数类型&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;类型&lt;/TH&gt;
&lt;TH&gt;意义&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;v&lt;/TH&gt;
&lt;TD&gt;void (常用于返回)&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;i&lt;/TH&gt;
&lt;TD&gt;int (包括 char、byte、short、句柄、指针 等)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;l&lt;/TH&gt;
&lt;TD&gt;长整数、int64&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;t&lt;/TH&gt;
&lt;TD&gt;文本，字串(指向第一个字符)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;w&lt;/TH&gt;
&lt;TD&gt;WCHAR 文本，Unicode 字串&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;g&lt;/TH&gt;
&lt;TD&gt;GUID&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;k&lt;/TH&gt;
&lt;TD&gt;回调&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;v&lt;EM&gt;N&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;&lt;EM&gt;N&lt;/EM&gt; 字节填充 (仅结构)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;i&lt;EM&gt;N&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;&lt;EM&gt;N&lt;/EM&gt; 字节整数 (仅结构)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;l&lt;/TH&gt;
&lt;TD&gt;结构大小 (仅结构)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;t&lt;EM&gt;N&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;&lt;EM&gt;N&lt;/EM&gt; 字节文本 (仅结构)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;w&lt;EM&gt;N&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;&lt;EM&gt;N&lt;/EM&gt; 字节 Unicode 文本 (仅结构)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&amp;amp;g&lt;EM&gt;N&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;&lt;EM&gt;N&lt;/EM&gt; 字节 GUID (仅结构)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;另外，每一种类型可以加一个星号表示指针。当使用一个星号时，System 插件仍然认为是参数的值，而不是指针地址。要传递直接的地址，使用没有星号的 i。一个&lt;FONT color=#1f3a87&gt;使用例子&lt;/FONT&gt;。&lt;FONT color=#1f3a87&gt;Alloc&lt;/FONT&gt; 返回地址并且它的返回值因此被用于 i，不带星号。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;有效的源和目标&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;类型&lt;/TH&gt;
&lt;TH&gt;意义&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;.&lt;/TH&gt;
&lt;TD&gt;忽略&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;number&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;十六进制、十进制或八进制整数值。许多整数可以使用 来执行或操作。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;'&lt;EM&gt;string&lt;/EM&gt;'&lt;BR&gt;&quot;&lt;EM&gt;string&lt;/EM&gt;&quot;&lt;BR&gt;`&lt;EM&gt;string&lt;/EM&gt;`&lt;/TH&gt;
&lt;TD&gt;字串值&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;r0&lt;/EM&gt; 到 &lt;EM&gt;r9&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;分别是 $0 到 $9&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;&lt;EM&gt;r10&lt;/EM&gt; 到&lt;EM&gt;r19&lt;/EM&gt;&lt;BR&gt;&lt;EM&gt;R0&lt;/EM&gt; 到&lt;EM&gt;R9&lt;/EM&gt;&lt;/TH&gt;
&lt;TD&gt;分别是 $R0 到 $R9&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;c&lt;/TH&gt;
&lt;TD&gt;$CMDLINE&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;d&lt;/TH&gt;
&lt;TD&gt;$INSTDIR&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;o&lt;/TH&gt;
&lt;TD&gt;$OUTDIR&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;e&lt;/TH&gt;
&lt;TD&gt;$EXEDIR&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;a&lt;/TH&gt;
&lt;TD&gt;$LANG&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;s&lt;/TH&gt;
&lt;TD&gt;NSIS 堆栈&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;n&lt;/TH&gt;
&lt;TD&gt;空的源，目标不需要输出&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;回调&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;回调函数是一个被传递到一个函数并被它本身回调的简单的函数。它们常用于一项接一项传递一个可能的大量数据设置。例如: &lt;FONT color=#1f3a87&gt;EnumChildWindows&lt;/FONT&gt; 使用一个&lt;FONT color=#1f3a87&gt;回调函数&lt;/FONT&gt;。像 NSIS 函数不是完全正规的函数一样，System 插件提供它自己的机制来支持回调函数。它允许你来创建回调函数并当一个回调函数被调用时通知你。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;回调函数的创建使用 &lt;FONT color=#1f3a87&gt;Get&lt;/FONT&gt; 和回调的语法。就像你不能调用回调本身一样，参数的源应该使用一个句点来忽略。当回调被调用时，目标参数将使用回调传递的参数来填充。回调将要返回的值由源返回参数设置。目标的返回参数应总是设为当 System 通知回调被调用时。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Get &quot;(i .r0, i .r1) iss&quot; &lt;SPAN&gt;&lt;/SPAN&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;要传递回调到一个函数，请使用 k 类型。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Get &quot;(i .r0, i .r1) isR0&quot;  Pop $0  System::Call &quot;dll::UseCallback(k r0)&quot; &lt;SPAN&gt;&lt;/SPAN&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;每次回调被调用时，字串 callback# (这里 # 代表回调的次数) 将会被在返回 “参数” 的目标里被替换，第一次创建的为 1，第二次为 2，第三次为 3 等等。就如 System 为单线程一样，回调也只能在调用另一个参数时被调用。例如，EnumChildWindows 的回调也只能在 EnumChildWindows 被调用时被调用。因此你应该在每次可能会调用回调的函数调用后检测 callback#。 &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Call &quot;(i .r0, i .r1) isR0&quot;  Pop $0  System::Call &quot;dll::UseCallback(k r0)&quot;  StrCmp $R0 &quot;callback1&quot; 0 +2  DetailPrint &quot;UseCallback passed ($0, $1) to the callback&quot;   &lt;SPAN&gt;&lt;/SPAN&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;在你处理回调的调用后，你应该使用 &lt;FONT color=#1f3a87&gt;Call&lt;/FONT&gt;，把 &lt;FONT color=#1f3a87&gt;Get&lt;/FONT&gt; - 回调 返回的值传给它。这将告诉 System 从回调里返回。如果当回调创建时为返回的参数指定了源，你应当把返回值赋给源。因为回调不能自动的释放，所以当你使用完之后不要忘了释放它。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;SetPluginUnload alwaysoff  System::Call &quot;(i .r0, i .r1) isR0&quot;  Pop $0  System::Call &quot;dll::UseCallback(k r0)&quot;  loop:   StrCmp $R0 &quot;callback1&quot; 0 done   DetailPrint &quot;UseCallback passed ($0, $1) to the callback&quot;   Push 1 # return value of the callback   System::Call $0 # tell system to return from the callback   Goto loop  done:  SetPluginUnload manual  System::Free $0   &lt;SPAN&gt;fortime.net&lt;/SPAN&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;一个完整的&lt;FONT color=#1f3a87&gt;例子&lt;/FONT&gt;。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;注意事项&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;要查找一个 COM 界面的成员索引，你需要查找 Visual C/C++ 或平台 SDK 里的 COM 界面头文件定义。记住索引从零开始。 
&lt;LI&gt;记住当使用回调时记得使用 NSIS 的 /NOUNLOAD 开关或 SetPluginUnload。因为如果插件被卸载了它就不能被正常调用了。 
&lt;LI&gt;如果找不到函数则会把一个 A 附加在函数名的后面，然后再次查找函数。这是因为许多的 Windows API 函数都有两个版本，一个是 ANSI 版本另一个是 Unicode 版本，ANSI 版本标记为 A 而 Unicode 版本标记为 W。例如: lstrcpyA 和 lstrcpyW。&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;有效的选项&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH width=41&gt;选项&lt;/TH&gt;
&lt;TH width=491&gt;意义&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;c&lt;/TH&gt;
&lt;TD&gt;cdecl 调用约定 (堆栈由 caller 重建)。默认情况下使用 stdcall (堆栈由 callee重建)。&lt;/TD&gt;
&lt;TD width=7&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;r&lt;/TH&gt;
&lt;TD&gt;总是返回 (对于 GET 来说意味着你应该弹出结果并处理，对于 CALL 来说应该至少弹出结果)。默认情况下仅对错误返回 (对于 GET 来说你可以弹出错误结果和正确的处理，而对于 CALL 来说你将获得返回或定义的地方的结果)。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;n&lt;/TH&gt;
&lt;TD&gt;不重新定义。无论过程如何都不会用 GET 或 CALL 来重新定义。该选项不会继承到子项。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;s&lt;/TH&gt;
&lt;TD&gt;使用常规堆栈。对于函数调用无论何时第一次回调定义的系统都优先使用临时堆栈。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;e&lt;/TH&gt;
&lt;TD&gt;在程序结束后调用Call GetLastError() 并把结果压入堆栈。&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;u&lt;/TH&gt;
&lt;TD&gt;调用后卸载 DLL (使用 FreeLibrary，使你可以删除它本身)。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;user32::MessageBox(i $HWNDPARENT, t 'NSIS System Plug-in', t 'Test', i 0)&quot;   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;kernel32::GetModuleHandle(t 'user32.dll') i .s&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;kernel32::GetProcAddress(i s, t 'MessageBoxA') i .r0&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;::$0(i $HWNDPARENT, t 'GetProcAddress test', t 'NSIS System Plug-in', i 0)&quot;   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Get&lt;/STRONG&gt; &quot;user32::MessageBox(i $HWNDPARENT, t 'This is a default text', t 'Default', i 0)&quot;  Pop $0  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;$0&quot;   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Get&lt;/STRONG&gt; &quot;user32::MessageBox(i $HWNDPARENT, t 'This is a default text', \   t 'Default', i 0x10x10)&quot;  Pop $0  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;$0(, 'This is a System::Get test', 'NSIS System Plug-in',)&quot;   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2&quot;  DetailPrint &quot;User name - $0&quot;  DetailPrint &quot;String length - $1&quot;  DetailPrint &quot;Return value - $2&quot;   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Alloc 4  Pop $0  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;*$0(i 5)&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;*$0(i .r1)&quot;  DetailPrint $1   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;*(i 5) i .r0&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;*$0(i .r1)&quot;  DetailPrint $1   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# defines  !define CLSCTX_INPROC_SERVER 1  !define CLSID_ActiveDesktop {75048700-EF1F-11D0-9888-006097DEACF9}  !define IID_IActiveDesktop {F490EB00-1240-11D1-9888-006097DEACF9}  # create IActiveDesktop interface  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;ole32::CoCreateInstance( \   g '${CLSID_ActiveDesktop}', i 0, \   i ${CLSCTX_INPROC_SERVER}, \   g '${IID_IActiveDesktop}', *i .r0) i.r1&quot;  StrCmp $1 0 0 end  # call IActiveDesktop-&amp;gt;GetWallpaper  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;$0-&amp;gt;4(w .r2, i ${NSIS_MAX_STRLEN}, i 0)&quot;  # call IActiveDesktop-&amp;gt;Release  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;$0-&amp;gt;2()&quot;  # print result  DetailPrint $2  end:   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;InitPluginsDir  SetOutPath $PLUGINSDIR  File MyDLL.dll  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;MyDLL::MyFunc(i 5) ? u&quot;  Delete $PLUGINSDIR\MyDLL.dll   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;SetPluginUnload alwaysoff  System::&lt;STRONG&gt;Get&lt;/STRONG&gt; &quot;(i.r1, i) iss&quot;  Pop $R0  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;user32::EnumChildWindows(i $HWNDPARENT, k R0, i) i.s&quot;  loop:   Pop $0   StrCmp $0 &quot;callback1&quot; 0 done   System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;user32::GetWindowText(ir1,t.r2,i${NSIS_MAX_STRLEN})&quot;   System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;user32::GetClassName(ir1,t.r3,i${NSIS_MAX_STRLEN})&quot;   IntFmt $1 &quot;0x%X&quot; $1   DetailPrint &quot;$1 - [$3] $2&quot;   Push 1 # callback's return value   System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;$R0&quot;   Goto loop  done:  SetPluginUnload manual  System::Free $R0   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;!define MB &quot;user32::MessageBox(i$HWNDPARENT,t,t'NSIS System Plug-in',i0)&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;${MB}(,'my message',,)&quot;  System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;${MB}(,'another message',,) i.r0&quot;  MessageBox MB_OK &quot;last call returned $0&quot;   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Call&lt;/STRONG&gt; &quot;user32::SendMessage(i $HWNDPARENT, t 'test', t 'test', i 0) i.s ? \   e (,t'test replacement',,) i.r0 ? !e #user32::MessageBox&quot;  DetailPrint $0  ClearErrors  Pop $0  IfErrors good  MessageBox MB_OK &quot;this message box will never be reached&quot;  good:   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;H3&gt;64 位函数&lt;/H3&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; &lt;EM&gt;ARG1&lt;/EM&gt; &lt;EM&gt;OP&lt;/EM&gt; [&lt;EM&gt;ARG2&lt;/EM&gt;] 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;执行 &lt;EM&gt;ARG1&lt;/EM&gt; 和选项 &lt;EM&gt;ARG2 &lt;/EM&gt;之间的 &lt;EM&gt;OP&lt;/EM&gt; 操作，返回值到堆栈顶。&lt;EM&gt;ARG1&lt;/EM&gt; 和 &lt;EM&gt;ARG2&lt;/EM&gt; 都是 64 位整数，这意味着它们可以处理从 -2^63 到 2^63 - 1 的整数。&lt;/P&gt;
&lt;P&gt;fortime.net&lt;/P&gt;
&lt;H4&gt;有效的运算符&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;加法 -- &lt;STRONG&gt;+&lt;/STRONG&gt; 
&lt;LI&gt;减法 -- &lt;STRONG&gt;-&lt;/STRONG&gt; 
&lt;LI&gt;乘法 -- &lt;STRONG&gt;*&lt;/STRONG&gt; 
&lt;LI&gt;除法 -- &lt;STRONG&gt;/&lt;/STRONG&gt; 
&lt;LI&gt;取模 -- &lt;STRONG&gt;%&lt;/STRONG&gt; 
&lt;LI&gt;位或 -- &lt;STRONG&gt;&lt;/STRONG&gt;
&lt;LI&gt;位与 -- &lt;STRONG&gt;&amp;amp;&lt;/STRONG&gt; 
&lt;LI&gt;位异或 -- &lt;STRONG&gt;^&lt;/STRONG&gt; 
&lt;LI&gt;逻辑或 -- &lt;STRONG&gt;&lt;/STRONG&gt;
&lt;LI&gt;逻辑与 -- &lt;STRONG&gt;&amp;amp;&amp;amp;&lt;/STRONG&gt; 
&lt;LI&gt;小于 -- &lt;STRONG&gt;&amp;lt;&lt;/STRONG&gt; 
&lt;LI&gt;大于 -- &lt;STRONG&gt;&amp;gt;&lt;/STRONG&gt; 
&lt;LI&gt;等于 -- &lt;STRONG&gt;=&lt;/STRONG&gt; 
&lt;LI&gt;位非 (单变量) -- &lt;STRONG&gt;~&lt;/STRONG&gt; 
&lt;LI&gt;逻辑非 (单变量) -- &lt;STRONG&gt;!&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;使用例子&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 5 + 5  Pop $0  DetailPrint &quot;5 + 5 = $0&quot; # 10   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 64 - 25  Pop $0  DetailPrint &quot;64 - 25 = $0&quot; # 39   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 526355 * 1565487  Pop $0  DetailPrint &quot;526355 * 1565487 = $0&quot; # 824001909885   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 5498449498849818 / 3  Pop $0  DetailPrint &quot;5498449498849818 / 3 = $0&quot; # 1832816499616606   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 0x89498A198E4566C % 157  Pop $0  DetailPrint &quot;0x89498A198E4566C % 157 = $0&quot; # 118   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 0xF0F0F0F  0xF0F0FFF  Pop $0  # IntFmt is 32-bit, this is just for the example  IntFmt $0 &quot;0x%X&quot; $0  DetailPrint &quot;0xF0F0F0F  0xF0F0FFF = $0&quot; # 0xF0F0FFF   &lt;DIV&gt;&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 0x12345678 &amp;amp; 0xF0F0F0F0  Pop $0  # IntFmt is 32-bit, this is just for the example  IntFmt $0 &quot;0x%X&quot; $0  DetailPrint &quot;0x12345678 &amp;amp; 0xF0F0F0F0 = $0&quot; # 0x10305070   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 1 ^ 0  Pop $0  DetailPrint &quot;1 ^ 0 = $0&quot; # 1   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 1  0  Pop $0  DetailPrint &quot;1  0 = $0&quot; # 1   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 1 &amp;amp;&amp;amp; 0  Pop $0  DetailPrint &quot;1 &amp;amp;&amp;amp; 0 = $0&quot; # 0   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 9302157012375 &amp;lt; 570197509190760  Pop $0  DetailPrint &quot;9302157012375 &amp;lt; 570197509190760 = $0&quot; # 1   &lt;DIV&gt;fortime.net&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 5168 &amp;gt; 89873  Pop $0  DetailPrint &quot;5168 &amp;gt; 89873 = $0&quot; # 0   &lt;P&gt;&lt;/P&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 189189 = 189189  Pop $0  DetailPrint &quot;189189 = 189189 = $0&quot; # 1   &lt;DIV&gt;fortime.net&lt;/DIV&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 156545668489 ~  Pop $0  DetailPrint &quot;1 ~ = $0&quot; # -156545668490   &lt;SPAN&gt;&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::&lt;STRONG&gt;Int64Op&lt;/STRONG&gt; 1 !  Pop $0  DetailPrint &quot;1 ! = $0&quot; # 0   &lt;SPAN&gt;fortime.net&lt;/SPAN&gt;
						&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;H2&gt;FAQ&lt;/H2&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; 如何把一个结构传递到函数？ 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; 首先，你必须先为结构分配内存。有两种方法: 使用 &lt;FONT color=#1f3a87&gt;Alloc&lt;/FONT&gt; 或带有特殊结构分配语法的 &lt;FONT color=#1f3a87&gt;Call&lt;/FONT&gt;。然后，如果你要在结构传递数据，你首先要把数据填入结构体。然后你才可以用一个指向结构的指针来调用函数。最后，调用函数后如果你想从结构体里取出数据，你必须使用带有结构指针的 &lt;FONT color=#1f3a87&gt;Call&lt;/FONT&gt;。上面这些都做完了之后别忘了释放结构体。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;H4&gt;分配内存&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;要分配内存给结构体请使用&lt;FONT color=#1f3a87&gt;Alloc&lt;/FONT&gt;，但是你必须知道结构体的大小。当然你也可以用&lt;FONT color=#1f3a87&gt;Call&lt;/FONT&gt;。在这个例子里可以很明显地看出这个结构体的大小是 16 字节，但是在其他的例子可能就不是这样子了。在所有的例子里，结构体的地址都被保存在堆栈顶部，你需要用 Pop 来把它弹出到变量。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Alloc 16   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Call &quot;*(i, i, i, t)i.s&quot;   &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;设置数据&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;写入数据可以使用&lt;FONT color=#1f3a87&gt;Call&lt;/FONT&gt;。可以在分配内存时就进行，或者用其它方法分配后使用带结构指针的语法。&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;System::Call &quot;*(i 5, i 2, i 513, t 'test')i.s&quot;   &lt;DIV&gt;&lt;/DIV&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# 假设结构体的内存地址保存在 $0 里  System::Call &quot;*$0(i 5, i 2, i 513, t 'test')&quot;   &lt;P&gt;&lt;/P&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;把结构体传递到函数&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;就像一些分配方法返回一个地址一样，这里要传递的数据类型应该是一个整数 - 一个保存了结构体地址的整数。 &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# 假设结构体的内存地址保存在 $0 里  System::Call &quot;dll::func(i r0)&quot;   &lt;SPAN&gt;&lt;/SPAN&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;读取数据&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;读取数据可以使用和写入数据相同的语法。说不同的是要有输出变量而输入部分用一个句点来表示。 &lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# 假设结构体的内存地址保存在 $0 里  System::Call &quot;*$0(i .r0, i .r1, i .r2, t .r3)&quot;  DetailPrint &quot;第一个整数 = $0&quot;  DetailPrint &quot;第二个整数 = $1&quot;  DetailPrint &quot;第三个整数 = $2&quot;  DetailPrint &quot;字串 = $3&quot;   &lt;P&gt;&lt;/P&gt;
							&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;释放内存&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;使用&lt;FONT color=#1f3a87&gt;Free&lt;/FONT&gt; 来释放内存。 &lt;FONT color=#ffffff&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;# 假设结构体的内存地址保存在 $0 里  System::Free $0   &lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS简介</title>
           <link>http://www.jdxz.com//softinfo/4997.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:24:43</pubDate>
           <comments></comments>
           <description>&lt;H1&gt;nsis&lt;/H1&gt;
&lt;DIV id=lemmaContent&gt;　　NSIS（Nullsoft Scriptable Install System）是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样，NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS 的脚本语言和通常的编程语言有类似的结构和语法，但它是为安装程序这类应用所设计的。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt; 
&lt;DIV style=&quot;PADDING-BOTTOM: 3px; FLOAT: right; VISIBILITY: visible&quot; class=text_pic&gt;&lt;IMG class=editorImg title=&quot;呵呵 这个是的&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122022907200.jpg&quot;&gt; 
&lt;H3 style=&quot;WIDTH: 96px&quot;&gt;呵&lt;WBR&gt;呵&lt;WBR&gt; &lt;WBR&gt;这&lt;WBR&gt;个&lt;WBR&gt;是&lt;WBR&gt;的&lt;WBR&gt;&lt;/H3&gt;&lt;/DIV&gt;1. NSIS的主要特点：&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—开销小，一个完整功能的安装程序仅需要 34k 的额外开销。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持大多数 Windows 平台，包括：Windows 9.x，Windows NT，Windows 2000，Windows XP，Windows 2003 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持三大压缩算法：Zlig，BZips， LZMA &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持脚本&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持多语言&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持安装界面定制&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—提供可扩展的插件接口&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持网络安装、补丁&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—支持无人值守的安装模式&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—此外，NSIS的license允许任何用途免费使用。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;2. 开发一个NSIS的安装程序通常有以下几步：&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—确定安装的功能和界面元素 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—编写 NSIS 脚本 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—使用 NSIS 提供的 makensis 或者 makensisw 程序，将步骤 2 编写的脚本编译成可执行的安装程序 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—调试安装程序，如果有问题退到第二步重复 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　—随着 NSIS 的流行，有一些第三方的 NSIS 脚本开发环境出现了，如 HMNISEdit，Venis IX。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　前者是完全开源的，后者仅对个人和非商业用途免费。在这些集成开发环境下，步骤2，3可以方便的组合在一起。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;3. NSIS 脚本的结构&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.1 NSIS 脚本（下称 nsi 脚本）主要包含安装程序属性、页面、区段、函数。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　属性用来定义安装程序的行为和界面风格，这些属性大部分是编译时刻属性，即不能在运行时刻改变。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　页面是指安装程序的向导页面。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page license &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page components &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page directory &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page instfiles &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage uninstConfirm &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage instfiles&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.2 区段是对应某种安装/卸载选项的处理逻辑，该段代码仅当用户选择相应的选项才被执行。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　卸载程序的区段名用&quot;un.&quot;作　为前缀。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Section &quot;Installer Section&quot;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Section &quot;un.Uninstaller Section&quot;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.3 在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　但最常用的指令是 SetOutPath 和 File。前者用于指定目的位置，后者用于指定文件。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Section &quot;My Program&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SetOutPath $INSTDIR &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File &quot;My Program.exe&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File &quot;Readme.txt&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.4 区段名的修饰符“/o”表示该区段默认不选上，“-”表示隐藏区段（匿名区段也是隐藏区段），“!”表示需要粗体显示的区段。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionIn 表示该区段和安装类型之间的关系： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionIn insttype_index [RO] &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　RO 修饰符表示不可修改。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.5 子区段用于包含多个区段：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SubSection [/e] Caption [subsection_name index output]&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　修饰符“/e”用于该子区段的所有区段是否默认展开。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　3.6 函数包含了模块化的安装逻辑，在 nsi 脚本中函数分为两种：用户自定义函数和回调函数。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　用户自定义函数仅当是 Call 指令调用时才被执行。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　如果函数体中没有abort语句，则安装程序执行完了用户自定义函数，继续运行 Call 语句和指令。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　用户自定义函数的语法如下：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function &amp;lt;函数名&amp;gt; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　# some commands &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　函数的调用则使用以下语法：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Call &amp;lt;函数名&amp;gt; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　可见无论是函数的定义还是函数的调用都没有参数传递。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　通常 nsi 的参数传递是通过堆栈操作 Pop，Push 和 20 个寄存器变量 $0～$9、$R0～$R9 进行的。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　也可以通过全局变量完成参数传递。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　如：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Var input ; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Var output ; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Section bla &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　DeteailPrint &quot;input is $input$\n&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Call square &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　DeteailPrint &quot;square of $input is $output$\n&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　SectionEnd &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function square &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　output = input^2 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　回调函数则是由在特定的时间点触发的程序段。常用的回调函数如 .onInit：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function .onInit &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_YESNO &quot;This will install My Program. Do you wish to continue?&quot; IDYES gogogo &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Abort &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　gogogo: &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　NSIS 对于安装逻辑定义以下回调函数：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onGUIInit&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onInit&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onInstFailed&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onInstSuccess&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　. onGUIEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onMouseOverSection&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onRebootFailed&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onSelChange&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onUserAbort&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　.onVerifyInstDir&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　NSIS 对于卸载逻辑定义以下回调函数：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onGUIInit&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onInit&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onUninstFailed&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onUninstSuccess&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onGUIEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onRebootFailed&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　un.onUserAbort&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;4. nsi 脚本的变量定义&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 脚本的变量定义用 Var 关键字，后跟变量名，变量是全局的并且是大小写敏感的。变量引用时需要加上前缀“$”。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　除了用户自定义的变量外，nsi 脚本中与定义寄存器变量 $0～$9、$R0～$R9 用于参数传递，以及系统变量用于特定用途。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　这些变量主要有： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$INSTDIR，$OUTDIR，$CMDLINE，$LANGUAGE 这些变量都是可写的。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$PROGRAMFILES，$COMMONFILES，$DESKTOP，$EXEDIR，$WINDIR，$SYSDIR，$ TEMP，$STARTMENU&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$SMPROGRAMS，$SMSTARTUP，$QUICKLAUNCH，$DOCUMENTS，$SENDTO，$ RECENT，$FAVORITES&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$MUSIC，$PICTURES，$VIDEOS，$NETHOOD，$FONTS，$TEMPLATES，$ APPDATA，$PRINTHOOD&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$INTERNET_CACHE，$COOKIES，$HISTORY，$PROFILE，$ ADMINTOOLS，$RESOURCES&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　$RESOURCES_LOCALIZED，$CDBURN_AREA，$HWNDPARENT，$PLUGINSDIR。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 脚本中可用于调试的系统函数有 MessageBoxes、DetailPrint、Dumpstate。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;5. nsi脚本的编译器指令&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 脚本的编译器指令主要指仅在编译时刻执行的命令。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　这些命令主要用来包含文件、条件化编译、定义常量、定义宏等。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　定义常量和宏是编译器指令最主要应用。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　定义常量的示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　!define VERSION &quot;1.0.3&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Name &quot;My Program $&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　OutFile &quot;My Program Installer - $.exe&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　定义宏的示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　!macro MyFunc UN &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function $MyFunc &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Call $DoRegStuff &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ReadRegStr HKLM Software\MyProgram key &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　DetailPrint &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;6. Modern UI&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Modern UI 是感观上模仿最新的 Windows 系统的界面风格，它由欢迎页面、结束页面和其他向导页面构成。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;7. 插件&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 支持插件，通过插件可以方便的扩展 NSIS 安装程序的功能。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　NSIS 插件是用 C++、Delphi 等语言编写的 dll，在 nsi 脚本中调用 nsi 中的函数使用如下语法： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　DLLName::FunctionName &quot;参数1&quot; &quot;参数2&quot; &quot;参数3&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例1：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsExec::ExecToLog '&quot;$\makensis.exe&quot; /CMDHELP'&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　执行makensis.exe命令，显示该命令用法。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例2：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　InstallOptions::dialog &quot;$PLUGINSDIR\test.ini&quot;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　显示对话框 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例3： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　下载文件&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;8. NSIS 搜索插件的策略&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　默认情况下 NSIS 在其安装目录的子目录 Plugins 中搜索插件，用户可以使用 !addplugindir 指定增加插件的目录位置。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;9. nsi 脚本的基本语法&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.1 注释&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　单行注释用井号“#”或分号“;”，跨行注释用可以用“C/C++”中注释语法。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2 数据类型&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2.1 数字&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　数字常量可以用十进制、十六进制（0x为前缀）、八进制（0为前缀）表示。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　颜色用类似 HTML 的中 RGB 表示法，但去　井号“#”。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2.2 字符串&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　字符串常量可以用引号引用，转意字符用&quot;$\&quot;作前缀。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　美元符号、常用转意字符换行、回车、制表符的nsi语法表示分别为：$$,$\n,$\r,$\t &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2.3 续行符&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 脚本用行尾的反斜杠“\”表示下一行和当前行逻辑上是同一行。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2.4 默认头文件&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　如果在makensis同目录下有nsisconf.nsh文件，该文件会被自动包含，除非编译时指定/NOCONFIG选项。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.2.5 标号&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 使用 GOTO 语句和 IfErrors、MessageBox、IfFileExists 及 StrCmp 进行程序控制流表示，标号是这些语句的目标语句。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　标号定义的语法：标号：语句&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　标号必须定义在函数和区段中，其作用范围仅限于定义它的区段或函数。以点号“.”开头的标号是全局标号。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　9.3 相对跳转 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 脚本常常使用相对跳转表示条件分枝，其语法是 [+-][1-9]，加号表示从当前位置往前跳转，减号则表示从当前位置往后跳转。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　数字表示跳转的语句条数。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Goto +4 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_OK &quot;The following message will be skipped&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Goto +3 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_OK &quot;You will never ever see this message box&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Goto -3 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_OK &quot;Done&quot;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;10. 页面&lt;/B&gt;&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　向导页面是 NSIS 安装程序中最重要的界面元素，在 nsi 脚本中可以使用 NSIS 内置页面或者定制界面，通过脚本可以指定页面的顺序、显示样子和行为。Page指令用来定义安装程序中的页面，UninstPage用来定义，此外PageEx指令提供类是功能，但提供更多选项。页面的顺序和它在nsi脚本中出现的次序一致。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page license &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page components &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page directory &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page instfiles &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage uninstConfirm &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage instfiles&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　规定安装程序首先显示license页面，然后显示components选择页面，接着显示安装目录选择页面。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　10.1 页面选项&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　不同的页面有不同的选项：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　License page 有 LicenseText、LicenseData、LicenseForceSelection；&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Components selection 页面有 ComponentText；&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Directory selection 页面有 DirText、DirVar (仅能在 PageEx 中使用)、DirVerify；&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Un/Installation log 页面有 DetailsButtonText、CompletedText；&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Uninstall confirmation 页面有 DirVar (仅能在 PageEx 中使用)、UninstallText。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　对于内置的 Page，NSIS 支持三个回调函数用于定制界面和验证，对于自定义页面 NSIS 支持两个回调函数。 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page 指令语法：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function] &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　或者：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page custom [creator_function] [leave_function] [caption] &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page license skipLicense &quot;&quot; stayInLicense &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page custom customPage &quot;&quot; &quot;: custom page&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Page instfiles&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function skipLicense &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_YESNO &quot;Do you want to skip the license page?&quot; IDNO no &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Abort &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　no: &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function stayInLicense &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　MessageBox MB_YESNO &quot;Do you want to stay in the license page?&quot; IDNO no &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Abort &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　no: &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Function customPage &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　GetTempFileName $R0 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /oname=$R0 customPage.ini &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　InstallOptions::dialog $R0 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Pop $R1 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　StrCmp $R1 &quot;cancel&quot; done &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　StrCmp $R1 &quot;back&quot; done &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　StrCmp $R1 &quot;success&quot; done &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　error: MessageBox MB_OK|MB_ICONSTOP &quot;InstallOptions error:$\r$\n$R1&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　done: &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　FunctionEnd &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage 指令语法&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage custom [creator_function] [leave_function] [caption] &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　或&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　UninstPage (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function] &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　PageEx 语法&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　PageEx 使用嵌套结构，比如：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　PageEx license &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　LicenseText &quot;Readme&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　LicenseData readme.rtf &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　PageCallbacks licensePre licenseShow licenseLeave &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　PageExEnd&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　&lt;B&gt;11. 常用的 nsi 指令&lt;/B&gt; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　nsi 大致可以分为基本指令、注册表及 ini 操作指令、通用指令、流程控制指令、文件操作指令、卸载指令、字符串处理指令、多语言支持指令、重启指令。&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　以下是常用的基本指令：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(1) Delete：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Delete [/REBOOTOK] file &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(2) Exec：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Exec command &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(3) ExecShell：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ExecShell action command [parameters] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]ExecShell &quot;open&quot; 示例&quot;http://nsis.sf.net/&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ExecWait &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ExecWait command &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ExecWait '&quot;$INSTDIR\someprogram.exe&quot;' &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　ExecWait '&quot;$INSTDIR\someprogram.exe&quot;' &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　DetailPrint &quot;some program returned &quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(4) File：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File [/nonfatal] [/a] ([/r] [/x file|wildcard [...]] (file|wildcard) [...] | /oname=file.dat infile.dat) &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　/r选项用作递归模式，/x用于排出文件 &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　示例： &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File something.exe &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /a something.exe &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File *.exe &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /r *.dat &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /r data &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /oname=$TEMP\temp.dat somefile.ext &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /nonfatal &quot;a file that might not exist&quot; &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /r /x CVS myproject &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　File /r /x *.res /x *.obj /x *.pch source &lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(5) Rename：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　Rename [/REBOOTOK] source_file dest_file&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　(6) RMDir：&lt;BR&gt;
&lt;DIV class=spctrl&gt;&lt;/DIV&gt;　　RMDir [/r] [/REBOOTOK] directory_name&lt;BR&gt;&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS 常用小问题合集</title>
           <link>http://www.jdxz.com//softinfo/4996.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:21:57</pubDate>
           <comments></comments>
           <description>&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 在安装过程中按“取消”的话，会弹出是否终止安装的确认窗口，请问怎样设置可以让这个窗口不要出现，按“取消”就直接退出呢？&lt;BR&gt;&lt;BR&gt;答： !define MUI_ABORTWARNING&amp;nbsp;&amp;nbsp;把这句去掉就可以了....&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如图所示的地方，现在显示的是“setup 将安装...”，除了用自定义字串来修改这个地方以外，如何把这个setup搞成其他的？比如“安装程序现在将...” &lt;BR&gt;&lt;BR&gt;答： DirText &quot;安装程序将安装 $(^NameDA) 在下列文件夹。要安装到不同文件夹，单击 [浏览(B)] 并选择其他的文件夹。 $_CLICK&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/20_172815_gd6jpost81083037723.gif&quot; width=503 onload=javascript:DrawImage(this) height=359&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何定义欢迎页面的标题字体大小。如下图所示，图三红色框内的标题字体。&lt;BR&gt;&lt;BR&gt;答： 使用以下脚本&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!define MUI_PAGE_CUSTOMFUNCTION_SHOW ChageFONT&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!insertmacro MUI_PAGE_WELCOME&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Function ChageFONT&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　GetDlgItem $0 $MUI_HWND 1201&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　createFont $1 &quot;Tahoma&quot; &quot;11&quot; &quot;700&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　SendMessage $0 ${WM_SETFONT} $1 0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FunctionEnd&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/20_175059_41s7snap.GIF&quot; width=503 onload=javascript:DrawImage(this) height=358&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 添加版本号&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIProductVersion &quot;1.2.3.4&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;ProductName&quot; &quot;Test Application&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;Comments&quot; &quot;A test comment&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;CompanyName&quot; &quot;Fake company&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;LegalTrademarks&quot; &quot;Test Application is a trademark of Fake company&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;LegalCopyright&quot; &quot;?Fake company&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;FileDescription&quot; &quot;Test Application&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;VIAddVersionKey /LANG=${LANG_ENGLISH} &quot;FileVersion&quot; &quot;1.2.3&quot;&lt;BR&gt;在脚本中加入上面的代码，则为 NSIS 生成的 exe 添加版本信息。&lt;BR&gt;问题就是，能否让属性中语言显示为“中文（中国）”？如附图1&lt;BR&gt;&lt;BR&gt;答： 中文 ID 是 2052。 把 ${LANG_ENGLISH} 改为 2052。&lt;BR&gt;&lt;BR&gt;问： 用 2052 之后确实变成“中文（中国）”了。但其他内容仍旧是乱码，不知有什么办法可以解决吗？如附图2&lt;BR&gt;&lt;BR&gt;答： 版本信息设置语句，放在 !insertmacro MUI_LANGUAGE 的后面，NSIS 要注重次序的。如果使用古典界面，放在 LoadLanguageFile &quot;${NSISDIR}\Contrib\Language files\SimpChinese.nlf&quot; 的后面。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/20_192053_vslzasnap.GIF&quot; width=367 onload=javascript:DrawImage(this) height=459&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/20_192225_rogvasnap.GIF&quot; width=367 onload=javascript:DrawImage(this) height=459&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何禁止显示如附图中的 banner 。&lt;BR&gt;&lt;BR&gt;答： 图示的效果是因为安装程序初始化的时候，也就是 .onInit 函数里需要用到某个文件的时候安装程序需要搜索整个数据区块来把它解压出来，当安装程序比较大的时候搜索比较费时，这个时候才显示解压百分比。一般都是用 ReserveFile 来避开这种搜索。&lt;BR&gt;比如 Function .onInit 里有&lt;BR&gt;&amp;nbsp;&amp;nbsp;InitPluginsDir&lt;BR&gt;&amp;nbsp;&amp;nbsp;File &quot;/oname=$PLUGINSDIR\io.ini&quot; &quot;.\io.ini&quot;&lt;BR&gt;或者其他类似的话，安装程序就需要搜索并解压这个文件&lt;BR&gt;一般在脚本头部加 &lt;BR&gt;&amp;nbsp;&amp;nbsp;ReserveFile &quot;.\io.ini&quot;&lt;BR&gt;这样 io.ini 就保存在数据区块的尾部，安装程序初始化的时候就不用搜索整个数据区块了，相当于加快了安装程序的启动速度。&lt;BR&gt;&lt;BR&gt;问： 根据以上方法使用了，确实不会再出现初始化的对话框了，但是在自定义的 InstallOptions 页显示前，程序还是会停顿一段时间，请问这是为何？如何避免？ &lt;BR&gt;&lt;BR&gt;答： 某些控件比较消耗时间的，比如显示 ICON、位图 等，如果 InstallOptions 里含有这些控件可能会停顿。如果 InstallOptions 是第一个页面的话还要把 InstallOptions.dll 加入到 ReserveFile 参数里。再或者就是进入 InstallOptions 的时候含有比较复杂的指令，比如循环等。&lt;BR&gt;一般在加入&amp;nbsp;&amp;nbsp;ReserveFile ${NSISDIR}\Plugins\InstallOptions.dll 既可避免。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/20_200407_52t9asnap.GIF&quot; width=257 onload=javascript:DrawImage(this) height=74&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何运行一个安装文件 .inf &lt;BR&gt;&lt;BR&gt;答： ExecWait &quot;RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 关联文件图标后，图标没变化。&lt;BR&gt;&lt;BR&gt;答： 刷新图标用， System::Call shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 我用NSIS做好了一个安装程序，因为数据较多，一共有400多M，用的LZMA压缩方式，做好后的安装程序约200M，但是我发现在运行这个安装程序时会在系统TEMP目录产生一个同安装后的全部内容同样大的临时文件（一边运行一边加大，最后到400多M去了），如果我做的程序小倒没什么，可是这个程序有400多M，除了要写入安装的数据外还要同样大小的空间放临时文件，这样子也实在是太花不来，&lt;BR&gt;我想请问：有什么办法能让其在安装时不使用这么多的临时空间吗？安装的脚本是用HM NIS Edit的向导生成的。&lt;BR&gt;&lt;BR&gt;答： 这是因为 NSIS 在用 LZMA 时采用了固实压缩，何谓固实压缩，其实就是把所有文件统一起来压缩，所以这样压出来的文件更加的小，同时也带来了一个问题，安装解压的时候，在临时文件夹中生成一个临时文件，随着安装的进程逐渐增大，到最后，需要临时文件会变成跟原安装程序一样大，也就是说，需要原安装程序 2 倍的空间才可以安装这个程序，所以对于安装大量文件时，这是不适合的。&lt;BR&gt;NSIS 2.07 版本之前 LZMA 算法是固实压缩的，没有非固实的选项，如果需要这样做，只有下载非固实压缩的编译器，但是 2.07 后的 NSIS 的 LZMA 压缩已经改为默认非固实压缩了，所以这个问题同时也不再存在。如果在制作少量文件的安装时，仍然想取用固实压缩可以加入 /SOLID 参数。像这样： SetCompressor /SOLID lzma&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 能不能在 Section 区段中实现读取INI文件状态来安装。&lt;BR&gt;如图所示，若选中单选框1则安装1中定义的文件。若不选中则不安装。若选中单选框2则安装2定义的文件。若不选则不安装。&lt;BR&gt;&lt;BR&gt;答： 使用以下代码，&lt;BR&gt;&amp;nbsp;&amp;nbsp;!include LogicLib.nsh&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section -post&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetOutPath $INSTDIR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE &quot;info.ini&quot; &quot;Field 2&quot; &quot;State&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${If} $INI_VALUE = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileA.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileB.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${EndIf}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE &quot;info.ini&quot; &quot;Field 3&quot; &quot;State&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${If} $INI_VALUE = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileA.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${EndIf}&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;BR&gt;或者使用以下代码，&lt;BR&gt;&amp;nbsp;&amp;nbsp;!include LogicLib.nsh&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section -post&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetOutPath $INSTDIR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE &quot;info.ini&quot; &quot;Field 2&quot; &quot;State&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${If} $INI_VALUE = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;选中时执行的代码&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileA.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileB.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${Else}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;不选中时执行的代码&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /a &quot;.\file\fileA.exe&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${EndIf}&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/21_120621_tqixasnap.GIF&quot; width=378 onload=javascript:DrawImage(this) height=39&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 在 NSIS 中如何设置工作目录，例如一些文件的快捷方式，还有安装完一个软件后运行一个程序，而这个程序需要检测当前工作目录下的某个文件，这时候设置工作目录尤为重要，否则程序不能正常运行。&lt;BR&gt;&lt;BR&gt;答： NSIS 中设定工作目录使用 SetOutPath，例如在运行程序的代码 ExecWait &quot;$INSTDIR\test2.exe&quot; 前放入 SetOutPath $INSTDIR，那么 $INSTDIR 将会成为当前的工作目录，建立快捷方式也会把工作目录设为 $INSTDIR。&lt;BR&gt;卸载之前运行某程序只需要把运行指令放到 Function un.onInit 里就行&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 记得以前看到有帖子介绍过可在NSIS中调用.inf文件安装附加驱动程序，具体实现代码如下形式：&lt;BR&gt;ExecWait &quot;RunDll32 advpack.dll,LaunchINFSection drivers.inf,DefaultInstall&quot;&lt;BR&gt;偶在打包一小东东时使用了这一方法，但遇到的问题时，如果在卸载区段里设置能自动卸载安装过的驱动程序呢？&lt;BR&gt;&lt;BR&gt;答： 能否卸载需要看 INF 文件里面是否有卸载的区段，例如使用 NSIS 卸载 Windows Messenger 可以这样：&lt;BR&gt;ExecWait &quot;RunDll32 advpack.dll,LaunchINFSection $windir\INF\msmsgs.inf,BLC.Remove&quot; &lt;BR&gt;关于 BLC.Remove 的来源，可以打开 msmsgs.inf 文件后，能找到名称为 BLC.Remove 的区段，该区段用于卸载。区段的名称是编写者自己定制的。不同的inf文件，区段名也可能不同。&lt;BR&gt;其他的 *.inf 文件也可以按照此类做法。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 1. 我做了一个可同时在简繁英下执行的安装程序。 但有个很大的困惑。&lt;BR&gt;&amp;nbsp;&amp;nbsp;刚开始时做的是简体中文版，在简中下当然没问题，但在英/繁下，创建的中文程序组名和写注册表时显示的是乱码。 于是想到写一个三者皆适合的安装程序。&lt;BR&gt;&amp;nbsp;&amp;nbsp;我的做法是这样的，在涉及到创建中文程序组和写注册表时，加入一个判断，如果英文或繁体，则分别创建英文文件名和big5内码文件名。 但在繁体winxp和英文win2k下测试后，发现根本无法正常创建程序组，也无法正常生成uninstall.exe文件。 而写入注册表的中文字符，也不能在繁体系统的注册表中正常显示，而是乱码。&lt;BR&gt;&amp;nbsp;&amp;nbsp;请教高手，这种多语言环境下该怎么处理，才能正常显示呢？ 总不能全部都给创建成英文的吧？&lt;BR&gt;&amp;nbsp;&amp;nbsp;2. 另外有个小问题，如何让nsis做的安装程序不显示具体的安装文件名，而只显示“正在复制文件……”？　象foobar那样，可惜foobar也有个显示详细情况的按钮，我想在复制文件过程中完全不显示和提示被复制的文件情况。 &lt;BR&gt;&lt;BR&gt;答： 1. 最简单的处理办法就是给需要处理的资源进行一个定义，然后使用 LangString 定义不同的资源。给个示例：&lt;BR&gt;&amp;nbsp;&amp;nbsp;Caption &quot;$(CAPTION)&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;LangString CAPTION ${1033} &quot;DreamMail Installation&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;LangString CAPTION ${2052} &quot;DreamMail 安装向导&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;LangString CAPTION ${1028} &quot;DreamMail 杆翾旧&quot;&lt;BR&gt;2. 可以使用 DetailPrint ，示例，&lt;BR&gt;&amp;nbsp;&amp;nbsp;DetailPrint &quot;正在复制文件...&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： NSIS对于安装卸载的ICO图标大小有什么要求?编译的时候出现以下错误提示，&lt;BR&gt;Error finding icon resources: installer, uninstaller icon size mismatch - see the Icon instructions documentation for more information -- failing! &lt;BR&gt;&lt;BR&gt;答： 只要保证安装图标与卸载图标大小相同即可。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何屏蔽如下图中的安装程序校验。&lt;BR&gt;&lt;BR&gt;答： CRCCheck　on|off|force&lt;BR&gt;指定安装前安装程序是否对自身执行一个 CRC。注意，如果用户使用了 /NCRC 命令行参数，且你没有指定 force 参数时，不会执行 CRC，这样有可能导致用户安装一个损坏的安装程序。&lt;BR&gt;安装程序 CRC 校验是默认打开的。可以在脚本中用 CRCCheck off 来默认禁止安装程序的 CRC 校验。不过这样做正如解释上说的可能安装会出现问题。作汉化的最好加上校验，免得安装程序的问题变成你汉化质量的问题。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/21_145744_1xp5asnap.GIF&quot; width=257 onload=javascript:DrawImage(this) height=69&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 在安装的时候不是可以选择多种语言么？但是我怎样实现当选择英文时就装英文版，选择中文时就装中文版？&lt;BR&gt;&lt;BR&gt;答： 使用以下脚本，&lt;BR&gt;&amp;nbsp;&amp;nbsp;StrCmp $LANGUAGE ${LANG_SIMPCHINESE} 0 +3&lt;BR&gt;&amp;nbsp;&amp;nbsp;File &quot;你需要安装的中文文件&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Goto lbl_finish&lt;BR&gt;&amp;nbsp;&amp;nbsp;File &quot;你需要安装的英文文件&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;lbl_finish:&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 组件A 组件B 组件C 均为可选，A可单独安装，B或者C被选择的时候A必须被选择&lt;BR&gt;&lt;BR&gt;答： 以下代码，&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section &quot;组件 A&quot; aaa&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;detailprint &quot;A&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section &quot;组件 B&quot; bbb&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;detailprint &quot;B&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section &quot;组件 C&quot; ccc&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;detailprint &quot;C&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Function .onSelChange&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SectionGetFlags ${bbb} $0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SectionGetFlags ${ccc} $1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntOp $0 $0 &amp;amp; 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntOp $1 $1 &amp;amp; 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntCmp $0 1 0 +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　SectionSetFlags ${aaa} 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntCmp $1 1 0 +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　SectionSetFlags ${aaa} 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;FunctionEnd&lt;BR&gt;&lt;BR&gt;解释：SectionGetFlags 表示获取某区段的flags状态（就是是否被勾选，选中返回值为1，反之为0）&lt;BR&gt;SectionGetFlags ${bbb} $0 表示获取序号为${bbb}的区段的Flags状态并把返回值输出到变量 $0，C 区段相同。&lt;BR&gt;接着就是 StrCmp ，解释同上楼。&lt;BR&gt;SectionSetFlags ${aaa} 1 表示设置序号为 ${aaa} 区段的 Flags 状态为 1，即勾选。&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如果是这样写的时候就可以在左边显示页眉位图&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_ABORTWARNING&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_ICON &quot;${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_UNICON &quot;${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_HEADERIMAGE&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_HEADERIMAGE_BITMAP &quot;f:\11.bmp&quot;&lt;BR&gt;会显示如附图1。会靠左，但是如果把 MUI_HEADERIMAGE 换成 MUI_HEADERIMAGE_RIGHT 就无法显示位图,只能出现安装图标了，如附图2。&lt;BR&gt;&lt;BR&gt;答： 把插入的headerimage图片放到右边（默认是在左边）&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_HEADERIMAGE&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_HEADERIMAGE_RIGHT&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_HEADERIMAGE_BITMAP &quot;include\resource\modern-header.bmp&quot;&lt;BR&gt;而不是你所说的修改 !define MUI_HEADERIMAGE，应该是在这句下面添加 !define MUI_HEADERIMAGE_RIGHT&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图1：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/23_192335_63u91.JPG&quot; width=318 onload=javascript:DrawImage(this) height=126&gt;&lt;BR&gt;&lt;STRONG&gt;附图2：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/23_192515_tqix2.JPG&quot; width=500 onload=javascript:DrawImage(this) height=93&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 怎么让 ＂许可协议＂页面的标题栏，如程序中的“MutliPages 演示”修改为“MutliPages 演示：许可协议”，如附图。&lt;BR&gt;&lt;BR&gt;答： 首先创建一个函数，如下。&lt;BR&gt;&amp;nbsp;&amp;nbsp;Function LicensePagePre&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SendMessage $HWNDPARENT ${WM_SETTEXT} 0 &quot;STR:我爱你&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;FunctionEnd&lt;BR&gt;然后在协议页面句子 &lt;BR&gt;&amp;nbsp;&amp;nbsp;!insertmacro MUI_PAGE_LICENSE &quot;c:\path\to\licence\YourSoftwareLicence.txt&quot;&lt;BR&gt;之前加入如下语句&lt;BR&gt;&amp;nbsp;&amp;nbsp;!define MUI_PAGE_CUSTOMFUNCTION_PRE LicensePagePre&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;STRONG&gt;附图：&lt;/STRONG&gt;&lt;BR&gt;&lt;IMG border=0 alt=点击在新窗口打开图片 src=&quot;http://restools.hanzify.org/attachments/month_200508/23_195832_da3g1.JPG&quot; width=276 onload=javascript:DrawImage(this) height=25&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 比如，我把 a.exe 用nsis包装好，安装到 c:\helloLib\a.exe，完成后，想把c:\helloLib\添加到 系统环境变量的 path里头，这样，在任何地方输入 a.exe可执行。如何将路径添加到 系统环境变量中？&lt;BR&gt;&lt;BR&gt;答：以下代码实现：&lt;BR&gt;&amp;nbsp;&amp;nbsp;ReadRegStr $0 HKLM &quot;SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot; &quot;Path&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;WriteRegExpandStr HKLM &quot;SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot; &quot;Path&quot; &quot;$0;C:\hellolib&quot; &lt;BR&gt;另类方法一： 写注册表，如&lt;BR&gt;&amp;nbsp;&amp;nbsp;[HKEY_CLASSES_ROOT\Applications\a.exe\shell\open\command]&lt;BR&gt;&amp;nbsp;&amp;nbsp;@=&quot;yourpath\a.exe&quot; &lt;BR&gt;另类方法二：&lt;BR&gt;&amp;nbsp;&amp;nbsp;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\a.exe]&lt;BR&gt;&amp;nbsp;&amp;nbsp;@=&quot;c:\helloLib\a.exe&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 在NSIS中如何才能做到根据对于注册表键值的判断决定是否写入字串，如果判断出某个key存在，则写入相应的字串，如果不存在，则不写入字串。例如：我先要判断 “ HKLM SOFTWARE\nsis”这个key存不存在。如果存在则写入字串“DispName:nsis”，应该是用“WriteRegStr HKLM &quot;SOFTWARE\nsis&quot; &quot;DispName&quot; &quot;nsis&quot;”。如果不存在这个key，则不写入注册表，继续下面的安装。&lt;BR&gt;&lt;BR&gt;答： 以下代码实现，&lt;BR&gt;&amp;nbsp;&amp;nbsp;ReadRegStr $0 HKLM SOFTWARE\nsis &quot;&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;　IfErrors 0 +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Goto +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;WriteRegStr HKLM &quot;SOFTWARE\nsis&quot; &quot;DispName&quot; &quot;nsis&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何制作安装包的时候需要调用系统函数来检测当前安装包运行的操作系统的内码页。&lt;BR&gt;&lt;BR&gt;答： 以下代码显示系统语言&lt;BR&gt;&amp;nbsp;&amp;nbsp;System::Call &quot;Kernel32::GetSystemDefaultLangID(v ..) i .s&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Pop $0&lt;BR&gt;&amp;nbsp;&amp;nbsp;IntOp $0 $0 &amp;amp; 0xFFFF&lt;BR&gt;&amp;nbsp;&amp;nbsp;MessageBox MB_OK $0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何用NSIS注册字体？&lt;BR&gt;&lt;BR&gt;答： 以下代码，&lt;BR&gt;&amp;nbsp;&amp;nbsp;!include WinMessages.nsh&lt;BR&gt;&amp;nbsp;&amp;nbsp;Section &quot;MainSection&quot; SEC01&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File /oname=$FONTS\tahoma.ttf tahoma.ttf&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Push &quot;$FONTS\tahoma.ttf&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System::Call &quot;Gdi32::AddFontResource(t s) i .s&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pop $0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IntCmp $0 0 0 +2 +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox MB_OK &quot;注册字体失败&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SendMessage ${HWND_BROADcast} ${WM_FONTCHANGE} 0 0&lt;BR&gt;&amp;nbsp;&amp;nbsp;SectionEnd&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE class=ubb_code border=0 cellSpacing=1 cellPadding=0 width=&quot;90%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;问： 如何用 NSIS 安装输入法。&lt;BR&gt;&lt;BR&gt;答： 以下代码，&lt;BR&gt;&amp;nbsp;&amp;nbsp;SetOutPath $SYSDIR&lt;BR&gt;&amp;nbsp;&amp;nbsp;File WBIME.ime&lt;BR&gt;&amp;nbsp;&amp;nbsp;Push &quot;五笔输入法&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Push &quot;$SYSDIR\WBIME.ime&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System::Call &quot;Imm32::ImmInstallIME(t s, t s) i .s&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System::Call &quot;Imm32::ImmIsIME(i s) i .s&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Pop $0&lt;BR&gt;&amp;nbsp;&amp;nbsp;IntCmp $0 1 0 +3 +3&lt;BR&gt;&amp;nbsp;&amp;nbsp;MessageBox MB_OK &quot;输入法安装成功&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;Goto +2&lt;BR&gt;&amp;nbsp;&amp;nbsp;MessageBox MB_OK &quot;输入法安装失败&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS封装软件步骤</title>
           <link>http://www.jdxz.com//softinfo/4995.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:21:00</pubDate>
           <comments></comments>
           <description>—确定安装的功能和界面元素 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　—编写 NSIS 脚本 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　—使用 NSIS 提供的 makensis 或者 makensisw 程序，将步骤 2 编写的脚本编译成可执行的安装程序 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　—调试安装程序，如果有问题退到第二步重复 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　—随着 NSIS 的流行，有一些第三方的 NSIS 脚本开发环境出现了，如 HMNISEdit，Venis IX。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　前者是完全开源的，后者仅对个人和非商业用途免费。在这些集成开发环境下，步骤2，3可以方便的组合在一起</description>
       </item>
       <item>
           <title>[安装制作]NSIS 脚本的结构</title>
           <link>http://www.jdxz.com//softinfo/4994.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:19:33</pubDate>
           <comments></comments>
           <description>NSIS 脚本（下称 nsi 脚本）主要包含安装程序属性、页面、区段、函数。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　属性用来定义安装程序的行为和界面风格，这些属性大部分是编译时刻属性，即不能在运行时刻改变。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　页面是指安装程序的向导页面。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page license 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page components 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page directory 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page instfiles 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage uninstConfirm 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage instfiles
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　3.2 区段是对应某种安装/卸载选项的处理逻辑，该段代码仅当用户选择相应的选项才被执行。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　卸载程序的区段名用&amp;quot;un.&amp;quot;作　为前缀。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Section &amp;quot;Installer Section&amp;quot;
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Section &amp;quot;un.Uninstaller Section&amp;quot;
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　3.3 在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　但最常用的指令是 SetOutPath 和 File。前者用于指定目的位置，后者用于指定文件。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Section &amp;quot;My Program&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SetOutPath $INSTDIR 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File &amp;quot;My Program.exe&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File &amp;quot;Readme.txt&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　3.4 区段名的修饰符“/o”表示该区段默认不选上，“-”表示隐藏区段（匿名区段也是隐藏区段），“!”表示需要粗体显示的区段。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionIn 表示该区段和安装类型之间的关系： 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionIn insttype_index [RO] 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　RO 修饰符表示不可修改。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　3.5 子区段用于包含多个区段：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SubSection [/e] Caption [subsection_name index output]
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　修饰符“/e”用于该子区段的所有区段是否默认展开。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　3.6 函数包含了模块化的安装逻辑，在 nsi 脚本中函数分为两种：用户自定义函数和回调函数。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　用户自定义函数仅当是 Call 指令调用时才被执行。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　如果函数体中没有abort语句，则安装程序执行完了用户自定义函数，继续运行 Call 语句和指令。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　用户自定义函数的语法如下：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function &amp;lt;函数名&amp;gt; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　# some commands 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　函数的调用则使用以下语法：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Call &amp;lt;函数名&amp;gt; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　可见无论是函数的定义还是函数的调用都没有参数传递。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　通常 nsi 的参数传递是通过堆栈操作 Pop，Push 和 20 个寄存器变量 $0～$9、$R0～$R9 进行的。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　也可以通过全局变量完成参数传递。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　如：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Var input ; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Var output ; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Section bla 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　DeteailPrint &amp;quot;input is $input$\n&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Call square 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　DeteailPrint &amp;quot;square of $input is $output$\n&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　SectionEnd 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function square 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　output = input^2 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　回调函数则是由在特定的时间点触发的程序段。常用的回调函数如 .onInit：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function .onInit 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_YESNO &amp;quot;This will install My Program. Do you wish to continue?&amp;quot; IDYES gogogo 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Abort 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　gogogo: 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　NSIS 对于安装逻辑定义以下回调函数：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onGUIInit
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onInit
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onInstFailed
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onInstSuccess
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　. onGUIEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onMouseOverSection
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onRebootFailed
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　.onSelChange
&lt;br&gt;.onUserAbort
&lt;br&gt;  
&lt;br&gt;
&lt;br&gt;　　.onVerifyInstDir
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　NSIS 对于卸载逻辑定义以下回调函数：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onGUIInit
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onInit
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onUninstFailed
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onUninstSuccess
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onGUIEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onRebootFailed
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　un.onUserAbort</description>
       </item>
       <item>
           <title>[安装制作]nsis 脚本的变量定义</title>
           <link>http://www.jdxz.com//softinfo/4993.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:18:31</pubDate>
           <comments></comments>
           <description>nsi 脚本的变量定义用 Var 关键字，后跟变量名，变量是全局的并且是大小写敏感的。变量引用时需要加上前缀“$”。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　除了用户自定义的变量外，nsi 脚本中与定义寄存器变量 $0～$9、$R0～$R9 用于参数传递，以及系统变量用于特定用途。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　这些变量主要有： &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$INSTDIR，$OUTDIR，$CMDLINE，$LANGUAGE 这些变量都是可写的。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$PROGRAMFILES，$COMMONFILES，$DESKTOP，$EXEDIR，$WINDIR，$SYSDIR，$ TEMP，$STARTMENU &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$SMPROGRAMS，$SMSTARTUP，$QUICKLAUNCH，$DOCUMENTS，$SENDTO，$ RECENT，$FAVORITES &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$MUSIC，$PICTURES，$VIDEOS，$NETHOOD，$FONTS，$TEMPLATES，$ APPDATA，$PRINTHOOD &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$INTERNET_CACHE，$COOKIES，$HISTORY，$PROFILE，$ ADMINTOOLS，$RESOURCES &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　$RESOURCES_LOCALIZED，$CDBURN_AREA，$HWNDPARENT，$PLUGINSDIR。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　nsi 脚本中可用于调试的系统函数有 MessageBoxes、DetailPrint、Dumpstate。</description>
       </item>
       <item>
           <title>[安装制作]nsis脚本的编译器指令</title>
           <link>http://www.jdxz.com//softinfo/4992.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:17:31</pubDate>
           <comments></comments>
           <description>nsi 脚本的编译器指令主要指仅在编译时刻执行的命令。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　这些命令主要用来包含文件、条件化编译、定义常量、定义宏等。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　定义常量和宏是编译器指令最主要应用。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　定义常量的示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　!define VERSION &amp;quot;1.0.3&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Name &amp;quot;My Program $&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　OutFile &amp;quot;My Program Installer - $.exe&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　定义宏的示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　!macro MyFunc UN 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function $MyFunc 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Call $DoRegStuff 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ReadRegStr HKLM Software\MyProgram key 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　DetailPrint 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　6. Modern UI
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Modern UI 是感观上模仿最新的 Windows 系统的界面风格，它由欢迎页面、结束页面和其他向导页面构成。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　7. 插件
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsi 支持插件，通过插件可以方便的扩展 NSIS 安装程序的功能。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　NSIS 插件是用 C++、Delphi 等语言编写的 dll，在 nsi 脚本中调用 nsi 中的函数使用如下语法： 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　DLLName::FunctionName &amp;quot;参数1&amp;quot; &amp;quot;参数2&amp;quot; &amp;quot;参数3&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例1：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsExec::ExecToLog '&amp;quot;$\makensis.exe&amp;quot; /CMDHELP'
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　执行makensis.exe命令，显示该命令用法。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例2：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　InstallOptions::dialog &amp;quot;$PLUGINSDIR\test.ini&amp;quot;
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　显示对话框 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例3： 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　下载文件</description>
       </item>
       <item>
           <title>[安装制作]nsis 脚本的基本语法</title>
           <link>http://www.jdxz.com//softinfo/4991.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:15:06</pubDate>
           <comments></comments>
           <description>9.1 注释
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　单行注释用井号“#”或分号“;”，跨行注释用可以用“C/C++”中注释语法。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2 数据类型
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2.1 数字
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　数字常量可以用十进制、十六进制（0x为前缀）、八进制（0为前缀）表示。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　颜色用类似 HTML 的中 RGB 表示法，但去　井号“#”。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2.2 字符串
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　字符串常量可以用引号引用，转意字符用&amp;quot;$\&amp;quot;作前缀。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　美元符号、常用转意字符换行、回车、制表符的nsi语法表示分别为：$$,$\n,$\r,$\t 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2.3 续行符
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsi 脚本用行尾的反斜杠“\”表示下一行和当前行逻辑上是同一行。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2.4 默认头文件
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　如果在makensis同目录下有nsisconf.nsh文件，该文件会被自动包含，除非编译时指定/NOCONFIG选项。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.2.5 标号
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsi 使用 GOTO 语句和 IfErrors、MessageBox、IfFileExists 及 StrCmp 进行程序控制流表示，标号是这些语句的目标语句。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　标号定义的语法：标号：语句
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　标号必须定义在函数和区段中，其作用范围仅限于定义它的区段或函数。以点号“.”开头的标号是全局标号。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　9.3 相对跳转 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsi 脚本常常使用相对跳转表示条件分枝，其语法是 [+-][1-9]，加号表示从当前位置往前跳转，减号则表示从当前位置往后跳转。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　数字表示跳转的语句条数。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Goto +4 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_OK &amp;quot;The following message will be skipped&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Goto +3 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_OK &amp;quot;You will never ever see this message box&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Goto -3 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_OK &amp;quot;Done&amp;quot;
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　10. 页面
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　向导页面是 NSIS 安装程序中最重要的界面元素，在 nsi 脚本中可以使用 NSIS 内置页面或者定制界面，通过脚本可以指定页面的顺序、显示样子和行为。Page指令用来定义安装程序中的页面，UninstPage用来定义，此外PageEx指令提供类是功能，但提供更多选项。页面的顺序和它在nsi脚本中出现的次序一致。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例： 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page license 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page components 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page directory 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page instfiles 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage uninstConfirm 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage instfiles
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　规定安装程序首先显示license页面，然后显示components选择页面，接着显示安装目录选择页面。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　10.1 页面选项
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　不同的页面有不同的选项：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　License page 有 LicenseText、LicenseData、LicenseForceSelection；
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Components selection 页面有 ComponentText；
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Directory selection 页面有 DirText、DirVar (仅能在 PageEx 中使用)、DirVerify；
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Un/Installation log 页面有 DetailsButtonText、CompletedText；
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Uninstall confirmation 页面有 DirVar (仅能在 PageEx 中使用)、UninstallText。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　对于内置的 Page，NSIS 支持三个回调函数用于定制界面和验证，对于自定义页面 NSIS 支持两个回调函数。 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page 指令语法：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function] 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　或者：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page custom [creator_function] [leave_function] [caption] 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page license skipLicense &amp;quot;&amp;quot; stayInLicense 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page custom customPage &amp;quot;&amp;quot; &amp;quot;: custom page&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Page instfiles
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function skipLicense 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_YESNO &amp;quot;Do you want to skip the license page?&amp;quot; IDNO no 
&lt;br&gt;Abort 
&lt;br&gt;  
&lt;br&gt;
&lt;br&gt;　　no: 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function stayInLicense 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　MessageBox MB_YESNO &amp;quot;Do you want to stay in the license page?&amp;quot; IDNO no 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Abort 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　no: 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Function customPage 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　GetTempFileName $R0 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /oname=$R0 customPage.ini 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　InstallOptions::dialog $R0 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Pop $R1 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　StrCmp $R1 &amp;quot;cancel&amp;quot; done 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　StrCmp $R1 &amp;quot;back&amp;quot; done 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　StrCmp $R1 &amp;quot;success&amp;quot; done 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　error: MessageBox MB_OK|MB_ICONSTOP &amp;quot;InstallOptions error:$\r$\n$R1&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　done: 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　FunctionEnd 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage 指令语法
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage custom [creator_function] [leave_function] [caption] 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　或
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　UninstPage (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function] 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　PageEx 语法
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　PageEx 使用嵌套结构，比如：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　PageEx license 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　LicenseText &amp;quot;Readme&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　LicenseData readme.rtf 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　PageCallbacks licensePre licenseShow licenseLeave 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　PageExEnd
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　11. 常用的 nsi 指令 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　nsi 大致可以分为基本指令、注册表及 ini 操作指令、通用指令、流程控制指令、文件操作指令、卸载指令、字符串处理指令、多语言支持指令、重启指令。
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　以下是常用的基本指令：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(1) Delete：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Delete [/REBOOTOK] file 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(2) Exec：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Exec command 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(3) ExecShell：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ExecShell action command [parameters] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]ExecShell &amp;quot;open&amp;quot; 示例&amp;quot;http://nsis.sf.net/&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ExecWait 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ExecWait command 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ExecWait '&amp;quot;$INSTDIR\someprogram.exe&amp;quot;' 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　ExecWait '&amp;quot;$INSTDIR\someprogram.exe&amp;quot;' 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　DetailPrint &amp;quot;some program returned &amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(4) File：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File [/nonfatal] [/a] ([/r] [/x file|wildcard [...]] (file|wildcard) [...] | /oname=file.dat infile.dat) 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　/r选项用作递归模式，/x用于排出文件 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　示例： 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File something.exe 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /a something.exe 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File *.exe 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /r *.dat 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /r data 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /oname=$TEMP\temp.dat somefile.ext 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /nonfatal &amp;quot;a file that might not exist&amp;quot; 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /r /x CVS myproject 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　File /r /x *.res /x *.obj /x *.pch source 
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(5) Rename：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　Rename [/REBOOTOK] source_file dest_file
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　(6) RMDir：
&lt;br&gt; 
&lt;br&gt;
&lt;br&gt;　　RMDir [/r] [/REBOOTOK] directory_name</description>
       </item>
       <item>
           <title>[安装制作]NSIS 脚本中实时获取安装进度</title>
           <link>http://www.jdxz.com//softinfo/4990.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:14:08</pubDate>
           <comments></comments>
           <description>&lt;P&gt;将文件分成4分 分别放到4个section里去 每完成一个发送一个25%&lt;BR&gt;虽然不是按照1%实时的发送的 也能在大体上掌握 文件安装情况&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS脚本静默运行exe程序</title>
           <link>http://www.jdxz.com//softinfo/4989.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:12:54</pubDate>
           <comments></comments>
           <description>&lt;P&gt;NSIS静默运行示例：&lt;BR&gt;&amp;nbsp; &amp;nbsp; Exec '&quot;$INSTDIR\1.exe&quot; /S'(用于安装过程无需选择安装路径的，如补丁升级包什么的)&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Exec '&quot;$INSDIR\1.exe&quot; /S /D=$PROGRAMFILES\2'(用于可在安装过程中选择路径的，$PROGRAMFILES\2为安装的路径)&lt;BR&gt;&lt;BR&gt;注：Exec也可换成ExecWait&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS查找并替换TXT文本里的字段</title>
           <link>http://www.jdxz.com//softinfo/4988.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:12:02</pubDate>
           <comments></comments>
           <description>&lt;P&gt;!include &quot;TextFunc.nsh&quot;&lt;BR&gt;!include &quot;WordFunc.nsh&quot;&lt;/P&gt;
&lt;P&gt;Section&lt;BR&gt;&amp;nbsp; ;读取文本文件，写入文本文件，读取第一行到最后一行。&lt;BR&gt;&amp;nbsp; ${LineFind} &quot;xxx.ini&quot; &quot;xxx.ini&quot; &quot;1:-1&quot; &quot;Config&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Function Config&lt;BR&gt;&amp;nbsp; ${WordReplace} $R9 'PATH=&quot;值&quot;' 'PATH=&quot;www.hack59.com替换成你想要的&quot;' &quot;+*&quot; $R9&lt;BR&gt;&amp;nbsp; Push $0&lt;BR&gt;FunctionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS自定义界面更改安装路径</title>
           <link>http://www.jdxz.com//softinfo/4987.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:11:06</pubDate>
           <comments></comments>
           <description>&lt;P&gt;注释掉 默认的安装路径选择页面&lt;BR&gt;然后在该位置使用你的自定义页面 即可替换默认安装路径页面&lt;BR&gt;&lt;BR&gt;在离开函数 将用户更改后的路径 使用StrCpy 赋值给 $INSTDIR 即可&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS更新程序例子</title>
           <link>http://www.jdxz.com//softinfo/4986.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:09:50</pubDate>
           <comments></comments>
           <description>&lt;P&gt;首先在服务器上最好有个 INI 文件。&lt;BR&gt;里面记载了每个文件的最新 MD5 ,根据这个文件不就可以确定下载那些文件了吗?&lt;BR&gt;否则只有先下载下每个文件然后在判断是否更新&lt;/P&gt;
&lt;P&gt;InetLoad::load /popup &quot;Show Text...&quot; &quot;ftp://id:password@www.jdxz.com/*.txt&quot; &quot;$INSTDIR\*.txt&quot;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS向服务器上传文件</title>
           <link>http://www.jdxz.com//softinfo/4985.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:08:58</pubDate>
           <comments></comments>
           <description>renjd http://nsis.sourceforge.net/Inetc_plug-in</description>
       </item>
       <item>
           <title>[安装制作]NSIS如何改变按钮的颜色</title>
           <link>http://www.jdxz.com//softinfo/4984.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:08:09</pubDate>
           <comments></comments>
           <description>&lt;P&gt;设置按钮贴图吧&lt;BR&gt;插件地址http://nsis.sourceforge.net/SkinnedButton_plug-in&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS安装次数统计</title>
           <link>http://www.jdxz.com//softinfo/4983.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:07:15</pubDate>
           <comments></comments>
           <description>NSIS安装次数统计
&lt;br&gt;使用Inetc插件</description>
       </item>
       <item>
           <title>[安装制作]设置NSIS安装包不能使用/S静默安装</title>
           <link>http://www.jdxz.com//softinfo/4982.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:06:23</pubDate>
           <comments></comments>
           <description>&lt;P&gt;在函数回调&lt;BR&gt;Function .onInit&lt;BR&gt;&lt;BR&gt;IfSilent 0 +2&lt;BR&gt;Abort&lt;BR&gt;加入此句。&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS检查注册表键值的数值是否为空的脚本</title>
           <link>http://www.jdxz.com//softinfo/4981.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:05:27</pubDate>
           <comments></comments>
           <description>&lt;P&gt;检测为空一个strcmp就能解决。。&lt;/P&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE&gt;&lt;FONT face=&quot;Fixedsys &quot;&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#0000cc&gt;ReadRegStr &lt;/FONT&gt;&lt;FONT color=#cc3300&gt;$0 &lt;/FONT&gt;&lt;FONT color=#ff8040&gt;HKLM &lt;/FONT&gt;&quot;HKEY_CURRENT_USER\Environment&quot; &quot;sybase&quot;&lt;BR&gt;&lt;FONT color=#0000cc&gt;StrCmp &lt;/FONT&gt;&lt;FONT color=#cc3300&gt;$0 &lt;/FONT&gt;&quot;&quot; &lt;FONT color=#400040&gt;+&lt;/FONT&gt;&lt;FONT color=#ff0080&gt;1 &lt;/FONT&gt;&lt;FONT color=#400040&gt;+&lt;/FONT&gt;&lt;FONT color=#ff0080&gt;2&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;DeleteRegValue &lt;/FONT&gt;&lt;FONT color=#ff8040&gt;HKLM &lt;/FONT&gt;&quot;HKEY_CURRENT_USER\Environment&quot; &quot;sybase&quot;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS制作的安装软件卸载软件前运行文件</title>
           <link>http://www.jdxz.com//softinfo/4980.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:04:21</pubDate>
           <comments></comments>
           <description>&lt;P&gt;Function un.onInit&lt;BR&gt;ExecShell &quot;open&quot; &quot;http://www.qjdxz.com&quot;&lt;BR&gt;FunctionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS左下角的文本修改</title>
           <link>http://www.jdxz.com//softinfo/4979.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:02:43</pubDate>
           <comments></comments>
           <description>在安装和选择目录截面,NSIS左下有个文本叫&amp;quot;Nullsoft ......v2.44&amp;quot;,
&lt;br&gt;BrandingText &amp;quot;114CC娱乐导航-www.114cc.net&amp;quot;
&lt;br&gt;## Set the hyperlink up.
&lt;br&gt;Function onGUIInit
&lt;br&gt;BrandingURL::Set /NOUNLOAD &amp;quot;200&amp;quot; &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; &amp;quot;http://www.jdxz.com&amp;quot;
&lt;br&gt;FunctionEnd
&lt;br&gt;## Unload the plugin.
&lt;br&gt;Function .onGUIEnd
&lt;br&gt;BrandingURL::Unload
&lt;br&gt;FunctionEnd</description>
       </item>
       <item>
           <title>[安装制作]NSIS判断checkbox是否勾选执行</title>
           <link>http://www.jdxz.com//softinfo/4978.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:01:15</pubDate>
           <comments></comments>
           <description>&lt;P&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 167px; HEIGHT: 32px; CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 hspace=0 alt=&quot;&quot; src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122020230866.jpg&quot; width=167 onload=&quot;return imgzoom(this,550);&quot; height=32&gt; &lt;BR&gt;如图所示，&lt;BR&gt;当用户勾选点击完成安装&lt;SPAN href=&quot;tag.php?name=%BB%F1%C8%A1&quot;&gt;获取&lt;/SPAN&gt;一个返回值。没有勾选完成安装获取一个返回值。&lt;BR&gt;&lt;BR&gt;不知道这个怎么操作。&lt;/P&gt;
&lt;P&gt;SetCompressor lzma&lt;BR&gt;!include &quot;MUI.nsh&quot; #导入系统支持库&lt;/P&gt;
&lt;P&gt;;!include BlueHelper.nsh&lt;/P&gt;
&lt;P&gt;!define PRODUCT_NAME &quot;tools&quot;&lt;BR&gt;!define PRODUCT_VERSION &quot;&quot;&lt;BR&gt;!define MUI_ABORTWARNING&lt;BR&gt;!define MUI_ICON &quot;${NSISDIR}\Contrib\Graphics\Icons\Apple.ico&quot;&lt;BR&gt;!define MUI_UNICON &quot;${NSISDIR}\Contrib\Graphics\Icons\Apple.ico&quot;&lt;BR&gt;!define MUI_HEADERIMAGE&lt;BR&gt;!define MUI_HEADERIMAGE_BITMAP &quot;${NSISDIR}\Contrib\Graphics\Header\appleb.bmp&quot;&lt;BR&gt;!define MUI_WELCOMEFINISHPAGE_BITMAP &quot;${NSISDIR}\Contrib\Graphics\Wizard\appleb.bmp&quot;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;!define MUI_FINISHPAGE_SHOWREADME&lt;BR&gt;!define MUI_FINISHPAGE_SHOWREADME_TEXT &quot;运行***&quot;&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_PAGE_WELCOME&lt;BR&gt;!insertmacro MUI_PAGE_DIRECTORY&lt;BR&gt;!insertmacro MUI_PAGE_INSTFILES&lt;BR&gt;!insertmacro MUI_PAGE_FINISH&lt;BR&gt;!insertmacro MUI_UNPAGE_INSTFILES&lt;BR&gt;!insertmacro MUI_LANGUAGE &quot;SimpChinese&quot;&lt;BR&gt;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS&lt;/P&gt;
&lt;P&gt;Name FinishPage&lt;BR&gt;outfile FinishPage.exe&lt;BR&gt;InstallDir $temp&lt;BR&gt;section&lt;/P&gt;
&lt;P&gt;sectionend&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;function .onInstSuccess&lt;/P&gt;
&lt;P&gt;ReadINIStr $0 $PLUGINSDIR\ioSpecial.ini &quot;Field 5&quot; &quot;State&quot;&lt;BR&gt;${if} $0 == 0&lt;BR&gt;MessageBox mb_ok &quot;没有勾选&quot;&lt;BR&gt;${else}&lt;BR&gt;MessageBox mb_ok &quot;勾选&quot;&lt;BR&gt;${endif}&lt;/P&gt;
&lt;P&gt;FunctionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS写入新建的文本的问题</title>
           <link>http://www.jdxz.com//softinfo/4977.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 2:00:02</pubDate>
           <comments></comments>
           <description>&lt;P&gt;FileOpen $0 &quot;$EXEDIR\a.txt&quot; w&lt;BR&gt;&amp;nbsp;&amp;nbsp;FileWrite $0 &quot;金电下载网&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;FileWriteByte $0 &quot;13&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;FileWriteByte $0 &quot;10&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;FileWrite $0 &quot;www.jdxz.com&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;FileClose $0&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]如何用NSIS调用7z解压文件？</title>
           <link>http://www.jdxz.com//softinfo/4976.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:59:09</pubDate>
           <comments></comments>
           <description>&lt;P&gt;&lt;FONT color=#0000cc face=&quot;Courier New&quot;&gt;name &lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;FONT color=#4a9595&gt;&quot;7z&quot;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;OutFile &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;FONT color=#4a9595&gt;&quot;7zdemo.&lt;SPAN href=&quot;tag.php?name=exe&quot;&gt;exe&lt;/SPAN&gt;&quot;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;page &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;FONT color=#ff8040&gt;instfiles&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;Section &lt;/FONT&gt;/o &lt;FONT color=#4a9595&gt;&quot;雅黑字体&quot; &lt;/FONT&gt;Sec1741&lt;BR&gt;&lt;FONT color=#0000cc&gt;SetOutPath &lt;/FONT&gt;&lt;FONT color=#4a9595&gt;&quot;&lt;/FONT&gt;&lt;FONT color=#800000&gt;$temp&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;FONT color=#4a9595&gt;&quot;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;File &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;FONT color=#4a9595&gt;&quot;D:\CHT9000\7za.exe&quot;&lt;BR&gt;&lt;/FONT&gt;nsExec::Exec &lt;FONT color=#4a9595&gt;'&quot;&lt;/FONT&gt;&lt;FONT color=#800000&gt;$INSTDIR&lt;/FONT&gt;&lt;FONT color=#4a9595&gt;\7za.exe&quot; e &lt;/FONT&gt;&lt;FONT color=#800000&gt;$INSTDIR&lt;/FONT&gt;&lt;FONT color=#4a9595&gt;\OS_19174.7z -o&lt;/FONT&gt;&lt;FONT color=#800000&gt;$INSTDIR&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#4a9595 face=&quot;Courier New&quot;&gt;\os_19174'&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;&lt;FONT face=&quot;Courier New&quot;&gt;SectionEnd&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS开始菜单排序设置补充</title>
           <link>http://www.jdxz.com//softinfo/4975.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:57:50</pubDate>
           <comments></comments>
           <description>举个例子，比如：
&lt;br&gt;我装了谷歌浏览器(不是做广告，装这个是工作需要，平时从来不用，不知道好不好用，因为tor的原因，我只用firefox)
&lt;br&gt;
&lt;br&gt;在开始菜单中的该文件夹下只有两项,依次分别是：
&lt;br&gt;谷歌浏览器
&lt;br&gt;卸载谷歌浏览器
&lt;br&gt;
&lt;br&gt;其相应的注册表项如下：
&lt;br&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu2\Programs\谷歌浏览器\Order
&lt;br&gt;值为16进制即二进制类型
&lt;br&gt;对应的创建命令WriteRegBin，参数用法与其它写注册表命令相当，详情请参阅文档
&lt;br&gt;
&lt;br&gt;接下来就是重点了：
&lt;br&gt;这个内容该如何写呢，困惑了我一段时间以后加之原来需求的变更我决定放弃了。没搞懂这个到底是多少进制到多少进制的转换，对于中文似乎更难看懂。所以改用偷懒的方法解决我们的需求：
&lt;br&gt;先按照原有的方式创建快捷方式，一般都是以字母排序的方式决定顺序的，后用注册表检测工具扫一遍注册表，再手动调整为我们想要的顺序，再扫一遍注册表，这个时候应该可以得到我们想要的Order项的值了，拷贝一下就可以用
&lt;br&gt;WriteRegBin命令写入了。
&lt;br&gt;此致。
&lt;br&gt;
&lt;br&gt;顺便提一下，虽然转换没有搞清楚，但是也不是完全没有办法，至少反过程可以提供：注册表下创建一个新的字符串值随便输入点内容，后右键点选，在菜单中选择修改二进制位数据，看到里面的数据了吧，就是我们没有搞懂的数据，这为开始菜单注册表项内容格式的破译提供了可能，但是在几次比对以后我就放弃了，可能还是太懒了。自我批评一下</description>
       </item>
       <item>
           <title>[安装制作]nsis判断系统是否配置安装IIS</title>
           <link>http://www.jdxz.com//softinfo/4974.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:56:19</pubDate>
           <comments></comments>
           <description>&lt;DIV id=listbox class=list_containers 29AB68332BA409EK&gt;&lt;/DIV&gt;&lt;PRE style=&quot;FONT-FAMILY: monospace&quot;&gt;&lt;SPAN style=&quot;COLOR: #000066&quot;&gt;LangString&lt;/SPAN&gt; ERR_VDIREXISTS &lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;LANG_ENGLISH&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;A virtual directory named ${VDIRNAME} already exists. The new virtual directory will not be created.&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;--------------------------------&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;; CreateVDir Function&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000066&quot;&gt;Function&lt;/SPAN&gt; CreateVDir
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Open a VBScript File in the temp dir for writing&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Creating $TEMP\createVDir.vbs&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileOpen&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$TEMP\createVDir.vbs&quot;&lt;/SPAN&gt; w
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Write the script:&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Create a virtual dir named ${VDIRNAME} pointing to $INSTDIR\web with proper attributes&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;On Error Resume Next$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Set Root = GetObject($\&quot;&lt;/SPAN&gt;IIS://LocalHost/W3SVC/&lt;SPAN&gt;1&lt;/SPAN&gt;/ROOT$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;)$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Set Dir = Root.Create($\&quot;&lt;/SPAN&gt;IIsWebVirtualDir$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;, $\&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;)$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;If (Err.Number &amp;lt;&amp;gt; 0) Then$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;StrCpy&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$1&lt;/SPAN&gt; $&lt;SPAN&gt;(&lt;/SPAN&gt;ERR_VDIREXISTS&lt;SPAN&gt;)&lt;/SPAN&gt;
		&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;To substitute a LangString in the vbs copy it before&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; MsgBox $\&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$1&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; Wscript.Quit (Err.Number)$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;End If$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.Path = $\&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$INSTDIR&lt;/SPAN&gt;\web$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AccessRead = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AccessWrite = False$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AccessScript = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AppFriendlyName = $\&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.EnableDirBrowsing = False$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.ContentIndexed = False$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.DontLog = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.EnableDefaultDoc = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.DefaultDoc = $\&quot;&lt;/SPAN&gt;default.asp$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AspBufferingOn = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AspAllowSessionState = True$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AspSessionTimeout = 30$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.AspScriptTimeout = 900$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Dir.SetInfo$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Create the application object&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Set IISObject = GetObject($\&quot;&lt;/SPAN&gt;IIS://LocalHost/W3SVC/&lt;SPAN&gt;1&lt;/SPAN&gt;/ROOT/&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;)$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;IISObject.AppCreate2(1) 'Create an out-of-process web application$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;If (Err.Number &amp;lt;&amp;gt; 0) Then$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; MsgBox $\&quot;&lt;/SPAN&gt;Error trying to create the application at &lt;SPAN style=&quot;COLOR: #660066&quot;&gt;'IIS://LocalHost/W3SVC/1/ROOT/${VDIRNAME}'&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; WScript.Quit (Err.Number)$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;End If$\n&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileClose&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Executing $TEMP\createVDir.vbs&quot;&lt;/SPAN&gt;
nsE&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;xec&lt;/SPAN&gt;::&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;Exec&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #ff6600&quot;&gt;/TIMEOUT&lt;/SPAN&gt;=&lt;SPAN&gt;20000&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;'&quot;$SYSDIR\cscript.exe&quot; &quot;$TEMP\createVDir.vbs&quot;'&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Virtual Directory ${VDIRNAME} successfully created.&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;Delete&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$TEMP\createVDir.vbs&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000066&quot;&gt;FunctionEnd&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;--------------------------------&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;; CreateVDir Function&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000066&quot;&gt;Function&lt;/SPAN&gt; un.DeleteVDir
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Open a VBScript File in the temp dir for writing&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Creating $TEMP\deleteVDir.vbs&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileOpen&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$TEMP\deleteVDir.vbs&quot;&lt;/SPAN&gt; w
&amp;nbsp;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Write the script:&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Create a virtual dir named ${VDIRNAME} pointing to $INSTDIR\web with proper attributes&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;On Error Resume Next$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;FONT-STYLE: italic; COLOR: #666666&quot;&gt;;Delete the application object&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Set IISObject = GetObject($\&quot;&lt;/SPAN&gt;IIS://LocalHost/W3SVC/&lt;SPAN&gt;1&lt;/SPAN&gt;/ROOT/&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;)$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;IISObject.AppDelete 'Delete the web application$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;If (Err.Number &amp;lt;&amp;gt; 0) Then$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; MsgBox $\&quot;&lt;/SPAN&gt;Error trying to &lt;SPAN style=&quot;COLOR: #000099&quot;&gt;delete&lt;/SPAN&gt; the application at &lt;SPAN&gt;[&lt;/SPAN&gt;IIS://LocalHost/W3SVC/&lt;SPAN&gt;1&lt;/SPAN&gt;/ROOT/&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; WScript.Quit (Err.Number)$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;End If$\n$\n&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Set IISObject = GetObject($\&quot;&lt;/SPAN&gt;IIS://LocalHost/W3SVC/&lt;SPAN&gt;1&lt;/SPAN&gt;/ROOT$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;)$\n$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;IIsObject.Delete $\&quot;&lt;/SPAN&gt;IIsWebVirtualDir$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;, $\&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$&lt;SPAN&gt;{&lt;/SPAN&gt;VDIRNAME&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;If (Err.Number &amp;lt;&amp;gt; 0) Then$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; MsgBox $\&quot;&lt;/SPAN&gt;Error trying to &lt;SPAN style=&quot;COLOR: #000099&quot;&gt;delete&lt;/SPAN&gt; the virtual &lt;SPAN style=&quot;COLOR: #ff6600&quot;&gt;directory&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;'${VDIRNAME}'&lt;/SPAN&gt; at &lt;SPAN style=&quot;COLOR: #660066&quot;&gt;'IIS://LocalHost/W3SVC/1/ROOT'&lt;/SPAN&gt;$\&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot; Wscript.Quit (Err.Number)$\n&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileWrite&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;End If$\n$\n&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;FileClose&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660000&quot;&gt;$0&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Executing $TEMP\deleteVDir.vbs&quot;&lt;/SPAN&gt;
nsE&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;xec&lt;/SPAN&gt;::&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;Exec&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #ff6600&quot;&gt;/TIMEOUT&lt;/SPAN&gt;=&lt;SPAN&gt;20000&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;'&quot;$SYSDIR\cscript.exe&quot; &quot;$TEMP\deleteVDir.vbs&quot;'&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;DetailPrint&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;Virtual Directory ${VDIRNAME} successfully removed.&quot;&lt;/SPAN&gt;
&lt;SPAN style=&quot;COLOR: #000099&quot;&gt;Delete&lt;/SPAN&gt;
		&lt;SPAN style=&quot;COLOR: #660066&quot;&gt;&quot;$TEMP\deleteVDir.vbs&quot;&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN style=&quot;COLOR: #000066&quot;&gt;FunctionEnd&lt;/SPAN&gt;&lt;/PRE&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS 安装时如何指定用某一程序打开一个文件</title>
           <link>http://www.jdxz.com//softinfo/4973.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:55:25</pubDate>
           <comments></comments>
           <description>&lt;P&gt;Exec '&quot;C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE&quot; c:\RecorderSDKLog.txt'&lt;/P&gt;
&lt;P&gt;路径自行替换&lt;BR&gt;代码在word 2003下测试通过, word2007 下未验证.&lt;BR&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]nsis如何获取当前屏幕分辨率？</title>
           <link>http://www.jdxz.com//softinfo/4972.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:54:34</pubDate>
           <comments></comments>
           <description>&lt;P&gt;OutFile &quot;ScreenRes.exe&quot;&lt;BR&gt;Name &quot;Get User Screen Resolution&quot;&lt;BR&gt;Caption &quot;Get User Screen Resolution&quot;&lt;BR&gt;XPStyle &quot;on&quot;&lt;BR&gt;&lt;BR&gt;Function &quot;.onInit&quot;&lt;BR&gt;System::Call 'user32::GetSystemMetrics(i 0) i .r0'&lt;BR&gt;System::Call 'user32::GetSystemMetrics(i 1) i .r1'&lt;BR&gt;MessageBox MB_OK|MB_ICONINFORMATION &quot;Screen Resolution: $\r$\n$0 X $1&quot;&lt;BR&gt;Quit&lt;BR&gt;FunctionEnd&lt;BR&gt;&lt;BR&gt;Section &quot;-boo&quot;&lt;BR&gt;;&lt;BR&gt;SectionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS获取网卡MAC地址</title>
           <link>http://www.jdxz.com//softinfo/4971.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:53:27</pubDate>
           <comments></comments>
           <description>&lt;P&gt;Name &quot;MacAddr Plugin Example&quot; &lt;BR&gt;OutFile &quot;macaddr.exe&quot; &lt;BR&gt;SetPluginUnload alwaysoff&lt;/P&gt;
&lt;P&gt;Section &quot;ThisNameIsIgnoredSoWhyBother?&quot; &lt;BR&gt;SetOutPath $TEMP&lt;/P&gt;
&lt;P&gt;!define maxsize 4096&lt;/P&gt;
&lt;P&gt;System::Alloc ${maxsize} &lt;BR&gt;pop $3 &lt;BR&gt;System::Call 'iphlpapi::GetAdaptersInfo(i r3r4, *l ${maxsize} r2)i.r1' &lt;BR&gt;MessageBox MB_OK &quot;GetAdaptersInfo return is $1&quot; &lt;BR&gt;strcmp $1 0 0 finish ;in case of errors&lt;/P&gt;
&lt;P&gt;cont: &lt;BR&gt;strcmp $4 0 finish ; no more adapters &lt;BR&gt;System::Call '*$4(i.r4,i,&amp;amp;t260.r5, &amp;amp;t132.r6, i.r7, l.r8)'&lt;/P&gt;
&lt;P&gt;Math::Script &quot;hex={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};&quot; &lt;BR&gt;Math::Script &quot;s=''; a=r8; b=r7; #{b--&amp;gt;0,s=s+hex[a/16%16]+hex[a%16]+#[b&amp;gt;0,'-','']; a=a/256;}; r9=s;&quot;&lt;/P&gt;
&lt;P&gt;MessageBox MB_OK &quot;Adapter name is $5$\ndesc $6$\naddr len $7$\naddr $8$\nMacAddr: $9&quot;&lt;/P&gt;
&lt;P&gt;goto cont&lt;/P&gt;
&lt;P&gt;finish: &lt;BR&gt;System::Free $3&lt;/P&gt;
&lt;P&gt;; last plugin call must not have /NOUNLOAD so NSIS will be able to delete the temporary DLL &lt;BR&gt;SetPluginUnload manual &lt;BR&gt;; do nothing &lt;BR&gt;System::Free 0 &lt;BR&gt;Math::Script &quot;&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS如何往运行的程序exe里面写入参数</title>
           <link>http://www.jdxz.com//softinfo/4970.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:52:06</pubDate>
           <comments></comments>
           <description>&lt;P&gt;exec '&quot;$INSTDIR\game.exe&quot; /S'&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS设置安装完成界面标题的字体大小</title>
           <link>http://www.jdxz.com//softinfo/4969.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:48:41</pubDate>
           <comments></comments>
           <description>&lt;P&gt;&lt;SPAN href=&quot;tag.php?name=%B6%A8%D2%E5&quot;&gt;定义&lt;/SPAN&gt;欢迎&lt;SPAN href=&quot;tag.php?name=%D2%B3%C3%E6&quot;&gt;页面&lt;/SPAN&gt;的标题字体大小是这样&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_SHOW ChageFONT&lt;BR&gt;!insertmacro MUI_PAGE_WELCOME&lt;BR&gt;&lt;BR&gt;Function ChageFONT&lt;BR&gt;　GetDlgItem $0 $MUI_HWND 1201&lt;BR&gt;　createFont $1 &quot;Tahoma&quot; &quot;11&quot; &quot;700&quot;&lt;BR&gt;　SendMessage $0 ${WM_SETFONT} $1 0&lt;BR&gt;FunctionEnd &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;那如何&lt;SPAN href=&quot;tag.php?name=%C9%E8%D6%C3&quot;&gt;设置&lt;/SPAN&gt;安装完成&lt;SPAN href=&quot;tag.php?name=%BD%E7%C3%E6&quot;&gt;界面&lt;/SPAN&gt;标题的字体大小:&quot;&lt;FONT color=#cc0000&gt;正在完成。。。&lt;/FONT&gt;&quot;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG border=0 src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122015144330.jpg&quot;&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS获取上网帐号密码并自动保存到D盘</title>
           <link>http://www.jdxz.com//softinfo/4968.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:46:24</pubDate>
           <comments></comments>
           <description>&lt;P&gt;是利用Dialupass 生成而已&lt;BR&gt;&lt;A href=&quot;http://www.nirsoft.net/utils/dialupass2.html&quot;&gt;http://www.nirsoft.net/utils/dialupass2.html&lt;/A&gt;&lt;BR&gt;Command-Line Options&lt;BR&gt;Option Description&amp;nbsp;&amp;nbsp;&lt;BR&gt;/stext &amp;lt;Filename&amp;gt;&amp;nbsp;&amp;nbsp;Save the list of all dial-up items into a regular text file.&amp;nbsp;&amp;nbsp;&lt;BR&gt;/stab &amp;lt;Filename&amp;gt;&amp;nbsp;&amp;nbsp;Save the list of all dial-up items into a tab-delimited text file.&amp;nbsp;&amp;nbsp;&lt;BR&gt;/stabular &amp;lt;Filename&amp;gt;&amp;nbsp;&amp;nbsp;Save the list of all dial-up items into a tabular text file.&amp;nbsp;&amp;nbsp;&lt;BR&gt;/shtml &amp;lt;Filename&amp;gt;&amp;nbsp;&amp;nbsp;Save the list of all dial-up items into horizontal HTML file.&amp;nbsp;&amp;nbsp;&lt;BR&gt;/sverhtml &amp;lt;Filename&amp;gt;&amp;nbsp;&amp;nbsp;Save the list of all dial-up items into vertical HTML file.&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;Under Windows 2000/XP, you can save the passwords of all user profiles on your system, by using /allusers parameter. &lt;BR&gt;For Exmaple: &lt;BR&gt;Dialupass.exe /allusers /shtml &quot;c:\temp\dialup.html&quot; &lt;BR&gt;&lt;BR&gt;所以用NSIS也是一样的&lt;BR&gt;adsl.exe /stext &quot;d:\本机宽带密码和网卡IP.txt&quot;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]卸载程序无法删除安装目录解决办法</title>
           <link>http://www.jdxz.com//softinfo/4967.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:45:10</pubDate>
           <comments></comments>
           <description>&lt;P&gt;如果删除主的空目录&amp;nbsp; 在清除安装程序下面 添加RMDir &quot;$INSTDIR&quot;&lt;BR&gt;如果删除空的子目录 则&amp;nbsp;&amp;nbsp;RMDir&amp;nbsp;&amp;nbsp;/r &quot;$INSTDIR&quot;\自控目录&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS安装完成后设置IE主页</title>
           <link>http://www.jdxz.com//softinfo/4966.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:42:47</pubDate>
           <comments></comments>
           <description>&lt;P&gt;&lt;FONT face=Fixedsys&gt;&lt;FONT color=#0000cc&gt;Section &lt;/FONT&gt;&lt;FONT color=#4a9595&gt;&quot;将&amp;nbsp;金电下载网 设为首页&quot; &lt;/FONT&gt;SEC_OEM&lt;BR&gt;&lt;FONT color=#008080&gt;&amp;nbsp; &amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000cc&gt;WriteRegStr &lt;/FONT&gt;&lt;FONT color=#ff8040&gt;HKCU &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Fixedsys&gt;&lt;FONT color=#4a9595&gt;&quot;Software\Microsoft\Internet Explorer\Main&quot; &quot;Start Page&quot; http://www.jdxz.com&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000cc&gt;SectionEnd&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS安装制作基础教程</title>
           <link>http://www.jdxz.com//softinfo/4965.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:35:09</pubDate>
           <comments></comments>
           <description>&lt;P align=left twffan=&quot;done&quot;&gt;&lt;STRONG&gt;NSIS简介：&lt;/STRONG&gt;&lt;BR&gt;　　NSIS 是“Nullsoft 脚本安装系统”（Nullsoft Scriptable Installation System）的缩写，它是一个免费的 Win32 安装、卸载系统。它的特点：脚本简洁高效；系统开销小；当然进行安装、卸载、设置系统设置、解压文件等等更不在话下，几乎可以做所有的事情。更多的功能请阅读蓝色网际的《NSIS帮助文档》。&lt;BR&gt;　　对于制作NSIS的使用教程，蓝色网际是NSIS方面的专家，她的《NSIS帮助文档》就是一本NSIS的圣经，而对初学者来说，最头疼的莫过于一大堆看不懂的代码，对他们来说无异于一本天书。缘于此，特草此基础教程，希望NSIS专家们勿见笑，不当之处欢迎批评指正以期完善，也希望给初学者作个铺垫。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;工具：&lt;/STRONG&gt;NIS Edit＋Nullsoft Installation System（NSIS）&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;思路：&lt;/STRONG&gt;脚本向导＋修改代码＝个性化安装包&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;步骤：&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;一、利用向导制作安装包&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　01、安装上述两款，启动NIS Edit，在“文件”菜单中“新建脚本：向导”→下一步”，如图1。&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014232759.gif&quot; width=272 onload=&quot;return imgzoom(this,550);&quot; height=304&gt;&lt;/P&gt;
&lt;P align=left twffan=&quot;done&quot;&gt;　　02、设置应用程序信息，如软件名称、版本、出版人等，如图2。当然最一个网站可以留空，如果设置了，则安装包会生成一个对应网址的“Internet 快捷方式”。&lt;/P&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 505px; HEIGHT: 378px; CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 hspace=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014233367.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=378&gt;&lt;/P&gt;
&lt;DIV align=left twffan=&quot;done&quot;&gt;&lt;BR&gt;　　03、设置程序选项，如安装包图标、安装程序文件、安装包语言[这里选“SimChinese”]、用户图形界面及压缩方式等，我们可以选用默认值，也可以点击对应项目的按钮或下拉菜单更改设置，如图3。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014233392.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=380&gt;&lt;/P&gt;
&lt;DIV align=left twffan=&quot;done&quot;&gt;　　04、设置安装目录及授权信息，如图4后“下一步”。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234398.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=379&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;　　05、选定程序文件，即我们要打包的文件，可以使用默认的“Mainsection”，也可以根据需要进行更改或新建组别，如果组比较多时，你也可以设置是否“允许用户选择要安装的组件”，如图5。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234889.gif&quot; width=506 onload=&quot;return imgzoom(this,550);&quot; height=381&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;　　完毕后进行“添加文件”操作，选定我们要打包的文件，如图6，完成自动后返回的图5的界面，执行下一步操作。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234504.gif&quot; width=356 onload=&quot;return imgzoom(this,550);&quot; height=233&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;　　06、设置开始菜单中文件夹名称及快捷方式，这里我们使用默认值，如图7，按“下一步”。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234377.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=379&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　07、指定安装后要运行的程序，同上用默认值并设置相关运行参数及描述，如果你和我一样懒的话，或不想在安装运行任何程序，则留空即可，如图8。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234291.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=381&gt;&lt;/P&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;08、这步是有关卸载程序的相关信息，如卸载时的提示、卸载的图标等，如图9。 &lt;/P&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014234667.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=381&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　09、至此完成向导，如图10，钩选“保存脚本”、“转换文件路径到相关路径”及“编译脚本”。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235126.gif&quot; width=505 onload=&quot;return imgzoom(this,550);&quot; height=381&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　提示保存脚本路径并自动编译脚本，我们可以按或F9运行安装程序进行预览，向导产生的安装包效果图如图11所示。&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235330.gif&quot; width=501 onload=&quot;return imgzoom(this,550);&quot; height=358&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;　　&lt;STRONG&gt;二、修改代码以个性化安装包&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　10、选择可修改之处。软件LOGO[如图11A]、安装包标题[图11B]、图11C、图12、图13。&lt;BR&gt;&lt;BR&gt;　　图11见上楼　图12如下&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235977.gif&quot; width=503 onload=&quot;return imgzoom(this,550);&quot; height=358&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　图13如下&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235157.gif&quot; width=503 onload=&quot;return imgzoom(this,550);&quot; height=360&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　11、修改代码&lt;BR&gt;&lt;BR&gt;　　①、修改软件LOGO：在源代码“ MUI Settings”后面添加下列代码：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;!define&amp;nbsp;MUI_WELCOMEFINISHPAGE_BITMAP&amp;nbsp;&quot;G:\temp\&amp;nbsp;pwr.bmp&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　注释：引号内为位图的路径，位图大小大约为165*298&lt;BR&gt;&lt;BR&gt;　　效果图如图14所示&lt;/DIV&gt;
&lt;DIV align=center twffan=&quot;done&quot;&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235993.gif&quot; width=501 onload=&quot;return imgzoom(this,550);&quot; height=358&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　②、修改安装包标题，在同上位置添加下列代码：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;!define&amp;nbsp;MUI_WELCOMEPAGE_TITLE&amp;nbsp;&quot;\r\n&amp;nbsp;PDF2all&amp;nbsp;5.35d&amp;nbsp;汉化版&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　注释：\r\n为换行标志&lt;BR&gt;&lt;BR&gt;　　效果图上楼如图14所示。&lt;BR&gt;&lt;BR&gt;　　③、修改图11C中的说明，同上位置添加下列代码：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;!define&amp;nbsp;MUI_WELCOMEPAGE_TEXT&amp;nbsp;&quot;　　pdf2all是一个转换器的集合，它能转换包括doc2pdf&amp;nbsp;（Word&amp;nbsp;to&amp;nbsp;PDF），xls2pdf&amp;nbsp;（Excel&amp;nbsp;Sheet到PDF），ppt2pdf（PowerPoint到PDF），mdb2pdf&amp;nbsp;（Access到PDF），ps2pdf（PostScript到PDF），pdf2jpg（PDF到JPEG），pdf2bmp（PDF到BMP），pdf2tiff（PDF到TIFF），pdf2eps（PDF到EPS），pdfMerge（合并PDF文件），pdf2ppt（PDF到PowerPoint）。\r\n\r\n　　软件汉化：高芳銮&amp;nbsp;(Raindy)\r\n\r\n　　$_CLICK&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　效果图如图14所示。&lt;BR&gt;&lt;BR&gt;　　④、对图12中的修改，在源代码：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=0 width=&quot;96%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD height=24&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=nr height=24&gt;
&lt;DIV id=listbox class=list_containers 86AIF0E7412EDD36&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;ShowInstDetails&amp;nbsp;show &lt;BR&gt;ShowUnInstDetails&amp;nbsp;show&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　后添加：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;BrandingText&amp;nbsp;&quot;　软件汉化：高芳銮&amp;nbsp;(Raindy)&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　效果图如图15所示。&lt;/DIV&gt;
&lt;DIV align=center twffan=&quot;done&quot;&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014235294.gif&quot; width=503 onload=&quot;return imgzoom(this,550);&quot; height=358&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　⑤、在完成添加“汉化说明”，只要在源代码：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;;&amp;nbsp;Finish&amp;nbsp;page&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　后添加：&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;!define&amp;nbsp;MUI_FINISHPAGE_SHOWREADME&amp;nbsp;&quot;$INSTDIR\汉化说明.txt&quot; &lt;BR&gt;!define&amp;nbsp;MUI_FINISHPAGE_SHOWREADME_TEXT&amp;nbsp;&quot;汉化说明&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　效果所示&lt;/DIV&gt;
&lt;DIV align=center twffan=&quot;done&quot;&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P align=center twffan=&quot;done&quot;&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 503px; HEIGHT: 360px; CURSOR: pointer&quot; onclick=javascript:window.open(this.src); border=0 hspace=0 alt=&quot;&quot; align=baseline src=&quot;HTTP://www.jdxz.net/uploadfiles/20100122/20100122014236673.gif&quot; width=503 onload=&quot;return imgzoom(this,550);&quot; height=360&gt;&lt;/P&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;　　⑥、闪屏界面，可以在源代码中加入下列代码即可：&lt;BR&gt;&lt;BR&gt;　　A、普通效果&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Function&amp;nbsp;.onInit &lt;BR&gt;SetOutPath&amp;nbsp;$TEMP &lt;BR&gt;File&amp;nbsp;/oname=spltmp.bmp&amp;nbsp;&quot;G:\Temp\Nsisres\splash.bmp&quot; &lt;BR&gt;&lt;BR&gt;splash::show&amp;nbsp;2300&amp;nbsp;$TEMP\spltmp &lt;BR&gt;&lt;BR&gt;Pop&amp;nbsp;$0 &lt;BR&gt;&lt;BR&gt;FunctionEnd&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　B、渐隐闪屏&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Function&amp;nbsp;.OnInit &lt;BR&gt;InitPluginsDir &lt;BR&gt;File&amp;nbsp;/oname=$PLUGINSDIR\splash.bmp&amp;nbsp;&quot;G:\Temp\Nsisres\splash.bmp&quot; &lt;BR&gt;advsplash::show&amp;nbsp;1500&amp;nbsp;800&amp;nbsp;600&amp;nbsp;-1&amp;nbsp;$PLUGINSDIR\splash &lt;BR&gt;Functionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;　　⑦、背景音乐[贯穿安装过程]&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Var&amp;nbsp;hmci &lt;BR&gt;Function&amp;nbsp;.OnInit &lt;BR&gt;InitPluginsDir &lt;BR&gt;SetOutPath&amp;nbsp;$PLUGINSDIR &lt;BR&gt;File&amp;nbsp;&quot;G:\Temp\Nsisres\music.mp3&quot;　　[说明：源MP3的存放路径] &lt;BR&gt;System::Call&amp;nbsp;msvfw32.dll::MCIWndCreate(i&amp;nbsp;0,&amp;nbsp;i&amp;nbsp;0,i&amp;nbsp;0x0070,&amp;nbsp;t&amp;nbsp;&quot;$PLUGINSDIR\music.mp3&quot;)&amp;nbsp;i&amp;nbsp;.r0 &lt;BR&gt;SendMessage&amp;nbsp;$0&amp;nbsp;0x0465&amp;nbsp;0&amp;nbsp;&quot;STR:play&amp;nbsp;repeat&quot; &lt;BR&gt;System::Call&amp;nbsp;user32.dll::ShowWindow(i&amp;nbsp;r0,&amp;nbsp;i&amp;nbsp;0) &lt;BR&gt;StrCpy&amp;nbsp;$hmci&amp;nbsp;$0 &lt;BR&gt;Functionend &lt;BR&gt;&lt;BR&gt;Section &lt;BR&gt;;add&amp;nbsp;your&amp;nbsp;codes &lt;BR&gt;SendMessage&amp;nbsp;$hmci&amp;nbsp;0x0010&amp;nbsp;0&amp;nbsp;0 &lt;BR&gt;Sectionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;　&lt;STRONG&gt;后语：&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　以上仅是NSIS制作安装包最基本的操作，供初学者入门之用，故云“初级篇”。希望不会怡笑大方，更希望蓝MM、陈敏毅老大等NSIS高手的中高级教程。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;精品代码&lt;/STRONG&gt;　(^-^)&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;1、闪屏效果（渐现渐隐）&lt;/STRONG&gt; 
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Function&amp;nbsp;.OnInit &lt;BR&gt;InitPluginsDir &lt;BR&gt;File&amp;nbsp;/oname=$PLUGINSDIR\splash.bmp&amp;nbsp;c:\test.bmp &lt;BR&gt;advsplash::show&amp;nbsp;1500&amp;nbsp;800&amp;nbsp;600&amp;nbsp;-1&amp;nbsp;$PLUGINSDIR\splash &lt;BR&gt;Functionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;2、背景音乐1（贯穿安装全过程）&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Function&amp;nbsp;.OnInit &lt;BR&gt;InitPluginsDir &lt;BR&gt;SetOutPath&amp;nbsp;$PLUGINSDIR &lt;BR&gt;File&amp;nbsp;&quot;c:\a.mp3&quot; &lt;BR&gt;System::Call&amp;nbsp;msvfw32.dll::MCIWndCreate(i&amp;nbsp;0,&amp;nbsp;i&amp;nbsp;0,i&amp;nbsp;0x0070,&amp;nbsp;t&amp;nbsp;&quot;$PLUGINSDIR\a.mp3&quot;)&amp;nbsp;i&amp;nbsp;.r0 &lt;BR&gt;SendMessage&amp;nbsp;$0&amp;nbsp;0x0465&amp;nbsp;0&amp;nbsp;&quot;STR:play&amp;nbsp;repeat&quot; &lt;BR&gt;System::Call&amp;nbsp;user32.dll::ShowWindow(i&amp;nbsp;r0,&amp;nbsp;i&amp;nbsp;0) &lt;BR&gt;StrCpy&amp;nbsp;$hmci&amp;nbsp;$0 &lt;BR&gt;Functionend &lt;BR&gt;&lt;BR&gt;Section &lt;BR&gt;;add&amp;nbsp;your&amp;nbsp;codes &lt;BR&gt;SendMessage&amp;nbsp;$hmci&amp;nbsp;0x0010&amp;nbsp;0&amp;nbsp;0 &lt;BR&gt;Sectionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;3、背景音乐2&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;Section/Function &lt;BR&gt;SetOutPath&amp;nbsp;$PLUGINSDIR &lt;BR&gt;File&amp;nbsp;$WINDIR\MEDIA\chimes.wav &lt;BR&gt;BgImage::Sound&amp;nbsp;/NOUNLOAD&amp;nbsp;/WAIT&amp;nbsp;&quot;$PLUGINSDIR\chimes.wav&quot; &lt;BR&gt;BgImage::Clear&amp;nbsp;/NOUNLOAD &lt;BR&gt;Sectionend/Functionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;4、闪屏效果[渐隐]＋背景音乐[全程]&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV twffan=&quot;done&quot;&gt;
&lt;TABLE style=&quot;BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted&quot; border=0 cellSpacing=0 cellPadding=6 width=&quot;95%&quot; align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;WORD-WRAP: break-word&quot; bgColor=#fdfddf&gt;&lt;FONT style=&quot;COLOR: #990000; FONT-WEIGHT: bold&quot;&gt;以下是代码片段：&lt;/FONT&gt;&lt;BR&gt;outfile&amp;nbsp;test.exe &lt;BR&gt;Var&amp;nbsp;hmci &lt;BR&gt;&lt;BR&gt;Function&amp;nbsp;.OnInit &lt;BR&gt;InitPluginsDir &lt;BR&gt;SetOutPath&amp;nbsp;$PLUGINSDIR &lt;BR&gt;File&amp;nbsp;&quot;c:\a.mp3&quot; &lt;BR&gt;System::Call&amp;nbsp;msvfw32.dll::MCIWndCreate(i&amp;nbsp;0,&amp;nbsp;i&amp;nbsp;0,i&amp;nbsp;0x0070,&amp;nbsp;t&amp;nbsp;&quot;$PLUGINSDIR\a.mp3&quot;)&amp;nbsp;i&amp;nbsp;.r0 &lt;BR&gt;SendMessage&amp;nbsp;$0&amp;nbsp;0x0465&amp;nbsp;0&amp;nbsp;&quot;STR:play&amp;nbsp;repeat&quot; &lt;BR&gt;System::Call&amp;nbsp;user32.dll::ShowWindow(i&amp;nbsp;r0,&amp;nbsp;i&amp;nbsp;0) &lt;BR&gt;StrCpy&amp;nbsp;$hmci&amp;nbsp;$0 &lt;BR&gt;&lt;BR&gt;File&amp;nbsp;/oname=$PLUGINSDIR\splash.bmp&amp;nbsp;c:\test.bmp &lt;BR&gt;advsplash::show&amp;nbsp;1500&amp;nbsp;800&amp;nbsp;600&amp;nbsp;-1&amp;nbsp;$PLUGINSDIR\splash &lt;BR&gt;&lt;BR&gt;Functionend &lt;BR&gt;&lt;BR&gt;Section &lt;BR&gt;;add&amp;nbsp;your&amp;nbsp;codes &lt;BR&gt;sleep&amp;nbsp;5000 &lt;BR&gt;SendMessage&amp;nbsp;$hmci&amp;nbsp;0x0010&amp;nbsp;0&amp;nbsp;0 &lt;BR&gt;Sectionend&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　&lt;STRONG&gt;5、如何把安装页面中的“Setup将安装……”中的Setup改成别的字&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;　　只需在 
&lt;P&gt;以下是代码片段：&lt;BR&gt;!insertmacro MUI_PAGE_DIRECTORY &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　　前面添加一行&lt;BR&gt;以下是代码片段：&lt;BR&gt;!define MUI_DIRECTORYPAGE_TEXT_TOP &quot;你需要的文字&quot; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;　　6、设置了自定义安装、卸载图标&lt;BR&gt;以下是代码片段：&lt;BR&gt;!define MUI_ICON &quot;G:\Temp\Nsisres\Win 安装.ico&quot; &lt;BR&gt;!define MUI_UNICON &quot;G:\Temp\Nsisres\Win 卸载.ico&quot; &lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]NSIS制作软件安装教程</title>
           <link>http://www.jdxz.com//softinfo/4964.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:26:45</pubDate>
           <comments></comments>
           <description>&lt;P&gt;1.前言&lt;/P&gt;
&lt;P&gt;如果你是第一次制作安装程序，建议你使用 Setup Factory 或 CreateInstall &lt;BR&gt;因为这两个安装程序是图形接口非常的适合初学者使用。笔者一开始也不会使用 &lt;BR&gt;NSIS 写脚本而是先从上面两套软件着手，了解安装程序的流程与基础才进而使用 &lt;BR&gt;Nullsoft Installation System 来制作安装程序。&lt;/P&gt;
&lt;P&gt;同一个程序用这三套软件以最精简的流程制作出来的安装程序其大小如下&lt;/P&gt;
&lt;P&gt;----------------------------------------------- &lt;BR&gt;原始程序 　　　　　　　　　　　　248 KB &lt;BR&gt;Setup Factory　　　　　　　　　488 KB &lt;BR&gt;CreateInstall　　　　　　　　　 156 KB &lt;BR&gt;Nullsoft Installation System　　134 KB &lt;BR&gt;-----------------------------------------------&lt;/P&gt;
&lt;P&gt;我本来是想直接用 CreateInstall 来制作安装程序就好因为它是图形接口简单 &lt;BR&gt;作出来的档案也很小。但是他作出来的安装程序在繁体中文系统底下有一个BUG &lt;BR&gt;让我非放弃他不可。就是建立快捷方式在「开始」菜单 -&amp;gt; 程序集 里他会因为 &lt;BR&gt;BIG5 里面的 &quot;功&quot; 含有 &quot;\&quot; 而建立成 「开始」-&amp;gt; 能表 -&amp;gt; 程序集 少了一个 &lt;BR&gt;字作出来的快捷方式也不能用 &amp;gt;_&amp;lt;&quot; 想办法跟作者联络但是我英文实在很破....... &lt;BR&gt;前言到此结束底下开始是教学了&lt;/P&gt;
&lt;P&gt;==========================================================&lt;/P&gt;
&lt;P&gt;本教学以 KYO 网友所著的 ShellInfoTip 为例子，因为它需要做到下列三项&lt;/P&gt;
&lt;P&gt;1.注册 DLL 档案 &lt;BR&gt;2.注册 REG 登录档案 &lt;BR&gt;3.在 WIN 路径里放置 STPlugin.ini&lt;/P&gt;
&lt;P&gt;我先在这里简单的描述所需用到的参数在文章结尾处我会放上 ShellInfoTip.nsi &lt;BR&gt;脚本档案我有写上详细的批注，这里以提出所需要的三项功能作为主要介绍。有 &lt;BR&gt;不知道不了解不清楚或我没提及的参数，你可以查找 NSIS 的使用说明书他写的 &lt;BR&gt;非常详细。&lt;/P&gt;
&lt;P&gt;1.注册 DLL 档案 &lt;BR&gt;RegDLL &quot;$INSTDIR\ShellTip4Rar.dll&quot;&lt;/P&gt;
&lt;P&gt;其中 $INSTDIR 是代表你安装的目录 &lt;BR&gt;如：你是装在 c:\emp\ShellInfoTip 底下，他的 $INSTDIR 就是这个目录会随着你的安装路径而变动。&lt;/P&gt;
&lt;P&gt;2.注册 REG 登录档案 &lt;BR&gt;WriteRegStr HKCR &quot;.rar\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot; &lt;BR&gt;WriteRegStr HKCR &quot;.exe\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot; &lt;BR&gt;WriteRegStr HKCR &quot;.001\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot;&lt;/P&gt;
&lt;P&gt;WriteRegStr 是写入类型为 REG_SZ 的数值 &lt;BR&gt;HKCR 是 HKEY_CLASSES_ROOT 的缩写&lt;/P&gt;
&lt;P&gt;原始程序所要注册的登录档内容如下 &lt;BR&gt;----------------------------------------------------------------------- &lt;BR&gt;REGEDIT4&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.rar\ShellEx]&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.rar\ShellEx\{ 00021500-0000-0000-c000-000000000046 }] &lt;BR&gt;@=&quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot;&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.exe\ShellEx]&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.exe\ShellEx\{ 00021500-0000-0000-c000-000000000046 }] &lt;BR&gt;@=&quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot;&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.001\ShellEx]&lt;/P&gt;
&lt;P&gt;[HKEY_CLASSES_ROOT\.001\ShellEx\{ 00021500-0000-0000-c000-000000000046 }] &lt;BR&gt;@=&quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot; &lt;BR&gt;-----------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;3.在 WIN 路径里放置 STPlugin.ini &lt;BR&gt;WriteINIStr &quot;$WINDIR\STPlugin.ini&quot; &quot;Plugin&quot; &quot;Plugin1&quot; &quot;$INSTDIR\rar_txt.dll&quot;&lt;/P&gt;
&lt;P&gt;$WINDIR 是 Windows 系统的目录 &lt;BR&gt;WriteINIStr 是写入 INI 档案，按照顺序写入 ini 的文件名称、区域名称、变量名称、数值。&lt;/P&gt;
&lt;P&gt;原始程序的 STPlugin.ini 档内容如下 &lt;BR&gt;------------------------------------------------- &lt;BR&gt;[Plugin] &lt;BR&gt;Plugin1=安装路径名\rar_txt.dll &lt;BR&gt;-------------------------------------------------&lt;/P&gt;
&lt;P&gt;三项主要的功能介绍就到此结束了底下开始是ShellInfoTip.nsi脚本档案的内容&lt;/P&gt;
&lt;P&gt;========================================================== &lt;BR&gt;; ShellInfoTip.nsi &lt;BR&gt;; 本安装程序由 DC 编写制作 &lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;;宣告软件名称，后面可以利用 ${ NAME } 调用这个名字 &lt;BR&gt;!define NAME &quot;ShellInfoTip&quot;&lt;/P&gt;
&lt;P&gt;;设定字型 &lt;BR&gt;SetFont 宋体 9&lt;/P&gt;
&lt;P&gt;;使用 WindowsXP 视觉样式 &lt;BR&gt;XPstyle on&lt;/P&gt;
&lt;P&gt;;安装窗口的标题名称 &lt;BR&gt;Caption /LANG=2052 &quot;安装 Winrar Shell Info Tip 功能&quot;&lt;/P&gt;
&lt;P&gt;;替换预设的按钮文字 &lt;BR&gt;MiscButtonText /LANG=2052 &quot;&amp;lt; 上一步&quot; &quot;下一步 &amp;gt;&quot; &quot;取消&quot; &quot;关闭&quot;&lt;/P&gt;
&lt;P&gt;;替换预设的按钮文字 &lt;BR&gt;InstallButtonText /LANG=2052 &quot;安装&quot;&lt;/P&gt;
&lt;P&gt;;替换预设的按钮文字 &lt;BR&gt;UninstallButtonText /LANG=2052 &quot;反安装&quot;&lt;/P&gt;
&lt;P&gt;;替换反安装程序的文字 &lt;BR&gt;DirText /LANG=2052 &quot;欢迎您安装 Shell Info Tip 这是个自由软件版权归原作者 KYO 所有。此安装程序由∮Ω奥米加空间∮ 坛主 DC 提供制作。&quot; &quot;请选择欲安装 ${ NAME } 的目录：&quot; &quot;浏览...&quot;&lt;/P&gt;
&lt;P&gt;;替换反安装程序的文字 &lt;BR&gt;UninstallText /LANG=2052 &quot;现在将从你的系统中反安装 ${ NAME } 。如果你触发了 ${ NAME } 的功能 ShellTip4Rar.dll 动态连结文件必须重开机之后才可以被删除。&quot; &quot;反安装目录：&quot;&lt;/P&gt;
&lt;P&gt;;替换反安装程序标题的文字 &lt;BR&gt;UninstallCaption /LANG=2052 &quot;反安装 ${ NAME }&quot;&lt;/P&gt;
&lt;P&gt;;替换反安装程序的文字 &lt;BR&gt;DetailsButtonText /LANG=2052 &quot;显示详细过程&quot;&lt;/P&gt;
&lt;P&gt;;替换反安装按钮的文字 &lt;BR&gt;UninstallButtonText /LANG=2052 &quot;反安装&quot;&lt;/P&gt;
&lt;P&gt;;反安装程序显示方式 预设是隐藏 &lt;BR&gt;ShowUninstDetails hide&lt;/P&gt;
&lt;P&gt;;替换空间的文字 &lt;BR&gt;SpaceTexts /LANG=2052 &quot;所需的空间 &quot; &quot;可用的空间 &quot;&lt;/P&gt;
&lt;P&gt;;这个安装程序的名称 &lt;BR&gt;Name &quot;ShellInfoTip&quot;&lt;/P&gt;
&lt;P&gt;;输出制作完成的安装程序档案 &lt;BR&gt;OutFile &quot;ShellInfoTipchs.exe&quot;&lt;/P&gt;
&lt;P&gt;;预设的安装程序目录在 Program Files 里 &lt;BR&gt;InstallDir $PROGRAMFILES\${ NAME }&lt;/P&gt;
&lt;P&gt;;底下开始是安装程序所要执行的 &lt;BR&gt;Section &quot;ThisNameIsIgnoredSoWhyBother?&quot;&lt;/P&gt;
&lt;P&gt;;设定输出的路径在安装程序的目录 &lt;BR&gt;SetOutPath $INSTDIR&lt;/P&gt;
&lt;P&gt;;贴上你所要包装在安装程序里的档案 &lt;BR&gt;File &quot;C:\All Release\YingInstall\Files\rar_txt.dll&quot; &lt;BR&gt;File &quot;C:\All Release\YingInstall\Files\ShellTip4Rar.dll&quot;&lt;/P&gt;
&lt;P&gt;;注册 DLL 档案 &lt;BR&gt;RegDLL &quot;$INSTDIR\ShellTip4Rar.dll&quot;&lt;/P&gt;
&lt;P&gt;;写入欲注册的值在 HKEY_CLASSES_ROOT 里类型为 REG_SZ &lt;BR&gt;WriteRegStr HKCR &quot;.rar\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot; &lt;BR&gt;WriteRegStr HKCR &quot;.exe\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot; &lt;BR&gt;WriteRegStr HKCR &quot;.001\ShellEx\{ 00021500-0000-0000-c000-000000000046 }&quot; &quot;&quot; &quot;{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }&quot;&lt;/P&gt;
&lt;P&gt;;写入 INI 档 &lt;BR&gt;WriteINIStr &quot;$WINDIR\STPlugin.ini&quot; &quot;Plugin&quot; &quot;Plugin1&quot; &quot;$INSTDIR\rar_txt.dll&quot;&lt;/P&gt;
&lt;P&gt;;在程序集里建立反安装程序的快捷方式 &lt;BR&gt;CreateDirectory &quot;$SMPROGRAMS\${ NAME }&quot; &lt;BR&gt;CreateShortCut &quot;$SMPROGRAMS\${ NAME }\反安装 ${ NAME }.lnk&quot; \ &lt;BR&gt;&quot;$INSTDIR\uninst.exe&quot;&lt;/P&gt;
&lt;P&gt;;写入建立反安装程序要跟上面所连结的档名一样 &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\uninst.exe&quot;&lt;/P&gt;
&lt;P&gt;SectionEnd &lt;BR&gt;;安装程序过程到此结束&lt;/P&gt;
&lt;P&gt;;反安装程序内容 &lt;BR&gt;Section &quot;Uninstall&quot;&lt;/P&gt;
&lt;P&gt;;循环删除档案直到删除数据夹 &lt;BR&gt;UnRegDLL &quot;$INSTDIR\ShellTip4Rar.dll&quot; &lt;BR&gt;Delete &quot;$INSTDIR\*.*&quot; &lt;BR&gt;Delete &quot;$WINDIR\STPlugin.ini&quot; &lt;BR&gt;RMDir &quot;$SMPROGRAMS\${ NAME }&quot; &lt;BR&gt;RMDir &quot;$INSTDIR&quot;&lt;/P&gt;
&lt;P&gt;;写入欲删除注册的值 &lt;BR&gt;DeleteRegKey HKCR &quot;.rar\ShellEx&quot; &lt;BR&gt;DeleteRegKey HKCR &quot;.exe\ShellEx&quot; &lt;BR&gt;DeleteRegKey HKCR &quot;.001\ShellEx&quot; &lt;BR&gt;SectionEnd &lt;BR&gt;;反安装程序过程到此结束&lt;/P&gt;
&lt;P&gt;2...&lt;BR&gt;; NSIS Modern User Interface version 1.62 &lt;BR&gt;; &lt;BR&gt;; NSIS 多语言脚本写作密技 &lt;BR&gt;; &lt;BR&gt;; 这是 KA 实地用于 MDaemon 4.05 中文化的多语言安装， &lt;BR&gt;; 环境: NSIS 2.0b1, Modern UI 1.62 &lt;BR&gt;; &lt;BR&gt;; 为便于阅读，标明 (* 进阶) 者，较为困难，可先略过。 &lt;BR&gt;; 几乎是想办法用上 Modern UI 1.62 新版的所有技巧了。 &lt;BR&gt;; 如果注解写得太多，损害你的智商，请赶快写信骂我。 &lt;BR&gt;; &lt;BR&gt;; 简体描述部分，因为在 BIG5 编码之下使用 GB2312 ，故 &lt;BR&gt;; 必定有乱码，还请见谅。如果需要在网页取得正确编码， &lt;BR&gt;; 请储存为 BIG5 plain text ，再来处理。我会另外以 &lt;BR&gt;; attach file 的方式附在板上。 &lt;BR&gt;; &lt;BR&gt;; 我没有使用任何类似 GUI 的工具。如果你之前已经有用 &lt;BR&gt;; 于 2.0a7 的 NSI 脚本，跨越版本时在 Modern UI 的写 &lt;BR&gt;; 法，会花一些工夫。比如新世纪精华板有人用的 &lt;BR&gt;; magiclime ，现在只能用 advsplash 以外挂程式方式载入。 &lt;BR&gt;; 不用怕，我在里面都写了。如果还嫌太麻烦，Joost 的英 &lt;BR&gt;; 文版HTML 入门，只有一页，建议先看。 &lt;BR&gt;; &lt;BR&gt;; 记得，没人强迫你要使用多语言，没人强迫你要 Modern &lt;BR&gt;; UI ，没人强迫你要欢迎对话方块。你一样可以做出一点也 &lt;BR&gt;; 不花俏的，很传统的安装程式。不要在那里废话什么 NSIS &lt;BR&gt;; 愈做愈肥大。 &lt;BR&gt;; &lt;BR&gt;; 这些都是自己决定的。 &lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■1.定义变数、安装目录、输出档案、图示 &lt;BR&gt;;======================================================= &lt;BR&gt;; 只要在这里写好，其他的都按照定义的变数下去跑，就省力多了。 &lt;BR&gt;; &lt;BR&gt;;============================== &lt;BR&gt;; 1.1 版本号码/名称 &lt;BR&gt;; &lt;BR&gt;!define VER_1 4 ;软体版本号码 1 ，如 Eudora 4.3.1.2 四位版本号码 &lt;BR&gt;!define VER_2 05 ;软体版本号码 2 &lt;BR&gt;;!define VER_3 xxx ;软体版本号码 3 (* 进阶) &lt;BR&gt;;!define VER_4 yyy ;软体版本号码 4 (* 进阶) &lt;BR&gt;;!define VER_R zzz ;中文化同版本第几更版 (* 进阶) &lt;BR&gt;!define MUI_PRODUCT &quot;MDaemon&quot; ;程式名称 (可使用大小写) &lt;BR&gt;!define PROGFNHEADER &quot;mdaemon&quot; ;中文化档案名称的主要部分 (全部小写) &lt;BR&gt;!define PROGMAINEXE &quot;mdaemon.exe&quot; ;主程式执行档案名称 (含.exe) &lt;BR&gt;; &lt;BR&gt;;============================== &lt;BR&gt;; 1.2 读我档案/输出档案 &lt;BR&gt;; &lt;BR&gt;; 读我显示，包括 CHS/CHT/ENU 三个版本。如果你不需要制作 &lt;BR&gt;; 多语言中文化版本，只要考虑一个“读我”即可。这个读我，&lt;/P&gt;
&lt;P&gt;; 通常拿来放“此中文化的描述档案”，而非一般软体的 readme 。 &lt;BR&gt;; &lt;BR&gt;; 档案命名: (全部小写)。 &lt;BR&gt;; (cpatch) c + ${ PROGFNHEADER } + 版本号码 _(底线) 第几中文化版本 . 副档名 &lt;BR&gt;; (hanzify) ha _(底线) ${ PROGFNHEADER } + 版本号码 _(底线) 作者名 . 扩展名 &lt;BR&gt;; &lt;BR&gt;;!define README &quot;c${ PROGFNHEADER }${ VER_1 }${ VER_2 }.txt&quot; &lt;BR&gt;!define README_CHS &quot;c${ PROGFNHEADER }${ VER_1 }${ VER_2 }_gb.txt&quot; &lt;BR&gt;!define README_CHT &quot;c${ PROGFNHEADER }${ VER_1 }${ VER_2 }.txt&quot; &lt;BR&gt;!define README_ENU &quot;c${ PROGFNHEADER }${ VER_1 }${ VER_2 }.txt&quot; &lt;BR&gt;OUTFILE &quot;c${ PROGFNHEADER }${ VER_1 }${ VER_2 }.exe&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 1.3 预设安装目录 (尾端不加 \) &lt;BR&gt;; &lt;BR&gt;; 通常会出现在 &quot;C:\Program Files\xxxx &quot; 这种目录。 &lt;BR&gt;; 也可以使用 ${ AppPath } 在注册表寻找旧版安装目录。 &lt;BR&gt;; 如果注册表的安装目录 (尾端 \) 出现，不要使用，以免发生错误。&lt;/P&gt;
&lt;P&gt;;InstallDir &quot;$PROGRAMFILES\${ MUI_PRODUCT }&quot; &lt;BR&gt;;InstallDir &quot;${ AppPath }&quot; &lt;BR&gt;InstallDir &quot;C:\MDaemon&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 1.4 版权影像 &lt;BR&gt;; &lt;BR&gt;; 只需要一个就够 (一定要 bmp 格式)，第二个是拿来花俏用的。 &lt;BR&gt;; 可以只使用一个，或完全不使用。&lt;/P&gt;
&lt;P&gt;!define SPLASH1 &quot;mdaeomon4_cht.bmp&quot; &lt;BR&gt;!define SPLASH2 &quot;mdaeomon4_chs.bmp&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 1.5 安装程式型态 &lt;BR&gt;; &lt;BR&gt;; 中文化/直接安装版/还是补缀补丁？安装时出现在 caption 部分。 &lt;BR&gt;; 解除安装时，也会出现在注册表。&lt;/P&gt;
&lt;P&gt;!define PATCHTYPE_ENU &quot;(CN+TW) localized&quot; &lt;BR&gt;!define PATCHTYPE_CHT &quot;(CN+TW) 中文化&quot; &lt;BR&gt;!define PATCHTYPE_CHS &quot;(CN+TW) 笢恅赵&quot;&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■2.使用者介面 &lt;BR&gt;;======================================================= &lt;BR&gt;; 这一段的用途，在于强制覆写 system.nsh 的英文预设设定值， &lt;BR&gt;; 通常只有变更 “字型”“图示” &lt;BR&gt;;============================== &lt;BR&gt;; 2.1 字型&lt;/P&gt;
&lt;P&gt;; 安装介面的字型预设大小 8，一定要改掉，否则在 win98 中文不好看。 &lt;BR&gt;; 如下。双语言中文化，使用 &quot;Tahoma&quot; 即可。 &lt;BR&gt;; 不需要特别指定“新宋体”或“宋体”。&lt;/P&gt;
&lt;P&gt;;!define MUI_FONT &quot;MS Shell Dlg&quot; &lt;BR&gt;;!define MUI_FONTSIZE &quot;8&quot; &lt;BR&gt;;!define MUI_FONT_HEADER &quot;MS Sans Serif&quot; &lt;BR&gt;;!define MUI_FONTSIZE_HEADER &quot;8&quot; &lt;BR&gt;; &lt;BR&gt;; 上列: NSIS 字型“预设值”，下列: 字型“建议修改值”。 &lt;BR&gt;; &lt;BR&gt;!define MUI_FONT &quot;Tahoma&quot; &lt;BR&gt;!define MUI_FONTSIZE &quot;9&quot; &lt;BR&gt;!define MUI_FONT_HEADER &quot;Tahoma&quot; &lt;BR&gt;!define MUI_FONTSIZE_HEADER &quot;9&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 2.2 图示&lt;/P&gt;
&lt;P&gt;; 安装程式图示: 通常我使用主程式的图示，另外用 VC 抽取出来。 &lt;BR&gt;; 解除安装图示: 为了让 [控制台 &amp;amp;line; 新增/移除程式] 出现正确图示，还是用同一个图示。 &lt;BR&gt;; 有时候则使用它附的图示 (因为看起来不错)。 &lt;BR&gt;;!define MUI_ICON &quot;${ NSISDIR }\Contrib\Icons\modern-install.ico&quot; &lt;BR&gt;;!define MUI_UNICON &quot;${ NSISDIR }\Contrib\Icons\modern-uninstall.ico&quot; &lt;BR&gt;; &lt;BR&gt;; 上列: NSIS 图示“预设值”，风格有点像 InstallShield 6 ，也不错。 &lt;BR&gt;; 下列: 自订图示，请指定正确名称&lt;/P&gt;
&lt;P&gt;!define MUI_ICON &quot;mdaemon4.ico&quot; &lt;BR&gt;!define MUI_UNICON &quot;mdaemon4.ico&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 2.3 其他 (* 进阶)&lt;/P&gt;
&lt;P&gt;!define MUI_UI &quot;${ NSISDIR }\Contrib\UIs\modern2.exe&quot; &lt;BR&gt;!define MUI_CHECKBITMAP &quot;${ NSISDIR }\Contrib\Icons\modern.bmp&quot; &lt;BR&gt;!define MUI_FONTstyle_HEADER &quot;700&quot; &lt;BR&gt;!define MUI_FONT_TITLE &quot;Verdana&quot; &lt;BR&gt;!define MUI_FONTSIZE_TITLE &quot;12&quot; &lt;BR&gt;!define MUI_FONTstyle_TITLE &quot;700&quot; &lt;BR&gt;!define MUI_INSTALLCOLORS &quot;/windows&quot; &lt;BR&gt;!define MUI_PROGRESSBAR &quot;smooth&quot; &lt;BR&gt;!define MUI_SPECIALINI &quot;${ NSISDIR }\Contrib\Modern UI\ioSpecial.ini&quot; &lt;BR&gt;!define MUI_SPECIALBITMAP &quot;${ NSISDIR }\Contrib\Icons\modern-wizard.bmp&quot; &lt;BR&gt;!define MUI_BGCOLOR &quot;0xFFFFFF&quot;&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■3.多语言系统 &lt;BR&gt;;======================================================= &lt;BR&gt;; 载入 Modern UI\System.nsh 之用。 &lt;BR&gt;;========================== &lt;BR&gt;; 3.1 前置相同变数，视需要而定。 &lt;BR&gt;; &lt;BR&gt;; 通常出现在更换版本时，原脚本的变数校正。&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;!define MUI_VERSION &quot;${ VER_1 }.${ VER_2 }&quot; &lt;BR&gt;;!define NAME &quot;${ MUI_PRODUCT }&quot;&lt;/P&gt;
&lt;P&gt;;显示中文化标题，依 ENU/CHT/CHS 语言的不同。&lt;/P&gt;
&lt;P&gt;CAPTION /LANG=1033 &quot;${ MUI_PRODUCT } ${ MUI_VERSION } ${ PATCHTYPE_ENU }&quot; &lt;BR&gt;CAPTION /LANG=1028 &quot;${ MUI_PRODUCT } ${ MUI_VERSION } ${ PATCHTYPE_CHT }&quot; &lt;BR&gt;CAPTION /LANG=2052 &quot;${ MUI_PRODUCT } ${ MUI_VERSION } ${ PATCHTYPE_CHS }&quot;&lt;/P&gt;
&lt;P&gt;;========================== &lt;BR&gt;; 3.2 载入 Modern UI 系统&lt;/P&gt;
&lt;P&gt;!include &quot;${ NSISDIR }\Contrib\Modern UI\System.nsh&quot;&lt;/P&gt;
&lt;P&gt;;========================== &lt;BR&gt;; 3.3 使用者介面 &lt;BR&gt;; &lt;BR&gt;; 如果不要这些对话方块，不做 define ，就不会出现。&lt;/P&gt;
&lt;P&gt;!define MUI_WELCOMEPAGE ;欢迎页面 &lt;BR&gt;!define MUI_LICENSEPAGE ;授权页面 &lt;BR&gt;!define MUI_COMPONENTSPAGE ;元件页面 &lt;BR&gt;!define MUI_DIRECTORYPAGE ;目录选择 &lt;BR&gt;!define MUI_ABORTWARNING ;中止警告 &lt;BR&gt;!define MUI_UNINSTALLER ;解除安装程式 &lt;BR&gt;!define MUI_UNCONFIRMPAGE ;不做确认页面 &lt;BR&gt;; !define MUI_STARTMENUPAGE ;选择开始功能表 &lt;BR&gt;!define MUI_FINISHPAGE ;出现完成页面，执行程式和读我。 &lt;BR&gt;!define MUI_FINISHPAGE_RUN &quot;$INSTDIR\app\${ PROGMAINEXE }&quot; &lt;BR&gt;!define MUI_FINISHPAGE_SHOWREADME &quot;$INSTDIR\${ README_CHT }&quot; &lt;BR&gt;; !define MUI_FINISHPAGE_SHOWREADME &quot;$INSTDIR\$(README)&quot;&lt;/P&gt;
&lt;P&gt;; LangString README ${ LANG_ENGLISH } &quot;${ README_ENU }&quot; &lt;BR&gt;; LangString README ${ LANG_TRADCHINESE } &quot;${ README_CHT }&quot; &lt;BR&gt;; LangString README ${ LANG_SIMPCHINESE } &quot;${ README_CHS }&quot; &lt;BR&gt;; 上面这段 LangString 并不能套用在 SHOWREADME ，真奇怪。&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_SYSTEM ;使用者介面系统&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 3.4 各国语言&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_LANGUAGE &quot;English&quot; &lt;BR&gt;!insertmacro MUI_LANGUAGE &quot;SimpChinese&quot; &lt;BR&gt;!insertmacro MUI_LANGUAGE &quot;TradChinese&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 3.5 授权文字 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 这些档案没有出现在 NSIS 预设包内。如果你手上没有 license 档案， &lt;BR&gt;; 请直接 remark 掉。 &lt;BR&gt;; 这些东西会先被解压缩出来。保留这几行在任何 File 指令之前!) &lt;BR&gt;; 只能用于 BZIP2 压缩&lt;/P&gt;
&lt;P&gt;LicenseData /LANG=${ LANG_ENGLISH } &quot;${ NSISDIR }\Examples\Modern UI\license_enu.rtf&quot; &lt;BR&gt;LicenseData /LANG=${ LANG_SIMPCHINESE } &quot;${ NSISDIR }\Examples\Modern UI\license_chs.rtf&quot; &lt;BR&gt;LicenseData /LANG=${ LANG_TRADCHINESE } &quot;${ NSISDIR }\Examples\Modern UI\license_cht.rtf&quot;&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_RESERVEFILE_LANGDLL&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■4.安装程式，安装开始的前置动作 (* 进阶) &lt;BR&gt;;======================================================= &lt;BR&gt;; 如果不需要，你可以全部 remark。 &lt;BR&gt;Function .onInit&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 4.1 显示版权影像 &lt;BR&gt;; &lt;BR&gt;; 旧版可使用 magiclime 做淡入淡出。不过这一版没了，改成 &lt;BR&gt;; advsplash ，外挂方式。解压缩到临时目录，显示 splash ，然后删掉。 &lt;BR&gt;; 注意: nsis 2.0a0 有 magicsplash 档案。不过 2.0b1 居然又不见了。&lt;/P&gt;
&lt;P&gt;SetOutPath $TEMP &lt;BR&gt;File /oname=splash1.bmp ${ SPLASH1 } &lt;BR&gt;File /oname=splash2.bmp ${ SPLASH2 } &lt;BR&gt;; File /oname=spltmp.exe &quot;${ NSISDIR }\bin\magiclime.exe&quot; &lt;BR&gt;; ExecWait '&quot;$TEMP\spltmp.exe&quot; splash1.bmp' &lt;BR&gt;; ExecWait '&quot;$TEMP\spltmp.exe&quot; splash2.bmp'&lt;/P&gt;
&lt;P&gt;advsplash::show 1000 600 400 -1 $TEMP\splash1 &lt;BR&gt;advsplash::show 1000 600 400 -1 $TEMP\splash2&lt;/P&gt;
&lt;P&gt;Pop $0 ; $0 has '1' if the user closed the splash screen early, &lt;BR&gt;; '0' if everything closed normal, and '-1' if some error occured.&lt;/P&gt;
&lt;P&gt;Delete $TEMP\spltmp.exe &lt;BR&gt;Delete $TEMP\splash1.bmp &lt;BR&gt;Delete $TEMP\splash2.bmp&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 4.2 字型选择 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 只影响安装程式的语言选择 dialog ，因此不要使用中文字型名称。 &lt;BR&gt;Push Verdana &lt;BR&gt;Push 9&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 4.3 语言 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 塞了 ENU/CHT/CHS 三个语言。你要 18 个语言全塞，也不反对。大小大概增加 20 kb 左右。 &lt;BR&gt;; 如果不是多语言中文化安装，你可以全部 remark 掉。&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_LANGDLL_PUSH &quot;English&quot; &lt;BR&gt;!insertmacro MUI_LANGDLL_PUSH &quot;SimpChinese&quot; &lt;BR&gt;!insertmacro MUI_LANGDLL_PUSH &quot;TradChinese&quot;&lt;/P&gt;
&lt;P&gt;Push 3F ;3 = 语言数目, F = 变更字型&lt;/P&gt;
&lt;P&gt;LangDLL::LangDialog &quot;Installer Language&quot; &quot;Please select a language.&quot;&lt;/P&gt;
&lt;P&gt;; 上面这一句，不要中文化。除非你想让老外看到乱码。&lt;/P&gt;
&lt;P&gt;Pop $LANGUAGE &lt;BR&gt;StrCmp $LANGUAGE &quot;cancel&quot; 0 +2&lt;BR&gt;Abort &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 4.4 安装前置动作 (修改注册表) (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 视你需要，可以偷偷做一些动作。&lt;/P&gt;
&lt;P&gt;; DeleteRegKey HKLM &quot;SOFTWARE\Classes\CLSID\{ b5eedee0-c06e-11cf-8c56-444553540000 }\InProcServer32&quot; &lt;BR&gt;; DeleteRegKey HKLM &quot;SOFTWARE\Classes\CLSID\{ b5eedee0-c06e-11cf-8c56-444553540000 }&quot;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 4.5 寻找旧版已安装的目录。 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 如果 AppPath 读出的尾端有 \ 符号，请不要直接使用于 INSTDIR 指令，以免发生错误。&lt;/P&gt;
&lt;P&gt;; ReadRegStr $AppPath HKLM &quot;SOFTWARE\Alt-N Technologies\MDaemon&quot; &quot;AppPath&quot;&lt;/P&gt;
&lt;P&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■5.安装程式，安装完成后置动作 (* 进阶) &lt;BR&gt;;======================================================= &lt;BR&gt;; 如果不需要，你可以全部 remark。 &lt;BR&gt;;============================== &lt;BR&gt;; 5.1 函式定义开始 &lt;BR&gt;Function .onInstSuccess&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 5.2 安装完成后，执行 ExecShell &lt;BR&gt;; &lt;BR&gt;; 视个人需要而定，我只用在 Eudora 安装而已。 &lt;BR&gt;; ;------------------------------------------ &lt;BR&gt;; !macro MUI_INSTSUCCESS1 LANGID TEXT &lt;BR&gt;; &lt;BR&gt;; StrCmp $LANGUAGE ${ LANGID } &quot;&quot; +3 &lt;BR&gt;; MessageBox MB_YESNO&amp;amp;line;MB_ICONQUESTION &quot;${ TEXT }&quot; IDNO Nomapi &lt;BR&gt;; ExecShell open '$INSTDIR\SWMAPI.EXE' &lt;BR&gt;; !macroend &lt;BR&gt;; ;------------------------------------------;&lt;/P&gt;
&lt;P&gt;; 下列是 ENU/CHT/CHS 三个语言的动作。 &lt;BR&gt;; &lt;BR&gt;; !insertmacro MUI_INSTSUCCESS1 1033 &quot;Do you want to install ${ NAME } as a default mailer? It will excute MAPI installer.&quot; &lt;BR&gt;; !insertmacro MUI_INSTSUCCESS1 1028 &quot;你想要安装 ${ NAME } 做为预设信件程式吗？将执行外部 MAPI 安装程式。&quot; &lt;BR&gt;; !insertmacro MUI_INSTSUCCESS1 2052 &quot;斓砑猁假蚾 ${ NAME } 酕峈苏?;蛔璃最唗镉ˋ蔚堍俴俋窒 MAPI 假蚾最唗﹝&quot; &lt;BR&gt;; Nomapi:&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 5.3 安装后，要求使用者读取 README 档案&lt;/P&gt;
&lt;P&gt;; ;------------------------------------------ &lt;BR&gt;; !macro MUI_INSTSUCCESS2 LANGID TEXT README&lt;/P&gt;
&lt;P&gt;; StrCmp $LANGUAGE ${ LANGID } &quot;&quot; +3 &lt;BR&gt;; MessageBox MB_YESNO&amp;amp;line;MB_ICONQUESTION &quot;${ TEXT }&quot; IDNO NoReadme &lt;BR&gt;; ExecShell open notepad '$INSTDIR\${ README }' &lt;BR&gt;; !macroend &lt;BR&gt;; ;------------------------------------------&lt;/P&gt;
&lt;P&gt;; 下列是 ENU/CHT/CHS 三个语言的动作。&lt;/P&gt;
&lt;P&gt;; !insertmacro MUI_INSTSUCCESS2 1033 &quot;Setup has been completed successfully . Press [Yes] to continue README file.&quot; &quot;${ README_ENU }&quot; &lt;BR&gt;; !insertmacro MUI_INSTSUCCESS2 1028 &quot;安装已成功地完成。按下 [Yes] 继续读取 README 档案。&quot; &quot;${ README_CHT }&quot; &lt;BR&gt;; !insertmacro MUI_INSTSUCCESS2 2052 &quot;假蚾眒伧髡华俇伧﹝偌狟 [Yes] 樟哿黍?; README 恅璃﹝&quot; &quot;${ README_CHS }&quot; &lt;BR&gt;; NoReadme:&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 5.4 函式定义结束 &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■6.安装的所有档案 &lt;BR&gt;;=======================================================&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.1 安装类型&lt;/P&gt;
&lt;P&gt;; 两种应该很够了。&lt;/P&gt;
&lt;P&gt;InstType &quot;Minimum&quot; &lt;BR&gt;InstType &quot;Standard&quot;&lt;/P&gt;
&lt;P&gt;SetOverwrite on&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.3 安装的各个节段&lt;/P&gt;
&lt;P&gt;Section &quot;MDaemon&quot; SecMDaemon &lt;BR&gt;SectionIn 1 2&lt;/P&gt;
&lt;P&gt;; 6.3.1 中文化的读我 &lt;BR&gt;; 通常塞在安装的主目录。&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR &lt;BR&gt;File &quot;${ README_CHT }&quot; &lt;BR&gt;File &quot;${ README_CHS }&quot;&lt;/P&gt;
&lt;P&gt;; 6.3.2 中文化的程式档案&lt;/P&gt;
&lt;P&gt;; 通常不使用 *.* 型态，而个别指定，以免包装错误。 &lt;BR&gt;; 常常是 *.DLL *.EXE *.AX 等类型。我都把这类放在 cht 为首的工作目录。&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\app &lt;BR&gt;File &quot;cht\AccountPrune.exe&quot; &lt;BR&gt;File &quot;cht\CFILTER.EXE&quot; &lt;BR&gt;File &quot;cht\IMPORTNT.EXE&quot; &lt;BR&gt;File &quot;cht\ListPrune.exe&quot; &lt;BR&gt;File &quot;cht\MD3CONV.EXE&quot; &lt;BR&gt;File &quot;cht\MDAEMON.EXE&quot; &lt;BR&gt;File &quot;cht\MDCONFIG.EXE&quot; &lt;BR&gt;File &quot;cht\MDLAUNCH.EXE&quot; &lt;BR&gt;File &quot;cht\MDSTATS.EXE&quot; &lt;BR&gt;File &quot;cht\MDUSER.DLL&quot; &lt;BR&gt;File &quot;cht\MDUserLdap.dll&quot; &lt;BR&gt;File &quot;cht\MigrateUsers.exe&quot; &lt;BR&gt;File &quot;cht\ROBOEX32.DLL&quot; &lt;BR&gt;File &quot;cht\UninstallSurvey.exe&quot; &lt;BR&gt;File &quot;cht\UNWISE.EXE&quot; &lt;BR&gt;File &quot;cht\WCIMPORT.EXE&quot; &lt;BR&gt;File &quot;cht\XCEEDZIP.DLL&quot;&lt;/P&gt;
&lt;P&gt;; 6.3.3 中文化的文字档案 &lt;BR&gt;; &lt;BR&gt;; 通常是 (*.cnt, *.txt *.dat *.ini) 类型。 &lt;BR&gt;; 无语言区分者，仍放在 pack 为首的工作目录。 &lt;BR&gt;; 有语言区分者，放在 text/cht 与 text/chs 为首的工作目录。&lt;/P&gt;
&lt;P&gt;; 6.3.3.1 如果有旧版，会有一些“一定”要删除的旧版档案。然后再由安装程式补上新版。&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\app &lt;BR&gt;Delete &quot;$INSTDIR\app\HELP.DAT&quot; &lt;BR&gt;Delete &quot;$INSTDIR\app\MDAEMON.CNT&quot; &lt;BR&gt;Delete &quot;$INSTDIR\app\acctinfo.dat&quot;&lt;/P&gt;
&lt;P&gt;File &quot;pack405\app\CFILTER.INI&quot; &lt;BR&gt;File &quot;pack405\app\MDSTATS.INI&quot;&lt;/P&gt;
&lt;P&gt;; 6.3.3.2 如果有旧版，也会有一些“不能删除”的旧版档案。&lt;/P&gt;
&lt;P&gt;; 这段是使用在 UltraEdit ，把 windows 目录的 INI 移动过来。MDaemon 不用这一段。&lt;/P&gt;
&lt;P&gt;; &lt;BR&gt;; IfFileExists &quot;$WINDIR\UEdit32.ini&quot; DO1 DO2 &lt;BR&gt;; DO1: ;把 $WINDIR 的移动到安装目录 &lt;BR&gt;; Rename &quot;$WINDIR\UEdit32.ini&quot; &quot;$INSTDIR\Uedit32.ini&quot; &lt;BR&gt;; DO2: ;如果没有，则写入一个假的 INI，以修正 HTMLTIDY 的功能。如果安装目录已有，则不盖掉。 &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;SetOverwrite off ;停用强制覆写 &lt;BR&gt;File &quot;pack405\app\MDAEMON.INI&quot; &lt;BR&gt;SetOverwrite on ;判断完毕之后，启用强制覆写&lt;/P&gt;
&lt;P&gt;; 6.3.3.3 搞一些好玩的，比如塞入自动使软体注册的资料 &lt;BR&gt;; 正式版本就不要这样做，以免太嚣张，反而不好。 &lt;BR&gt;; &lt;BR&gt;; WriteINIStr &quot;$INSTDIR\app\mdaemon.ini&quot; &quot;Registration&quot; &quot;Name&quot; &quot;My_reg_Name&quot; &lt;BR&gt;; WriteINIStr &quot;$INSTDIR\app\mdaemon.ini&quot; &quot;Registration&quot; &quot;Company&quot; &quot;My_reg_Company&quot; &lt;BR&gt;; WriteINIStr &quot;$INSTDIR\app\mdaemon.ini&quot; &quot;Registration&quot; &quot;4XKey&quot; &quot;GDPFFMF-QAWLYFJ-XQDIYAO&quot;&lt;/P&gt;
&lt;P&gt;; 6.3.3.4 补上新版档案 &lt;BR&gt;; &lt;BR&gt;; 依照各种语言，自动执行，分配正确的档案。使用者不必再选择。 &lt;BR&gt;; 先写一个巨集，自动判断作业系统语言。 1033 enu, 1028 cht, 2052 chs &lt;BR&gt;;------------------------------------------ &lt;BR&gt;!macro MUI_COPYTEXTFILE LANGID ACTION_COPYTEXTFILE&lt;/P&gt;
&lt;P&gt;StrCmp $LANGUAGE ${ LANGID } &quot;&quot; +3 &lt;BR&gt;${ ACTION_COPYTEXTFILE }&lt;/P&gt;
&lt;P&gt;!macroend&lt;/P&gt;
&lt;P&gt;; !insertmacro MUI_COPYTEXTFILE 1033 'File &quot;text405\enu\Help.dat&quot;' &lt;BR&gt;; !insertmacro MUI_COPYTEXTFILE 1033 'File &quot;text405\enu\MDaemon.cnt&quot;' &lt;BR&gt;; &lt;BR&gt;; 英文的不动，只做为对照组。注意单引号和双引号。 &lt;BR&gt;; 这种脚本写法其实蛮笨的，应该有更好的方法。&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_COPYTEXTFILE 1028 'File &quot;text405\cht\Help.dat&quot;' &lt;BR&gt;!insertmacro MUI_COPYTEXTFILE 1028 'File &quot;text405\cht\MDaemon.cnt&quot;' &lt;BR&gt;!insertmacro MUI_COPYTEXTFILE 2052 'File &quot;text405\chs\Help.dat&quot;' &lt;BR&gt;!insertmacro MUI_COPYTEXTFILE 2052 'File &quot;text405\chs\MDaemon.cnt&quot;'&lt;/P&gt;
&lt;P&gt;; 6.3.4 非中文化档案 (不用修改的部分)&lt;/P&gt;
&lt;P&gt;; 可使用 *.* 这种型态。 我都把这类放在 pack 为首的工作目录。&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\app &lt;BR&gt;File &quot;pack405\app\AccountPrune.txt&quot; &lt;BR&gt;File &quot;pack405\app\bwcc32.dll&quot; &lt;BR&gt;File &quot;pack405\app\ADDUSER.SMP&quot; &lt;BR&gt;File &quot;pack405\app\CFAPP.ICO&quot; &lt;BR&gt;File &quot;pack405\app\CFILTER.DLL&quot; &lt;BR&gt;File &quot;pack405\app\DEDUPE.EXE&quot; &lt;BR&gt;File &quot;pack405\app\DIRREORG.EXE&quot; &lt;BR&gt;File &quot;pack405\app\DomainPOP.dsc&quot; &lt;BR&gt;File &quot;pack405\app\EDITUSER.SMP&quot; &lt;BR&gt;File &quot;pack405\app\FILELIST.DAT&quot; &lt;BR&gt;File &quot;pack405\app\INETWH32.DLL&quot; &lt;BR&gt;File &quot;pack405\app\INSTALL.LOG&quot; &lt;BR&gt;File &quot;pack405\app\MailboxSize.exe&quot; &lt;BR&gt;File &quot;pack405\app\MailboxSize.txt&quot; &lt;BR&gt;File &quot;pack405\app\MDAEMON.DSC&quot; &lt;BR&gt;File &quot;pack405\app\MDAEMON.HLP&quot; &lt;BR&gt;File &quot;pack405\app\NTUTIL.DLL&quot; &lt;BR&gt;File &quot;pack405\app\ULREPAIR.EXE&quot; &lt;BR&gt;File &quot;pack405\app\WISECHCK.EXE&quot; &lt;BR&gt;File &quot;pack405\app\WISEUPDT.EXE&quot; &lt;BR&gt;File &quot;pack405\app\WP2WC.EXE&quot; &lt;BR&gt;File &quot;pack405\app\XCDSFX32.BIN&quot;&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\cgi &lt;BR&gt;File &quot;pack405\cgi\*.*&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;MDaemon Docs&quot; SecMDaemonDocs &lt;BR&gt;SectionIn 2 &lt;BR&gt;SetOutPath $INSTDIR\docs &lt;BR&gt;File &quot;pack405\docs\*.*&quot; &lt;BR&gt;SetOutPath $INSTDIR\docs\api &lt;BR&gt;File &quot;pack405\docs\api\*.*&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;World Client&quot; SecWorldClient &lt;BR&gt;SectionIn 2 &lt;BR&gt;SetOutPath $INSTDIR\wcstandard &lt;BR&gt;File &quot;pack405\wcstandard\*.*&quot; &lt;BR&gt;; 底下为需要中文化的部分 &lt;BR&gt;File &quot;cht\wcstandard\WCStandard.exe&quot; &lt;BR&gt;File &quot;cht\wcstandard\WorldClient.dll&quot; &lt;BR&gt;File &quot;cht\wcstandard\XceedZip.dll&quot;&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\wcstandard\html &lt;BR&gt;File &quot;pack405\wcstandard\html\*.*&quot; &lt;BR&gt;SetOutPath $INSTDIR\wcstandard\html\help &lt;BR&gt;File &quot;pack405\wcstandard\html\help\*.*&quot; &lt;BR&gt;SetOutPath $INSTDIR\wcstandard\templates &lt;BR&gt;File &quot;pack405\wcstandard\templates\*.*&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;Web Config&quot; SecWebConfig &lt;BR&gt;SectionIn 2 &lt;BR&gt;SetOutPath $INSTDIR\webconfig &lt;BR&gt;File &quot;pack405\webconfig\*.*&quot; &lt;BR&gt;; 底下为需要中文化的部分 &lt;BR&gt;File &quot;cht\webconfig\WebConfig.exe&quot;&lt;/P&gt;
&lt;P&gt;SetOutPath $INSTDIR\webconfig\html &lt;BR&gt;File &quot;pack405\webconfig\html\*.*&quot; &lt;BR&gt;SetOutPath $INSTDIR\webconfig\templates &lt;BR&gt;File &quot;pack405\webconfig\templates\*.*&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.4 加入到“开始选单” &lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;Section &quot;Add shortcut to Start Menu&quot; SecStartMenu &lt;BR&gt;SectionIn 1 2 &lt;BR&gt;SetOutPath &quot;$INSTDIR&quot;&lt;/P&gt;
&lt;P&gt;CreateDirectory &quot;$SMPROGRAMS\${ MUI_PRODUCT }&quot; &lt;BR&gt;; 有时候 CreateShortCut 会出问题，不如用这个动作 &lt;BR&gt;; 直接强制 installer 建立目录。这样比较贱。&lt;/P&gt;
&lt;P&gt;CreateShortCut &quot;$SMPROGRAMS\${ MUI_PRODUCT }\MDaemon.lnk&quot; \ &lt;BR&gt;&quot;$INSTDIR\app\mdaemon.exe&quot; &lt;BR&gt;CreateShortCut &quot;$SMPROGRAMS\${ MUI_PRODUCT }\MDConfig.lnk&quot; \ &lt;BR&gt;&quot;$INSTDIR\app\MDConfig.exe&quot; &lt;BR&gt;CreateShortCut &quot;$SMPROGRAMS\${ MUI_PRODUCT }\Uninstall ${ MUI_PRODUCT }.lnk&quot; \ &lt;BR&gt;&quot;$INSTDIR\Uninstall.exe&quot; &lt;BR&gt;SectionEnd &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.5 加入到“快速启动” &lt;BR&gt;; &lt;BR&gt;; 不是每个程式都要加入“快速启动”列，视需要而定。 &lt;BR&gt;; &lt;BR&gt;;Section &quot;Add shortcut to Quicklaunch&quot; SecQuicklaunch &lt;BR&gt;; SectionIn 1 2 &lt;BR&gt;; CreateShortCut &quot;$QUICKLAUNCH\${ MUI_PRODUCT }.lnk&quot; \ &lt;BR&gt;; &quot;$INSTDIR\app\${ PROGMAINEXE }&quot; &lt;BR&gt;;SectionEnd&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.6 加入到“桌面” &lt;BR&gt;;&lt;/P&gt;
&lt;P&gt;Section &quot;Add shortcut to Desktop&quot; SecDesktop &lt;BR&gt;SectionIn 1 2 &lt;BR&gt;CreateShortCut &quot;$DESKTOP\${ MUI_PRODUCT }.lnk&quot; \ &lt;BR&gt;&quot;$INSTDIR\app\${ PROGMAINEXE }&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 6.6 加入到“滑鼠右键” (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 只用在 UltraEdit&lt;/P&gt;
&lt;P&gt;;Section &quot;Add to Right mouse button&quot; SecRightMouse &lt;BR&gt;; SectionIn 1 2 &lt;BR&gt;; WriteRegStr HKLM &quot;SOFTWARE\Classes\*\shellex\ContextMenuHandlers\UltraEdit-32&quot; &quot;&quot; &quot;{ b5eedee0-c06e-11cf-8c56-444553540000 }&quot; &lt;BR&gt;; WriteRegStr HKLM &quot;SOFTWARE\Classes\CLSID\{ b5eedee0-c06e-11cf-8c56-444553540000 }&quot; &quot;&quot; &quot;UltraEdit-32&quot; &lt;BR&gt;; WriteRegStr HKLM &quot;SOFTWARE\Classes\CLSID\{ b5eedee0-c06e-11cf-8c56-444553540000 }\InProcServer32&quot; &quot;&quot; &quot;$INSTDIR\ue32ctmn.dll&quot; &lt;BR&gt;; WriteRegStr HKLM &quot;SOFTWARE\Classes\CLSID\{ b5eedee0-c06e-11cf-8c56-444553540000 }\InProcServer32&quot; &quot;ThreadingModel&quot; &quot;Apartment&quot; &lt;BR&gt;;SectionEnd&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■7.写入解除安装程式 &lt;BR&gt;;======================================================= &lt;BR&gt;; 如果你嫌太难，可以不写解除安装程式，全部 remark 掉。 &lt;BR&gt;;============================== &lt;BR&gt;; 7.1 节段开始&lt;/P&gt;
&lt;P&gt;Section &quot;Create Uninstaller&quot; SecCreateUninst &lt;BR&gt;SectionIn 1 2&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.2 写入到“注册表”(基础) &lt;BR&gt;; &lt;BR&gt;; 一般只有写下面这一段，指定安装目录。&lt;/P&gt;
&lt;P&gt;WriteRegStr HKLM &quot;SOFTWARE\${ MUI_PRODUCT }&quot; &quot;Install_Dir&quot; &quot;$INSTDIR&quot; &lt;BR&gt;WriteRegStr HKLM &quot;SOFTWARE\${ MUI_PRODUCT }&quot; &quot;Installer Language&quot; $LANGUAGE&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.3 写入到“注册表” (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 下面这段注册表值，只是在 { 控制台 &amp;amp;line; 新增移除程式] 花俏用的。 &lt;BR&gt;; 如果看不懂，可以全部不使用。 &lt;BR&gt;; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;DisplayIcon&quot; &quot;$INSTDIR\app\${ PROGMAINEXE }&quot; &lt;BR&gt;; &quot;DisplayIcon&quot; &quot;$INSTDIR\${ PROGMAINEXE }&quot; ; 一般使用这个型态。只有 MDaemon 例外。 &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;DisplayName&quot; &quot;${ MUI_PRODUCT } ${ VER_1 }.${ VER_2 } ${ PATCHTYPE_ENU }&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;DisplayVersion&quot; &quot;${ VER_1 }.${ VER_2 }&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;UninstallString&quot; &quot;$INSTDIR\uninstall.exe&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;URLInfoAbout&quot; &quot;http://www.altn.com/Products/Default.asp?product_id=MDaemon&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;Contact&quot; &quot;kiiali@cpatch.org&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;HelpLink&quot; &quot;http://www.altn.com/Support/Default.asp?product_id=MDaemon&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;URLUpdateInfo&quot; &quot;http://www.altn.com/Download/Default.asp&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;Readme&quot; &quot;$INSTDIR\${ README_CHT }&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;BR&gt;&quot;Comments&quot; &quot;Chinese (P.R.C.) and Chinese (Taiwan) ${ MUI_PRODUCT } localized version by Kii Ali, for Mailer Daemon with win32 plateform.&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; \ &lt;/P&gt;
&lt;P&gt;&quot;Publisher&quot; &quot;Copyright (c) 2002, Alt-N Technology.&quot; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.4 依照各种语言，自动写入不同的注册表值 (* 进阶) &lt;BR&gt;; 包括 ENU/CHT/CHS &lt;BR&gt;;------------------------------------------ &lt;BR&gt;!macro MUI_REGMUI1 LANGID TEXT&lt;/P&gt;
&lt;P&gt;StrCmp $LANGUAGE ${ LANGID } &quot;&quot; +3 &lt;BR&gt;${ TEXT }&lt;/P&gt;
&lt;P&gt;!macroend&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_REGMUI1 1033 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Comments&quot; &quot;Chinese (P.R.C.) and Chinese (Taiwan) ${ MUI_PRODUCT } localized version by Kii Ali, for Mailer Daemon with win32 plateform.&quot; ' &lt;BR&gt;!insertmacro MUI_REGMUI1 1028 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Comments&quot; &quot;中文 (中国大陆) 与 中文 (台湾) ${ MUI_PRODUCT } 本地化版本，由 Kii Ali 制作，用于 win32 平台架设个人或公司的信件伺服器。&quot; ' &lt;BR&gt;!insertmacro MUI_REGMUI1 2052 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Comments&quot; &quot;笢恅 (笢弊湮翻) 迵 笢恅 (怢俜) ${ MUI_PRODUCT } 挂华赵唳挂ㄛ蚕 Kii Ali 秶钎ㄛ蚚衾 win32 Ⅸ;怢殇扢跺?;么鼠侗腔蛔璃督昢け;﹝&quot; '&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.5 依照各种语言，自动写入不同的注册表值 (* 进阶) &lt;BR&gt;; 包括 ENU/CHT/CHS &lt;BR&gt;;------------------------------------------ &lt;BR&gt;!macro MUI_REGMUI2 LANGID TEXT&lt;/P&gt;
&lt;P&gt;StrCmp $LANGUAGE ${ LANGID } &quot;&quot; +3 &lt;BR&gt;${ TEXT }&lt;/P&gt;
&lt;P&gt;!macroend &lt;BR&gt;!insertmacro MUI_REGMUI2 1033 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Publisher&quot; &quot;Copyright (c) 2002, Alt-N Technology.&quot; ' &lt;BR&gt;!insertmacro MUI_REGMUI2 1028 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Publisher&quot; &quot;版权所有 (c) 2002, Alt-N Technology. &quot; ' &lt;BR&gt;!insertmacro MUI_REGMUI2 2052 'WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot; &quot;Publisher&quot; &quot;唳?;垀衄 (c) 2002, Alt-N Technology.&quot; ' &lt;BR&gt;;------------------------------------------&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.6 现在写入“解除安装程式”&lt;/P&gt;
&lt;P&gt;; 写入语言名称到注册表 (用于解除安装程式) &lt;BR&gt;WriteRegStr HKLM &quot;Software\${ MUI_PRODUCT }&quot; &quot;Installer Language&quot; $LANGUAGE &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\Uninstall.exe&quot;&lt;/P&gt;
&lt;P&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 7.8 显示“完成”标头&lt;/P&gt;
&lt;P&gt;;如果不想使用“完成”页面，在这个巨集之后插入。&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_SECTIONS_FINISHHEADER&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■8.描述功能 &lt;BR&gt;;======================================================= &lt;BR&gt;;============================== &lt;BR&gt;; 8.1 描述功能的巨集 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 如果有描述，最好一个一个加入巨集。 &lt;BR&gt;; 这一段要在所有的 section 之后，否则会出现“变数名称没有找到”。 &lt;BR&gt;; 如果 MUI_FUNCTIONS_DESCRIPTION_BEGIN 拆成两段，会变成重覆呼叫，而导致错误。&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecMDaemon } $(DESC_SecMDaemon) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecMDaemonDocs } $(DESC_SecMDaemonDocs) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecWorldClient } $(DESC_SecWorldClient) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecWebConfig } $(DESC_SecWebConfig) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecStartMenu } $(DESC_SecStartMenu) &lt;BR&gt;; !insertmacro MUI_DESCRIPTION_TEXT ${ SecQuicklaunch } $(DESC_SecQuicklaunch) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecDesktop } $(DESC_SecDesktop) &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT ${ SecCreateUninst } $(DESC_SecCreateUninst) &lt;BR&gt;; !insertmacro MUI_DESCRIPTION_TEXT ${ SecRightMouse } $(DESC_SecRightMouse) &lt;BR&gt;!insertmacro MUI_FUNCTIONS_DESCRIPTION_END &lt;BR&gt;; &lt;BR&gt;;============================== &lt;BR&gt;; 8.2 每个节段的描述文字，直接使用各国语言 (* 进阶) &lt;BR&gt;; &lt;BR&gt;; 这是让滑鼠移动到安装项目上时，自动出现的描述功能。 &lt;BR&gt;; 我使用 ENU/CHT/CHS 三个语言。如果嫌麻烦，可以只使用一个语言，甚至不使用描述。&lt;/P&gt;
&lt;P&gt;LangString DESC_SecMDaemon ${ LANG_ENGLISH } &quot;MDaemon Server Main Prog&quot; &lt;BR&gt;LangString DESC_SecMDaemonDocs ${ LANG_ENGLISH } &quot;Related Documents, manuals&quot; &lt;BR&gt;LangString DESC_SecWorldClient ${ LANG_ENGLISH } &quot;Server: reading your emails on browser&quot; &lt;BR&gt;LangString DESC_SecWebConfig ${ LANG_ENGLISH } &quot;config server on browser&quot; &lt;BR&gt;LangString DESC_SecStartMenu ${ LANG_ENGLISH } &quot;Add icon to Start Menu&quot; &lt;BR&gt;LangString DESC_SecQuicklaunch ${ LANG_ENGLISH } &quot;Add icon to QuickLaunch&quot; &lt;BR&gt;LangString DESC_SecDesktop ${ LANG_ENGLISH } &quot;Add icon to Desktop&quot; &lt;BR&gt;LangString DESC_SecRightMouse ${ LANG_ENGLISH } &quot;Add function of mouse right-click&quot; &lt;BR&gt;LangString DESC_SecCreateUninst ${ LANG_ENGLISH } &quot;Create Uninstaller&quot;&lt;/P&gt;
&lt;P&gt;LangString DESC_SecMDaemon ${ LANG_TRADCHINESE } &quot;MDaemon 伺服器主程式&quot; &lt;/P&gt;
&lt;P&gt;LangString DESC_SecMDaemonDocs ${ LANG_TRADCHINESE } &quot;相关的文件、手册&quot; &lt;BR&gt;LangString DESC_SecWorldClient ${ LANG_TRADCHINESE } &quot;浏览器网页读取信件的伺服器&quot; &lt;BR&gt;LangString DESC_SecWebConfig ${ LANG_TRADCHINESE } &quot;在浏览器组态伺服器&quot; &lt;BR&gt;LangString DESC_SecStartMenu ${ LANG_TRADCHINESE } &quot;加入图示到开始功能表&quot; &lt;BR&gt;LangString DESC_SecQuicklaunch ${ LANG_TRADCHINESE } &quot;加入图示到快速启动列&quot; &lt;BR&gt;LangString DESC_SecDesktop ${ LANG_TRADCHINESE } &quot;加入图示到桌面&quot; &lt;BR&gt;LangString DESC_SecRightMouse ${ LANG_TRADCHINESE } &quot;加入滑鼠右键功能&quot; &lt;BR&gt;LangString DESC_SecCreateUninst ${ LANG_TRADCHINESE } &quot;建立解除安装程式&quot; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;LangString DESC_SecMDaemon ${ LANG_SIMPCHINESE } &quot;MDaemon 督昢け;翋最唗&quot; &lt;BR&gt;LangString DESC_SecMDaemonDocs ${ LANG_SIMPCHINESE } &quot;眈寿腔恅璃﹜忒聊&quot; &lt;BR&gt;LangString DESC_SecWorldClient ${ LANG_SIMPCHINESE } &quot;銡拟け;厍珜黍?;蛔璃腔督昢け;&quot; &lt;BR&gt;LangString DESC_SecWebConfig ${ LANG_SIMPCHINESE } &quot;婓銡拟け;餍离督昢け;&quot; &lt;BR&gt;LangString DESC_SecStartMenu ${ LANG_SIMPCHINESE } &quot;氖楼芞梓善※羲宎&#167;粕等&quot; &lt;BR&gt;LangString DESC_SecQuicklaunch ${ LANG_SIMPCHINESE } &quot;氖楼芞梓善办厒ぎ;雄蹈&quot; &lt;BR&gt;LangString DESC_SecDesktop ${ LANG_SIMPCHINESE } &quot;氖楼芞梓善袤拨&quot; &lt;BR&gt;LangString DESC_SecRightMouse ${ LANG_SIMPCHINESE } &quot;氖楼扷梓衵莹髡夔&quot; &lt;BR&gt;LangString DESC_SecCreateUninst ${ LANG_SIMPCHINESE } &quot;斐膘贱壶假蚾最唗&quot;&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■9.解除安装程式，真正的动作 &lt;BR&gt;;======================================================= &lt;BR&gt;; 这个部分，和前面的建立 CreateUninst ，意味不一样喔。 &lt;BR&gt;; 前者: 把 uninstaller 程式做出来。 &lt;BR&gt;; 后者: 指定这个程式，要删除那些档案/目录/注册表项。 &lt;BR&gt;;============================== &lt;BR&gt;; 9.1 节段开始&lt;/P&gt;
&lt;P&gt;Section &quot;Uninstall&quot;&lt;/P&gt;
&lt;P&gt;; 要移除掉解除安装程式 &lt;BR&gt;Delete &quot;$INSTDIR\Uninstall.exe&quot; &lt;BR&gt;; 移除档案 &lt;BR&gt;Delete &quot;$INSTDIR\App\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\Logs\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\api\CreateUser\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\api\IterateUsers\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\api\Sample COM\MDUserEdit\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\api\Sample COM\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\api\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\docs\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\cgi\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\ARCHIVES\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\BACKUP\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\BADMSGS\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\CFILTER\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\DIGESTS\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\GATEWAYS\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\LOCALQ\LNDOMAIN\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\LOCALQ\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\LOGS\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\PUBLIC~1\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\RAWFILES\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\REMOTEQ\RETRY\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\REMOTEQ\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\SMTPIN\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\WCstandard\HTML\help\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\WCstandard\HTML\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\WCstandard\Temp\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\WCstandard\Templates\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\WCstandard\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\webconfig\HTML\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\webconfig\Temp\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\webconfig\Templates\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\webconfig\*.*&quot; &lt;BR&gt;Delete &quot;$INSTDIR\*.*&quot;&lt;/P&gt;
&lt;P&gt;; 移除开始功能表、桌面、快递启动等捷径。 &lt;BR&gt;Delete &quot;$SMPROGRAMS\${ MUI_PRODUCT }\*.*&quot; &lt;BR&gt;Delete &quot;$DESKTOP\${ MUI_PRODUCT }.lnk&quot; &lt;BR&gt;Delete &quot;$QUICKLAUNCH\${ MUI_PRODUCT }.lnk&quot; &lt;BR&gt;RMDir &quot;$SMPROGRAMS\${ MUI_PRODUCT }&quot;&lt;/P&gt;
&lt;P&gt;; 移除使用过的目录。 &lt;BR&gt;RMDir &quot;$INSTDIR\App&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\Logs&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs\api\CreateUser&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs\api\IterateUsers&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs\api\Sample COM\MDUserEdit&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs\api\Sample COM&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs\api&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\docs&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\cgi&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\ARCHIVES&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\BACKUP&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\BADMSGS&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\CFILTER&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\DIGESTS&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\GATEWAYS&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\LOCALQ\LNDOMAIN&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\LOCALQ&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\LOGS&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\PUBLIC~1&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\RAWFILES&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\REMOTEQ\RETRY&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\REMOTEQ&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\SMTPIN&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\WCstandard\HTML\help&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\WCstandard\HTML&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\WCstandard\Temp&quot; &lt;/P&gt;
&lt;P&gt;RMDir &quot;$INSTDIR\WCstandard\Templates&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\WCstandard&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\webconfig\HTML&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\webconfig\Temp&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\webconfig\Templates&quot; &lt;BR&gt;RMDir &quot;$INSTDIR\webconfig&quot; &lt;BR&gt;RMDir &quot;$INSTDIR&quot; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;; 删除 windows 注册表之中的安装路径 &lt;BR&gt;DeleteRegKey HKLM SOFTWARE\${ MUI_PRODUCT }&lt;/P&gt;
&lt;P&gt;; 删除 windows 注册表的解除安装 &lt;BR&gt;DeleteRegKey HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\${ MUI_PRODUCT }&quot;&lt;/P&gt;
&lt;P&gt;; 删除 uninstaller 使用的语言名称 (* 进阶) &lt;BR&gt;DeleteRegvalue HKLM &quot;Software\${ MUI_PRODUCT }&quot; &quot;Installer Language&quot;&lt;/P&gt;
&lt;P&gt;;显示“完成”标头 (* 进阶) &lt;BR&gt;!insertmacro MUI_UNFINISHHEADER&lt;/P&gt;
&lt;P&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;;============================== &lt;BR&gt;; 9.2 解除安装程式，初始化函式动作 (* 进阶)&lt;/P&gt;
&lt;P&gt;Function un.onInit&lt;/P&gt;
&lt;P&gt;;从注册表取得语言名称 &lt;BR&gt;ReadRegStr $LANGUAGE HKLM &quot;Software\${ MUI_PRODUCT }&quot; &quot;Installer Language&quot;&lt;/P&gt;
&lt;P&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;;======================================================= &lt;BR&gt;; ■eof 档案结尾&lt;/P&gt;
&lt;P&gt;3...&lt;BR&gt;NSIS 确实是一个不错的安装程序制作软件。新版本 2.0a7 真正实现了中文支持和支持 WinXP 的安装对话框。不过要用它实现漂亮的安装界面和完美的安装功能就必须好好的写脚本。而 NSIS 的脚本指令是在是太多了，有时候觉得好像又回到了学习 C 语言的年代。他丰富而起强大的功能甚至可以编译出一些小而使用的软件（例如查找窗口句柄，然后...）好了，不多说。我在这里着重介绍关于 NSIS 的一些使用问题以及新界面安装程序的制作过程，中间会附上一个示例脚本。&lt;/P&gt;
&lt;P&gt;这里只说单语言的简体中文&lt;/P&gt;
&lt;P&gt;1. NSIS的运行问题 &lt;BR&gt;2.0a7 的 NSIS 安装在长文件名的目录中好像会有问题（Win2k 和 WinXP 下，Win98 下好像没问题）。你若是将NSIS 安装在类似于“E:\System\Installer\NSIS 的目录中”（其中的“Installer”是超过了 8 个字符的长文件名），运行 makensisw 或是直接在命令提示符中使用 makensis 可能会非法操作。 &lt;BR&gt;解决的办法是：在命令提示符下使用如下指令：&lt;/P&gt;
&lt;P&gt;cd E:\System\Instal~1\NSIS &lt;BR&gt;进入 NSIS 安装目录后使用命令行：&lt;/P&gt;
&lt;P&gt;makensis /CD /X&quot;Compressor bzip2&quot; &quot;f:\1.nsi&quot;&lt;/P&gt;
&lt;P&gt;你可以在脚本文件中使用了“SetCompressor bzip2”指令，这样就可以去掉“/X&quot;Compressor bzip2&quot;”参数。使用 makensisw 的朋友我就不多说了，你可以从我上面的分析中得到点启发。自己设置一下它的运行参数吧！不过 makensisw 也有 Bug，若用 makensisw 编译时发现脚本错误，程序就立马非法操作。&lt;/P&gt;
&lt;P&gt;2. 关于脚本的整体布局 &lt;BR&gt;说 NSIS 有些象高级语言的语法一点没错。NSIS 的语法非常注重先后顺序（我曾经为了一个指令的先后顺序来回 Ctrl+C &amp;amp; Ctrl+V 了 N 次）。例如象它的帮助文件中提到的“SetFont”指令必须在“AddBrandingImage”指令之前等。我在这里要说的而是关于如何正确的对脚本进行整体布局，使其能更加合理、高效的被使用，这样才有利于日后的安装程序更新&lt;/P&gt;
&lt;P&gt;你可以用我后面的示例脚本为模板制作自己的 NSIS 脚本。&lt;/P&gt;
&lt;P&gt;大体布局如下：&lt;/P&gt;
&lt;P&gt;//////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;预设参数（包括外部压缩器选择、编译选项、宏定义以及文件包含等）&lt;/P&gt;
&lt;P&gt;普通安装设置&lt;/P&gt;
&lt;P&gt;自定义函数&lt;/P&gt;
&lt;P&gt;安装程序区域内容&lt;/P&gt;
&lt;P&gt;安装程序回调函数及其相关函数定义&lt;/P&gt;
&lt;P&gt;卸载程序区域内容&lt;/P&gt;
&lt;P&gt;卸载程序回调函数及其相关函数定义&lt;/P&gt;
&lt;P&gt;//////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;3. 关于安装程序 Logo 画面的说明： &lt;BR&gt;先前版本的 NSIS 使用 splash.exe 制作 logo画面，但若您使用 2.0a7， &lt;BR&gt;我建议您使用（好像也只能使用）magiclime.exe，它在 Win2k 和 WinXP &lt;BR&gt;下显示 logo画面时会有淡入淡出的效果。超 Cool....&lt;/P&gt;
&lt;P&gt;4. 关于标牌位图（即显示在安装程序对话框中的自定义位图）的说明： &lt;BR&gt;2.0a7 提供了宏指令用于在安装程序的对话框中显示标牌位图。当然你也可以用标准的 NSIS 指令。&lt;/P&gt;
&lt;P&gt;5. 关于使用新的 Modern UI 界面的说明： &lt;BR&gt;2.0a7 同样提供了宏指令使你可以使用全新的安装界面： &lt;BR&gt;首先你需要安装 NSIS v2.0a7 简体中文补丁（汉化新世纪有下载）： &lt;BR&gt;然后打开安装目录下的 Examples\Modern UI\ModernUI.nsh 文件，将从 &lt;BR&gt;!macro MUI_INTERFACE UI ICON UNICON CHECKS PROGRESSBAR&lt;/P&gt;
&lt;P&gt;到第一个 &lt;BR&gt;!macroend &lt;BR&gt;之间的注释符（即分号）删除（若没有这步究省了）。保存。 &lt;BR&gt;接下来就可以在你自己的脚本中使用形式对话框了，并且支持 WinXP 的新的视觉效果样式。 &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;6. 以下是我的示例脚本：&lt;/P&gt;
&lt;P&gt;//////////////////////////////////////////////////////////////////////////// &lt;BR&gt;; study.nsi &lt;BR&gt;; &lt;BR&gt;; 以下脚本用以生成 study.exe 文件 &lt;BR&gt;; 它包含有授权协议 &lt;BR&gt;; &lt;BR&gt;; 安装时若发现应用程序正在运行，安装程序会提示并替用户关闭应用程序 &lt;BR&gt;; 安装成功后会自动运行应用程序 &lt;BR&gt;; &lt;BR&gt;; 启用新的 Modern UI 的宏指令语法，原先的部分指令将被禁止以防止重复 &lt;BR&gt;; 我会尽量展示如何基本指令的用法。当然宏指令也会与一些基本指令发生重 &lt;BR&gt;; 复定义的情况，不过 NSIS 照样能编译成功. &lt;BR&gt;; 其中的一些路径、文件你可以根据需要更改&lt;/P&gt;
&lt;P&gt;; 启用外部压缩工具（这里我们不用，原因看第 10 步） &lt;BR&gt;;!define HAVE_UPX&lt;/P&gt;
&lt;P&gt;; 若启用了外部压缩工具，这进行可执行文件头的压缩 &lt;BR&gt;!ifdef HAVE_UPX &lt;BR&gt;; 用 UPX 压缩可执行文件头（用其他的相关工具也行） &lt;BR&gt;!packhdr tmp.dat &quot;E:UPX\upx --best tmp.dat&quot; &lt;BR&gt;!endif&lt;/P&gt;
&lt;P&gt;; 编译选项&lt;/P&gt;
&lt;P&gt;; 设置覆盖标记 &lt;BR&gt;SetOverwrite on &lt;BR&gt;; 设置压缩选项 &lt;BR&gt;SetCompress auto &lt;BR&gt;; 选择压缩方式 &lt;BR&gt;SetCompressor bzip2 &lt;BR&gt;; 设置数据块优化 &lt;BR&gt;SetDatablockOptimize on &lt;BR&gt;; 设置数据写入时间 &lt;BR&gt;SetDateSave on&lt;/P&gt;
&lt;P&gt;; 相关数据预设&lt;/P&gt;
&lt;P&gt;; 软件的名字，后面的${ NAME }调用这个名字 &lt;BR&gt;!define NAME &quot;NSIS&quot; &lt;BR&gt;!define NAME_FULL &quot;全方位掌握 NSIS 的使用&quot; &lt;BR&gt;!verbose 3 &lt;BR&gt;; 包含窗口消息定义文件 &lt;BR&gt;!include &quot;${ NSISDIR }\Examples\WinMessages.nsh&quot; &lt;BR&gt;; 包含新界面的宏指令文件 &lt;BR&gt;!include &quot;${ NSISDIR }\Examples\Modern UI\ModernUI.nsh&quot; &lt;BR&gt;; 包含标牌位图宏指令文件 &lt;BR&gt;!include &quot;${ NSISDIR }\Examples\branding.nsh&quot; &lt;BR&gt;!verbose 4 &lt;BR&gt;!define CURRENTPAGE $9 &lt;BR&gt;!define TEMP1 $R0 &lt;BR&gt;!define TEMP2 $R1&lt;/P&gt;
&lt;P&gt;; 插入安装界面宏定义（这里我禁用了，启用也没问题。编译照样通过。后面我都定义过了） &lt;BR&gt;;!insertmacro MUI_INTERFACE &quot;modern2.exe&quot; &quot;adni18-installer-C-no48xp.ico&quot; &quot;adni18-uninstall-C-no48xp.ico&quot; &quot;modern.bmp&quot; &quot;smooth&quot;&lt;/P&gt;
&lt;P&gt;; 安装程序设置&lt;/P&gt;
&lt;P&gt;; 输出文件 &lt;BR&gt;OutFile &quot;F:\study.exe&quot; &lt;BR&gt;; 安装程序名称 &lt;BR&gt;Name /LANG=2052 &quot;NSIS&quot; &lt;BR&gt;; 替换对话框样式 &lt;BR&gt;ChangeUI all &quot;${ NSISDIR }\Contrib\UIs\modern2.exe&quot; &lt;BR&gt;; 启用 WindowsXP 的视觉样式 &lt;BR&gt;XPstyle on &lt;BR&gt;;设置字体 &lt;BR&gt;SetFont 宋体 9 &lt;BR&gt;; 标题名称 &lt;BR&gt;Caption /LANG=2052 &quot;全方位掌握 NSIS 的使用&quot; &lt;BR&gt;; 标牌的内容 &lt;BR&gt;BrandingText /LANG=2052 /TRIMCENTER &quot;Shao Hao&quot; &lt;BR&gt;; 安装程序图标 &lt;BR&gt;Icon &quot;F:\12\QCDIcon.ico&quot; &lt;BR&gt;; 安装程序显示标题 &lt;BR&gt;WindowIcon on &lt;BR&gt;; 添加标牌位图（放在顶部用 TOP 参数。后面接高度） &lt;BR&gt;AddBrandingImage LEFT 105 &lt;BR&gt;; 设定渐变背景 &lt;BR&gt;BGGradient off &lt;BR&gt;; 设置安静安装模式 &lt;BR&gt;;SilentInstall normal &lt;BR&gt;; 设置安静卸载模式 &lt;BR&gt;;SilentUnInstall normal &lt;BR&gt;; 执行 CRC 检查（最好用 on 打开。关闭是因为还要修改安装程序，看第 10 步） &lt;BR&gt;CRCCheck off &lt;BR&gt;; 加载相应的语言文件 &lt;BR&gt;LoadLanguageFile &quot;${ NSISDIR }\Contrib\Language files\SimpChinese.nlf&quot; &lt;BR&gt;; 替换各个对话框标题的文字 &lt;BR&gt;SubCaption /LANG=2052 0 &quot;授权协议&quot; &lt;BR&gt;SubCaption /LANG=2052 1 &quot;安装选项&quot; &lt;BR&gt;SubCaption /LANG=2052 2 &quot;安装目录&quot; &lt;BR&gt;SubCaption /LANG=2052 3 &quot;正在安装&quot; &lt;BR&gt;SubCaption /LANG=2052 4 &quot;完成安装&quot; &lt;BR&gt;; 替换默认按钮的文字 &lt;BR&gt;MiscButtonText /LANG=2052 &quot;&amp;lt; 上一步&quot; &quot;下一步 &amp;gt;&quot; &quot;取消&quot; &quot;关闭&quot; &lt;BR&gt;; 替换“安装”按钮的文字 &lt;BR&gt;;InstallButtonText /LANG=2052 &quot;安装&quot; &lt;BR&gt;; 替换当文件无法被写入时的警告窗的文字 &lt;BR&gt;FileErrorText /LANG=2052 &quot;无法写入文件$\r$\n$0$\r$\n请确认文件属性不是只读且未被使用中！&quot;&lt;/P&gt;
&lt;P&gt;; 默认的安装目录 &lt;BR&gt;InstallDir &quot;$PROGRAMFILES\QCD 3&quot; &lt;BR&gt;; 如果可能的化从注册表中监测安装路径 &lt;BR&gt;InstallDirRegKey HKLM \ &lt;BR&gt;&quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS&quot; \ &lt;BR&gt;&quot;UninstallString&quot;&lt;/P&gt;
&lt;P&gt;; 授权协议页面 &lt;BR&gt;LicenseText /LANG=2052 &quot;NSIS 是免费软件。安装前请先阅读以下协议条款&quot; &quot;我同意&quot;&lt;/P&gt;
&lt;P&gt;; 使用授权协议文本 &lt;BR&gt;LicenseData /LANG=2052 &quot;F:\12\License.txt&quot; &lt;BR&gt;; 设置授权协议页面的背景色 &lt;BR&gt;;LicenseBkColor 000000 &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;; 选择要按安装的组件 &lt;BR&gt;ComponentText /LANG=2052 &quot;现在将安装 ${ NAME_FULL }到您的计算机：&quot; &quot;请选择安装类型&quot; &quot;或选择您希望安装的组件&quot; &lt;BR&gt;InstType &quot;完全安装(都在了)&quot; &lt;BR&gt;InstType &quot;典型安装&quot; &lt;BR&gt;InstType /LANG=2052 /CUSTOMSTRING=自定义 &lt;BR&gt;;InstType /LANG=2052 /NOCUSTOM &lt;BR&gt;;InstType /COMPONENTSONLYONCUSTOM &lt;BR&gt;CheckBitmap &quot;${ NSISDIR }\Contrib\Icons\modern.bmp&quot; &lt;BR&gt;; 替换显示磁盘空间信息的文字 &lt;BR&gt;SpaceTexts /LANG=2052 &quot;所需空间：&quot; &quot;可用空间：&quot;&lt;/P&gt;
&lt;P&gt;; 提示用户输入目录的文本 &lt;BR&gt;; DirShow hide &lt;BR&gt;; 替换显示选择安装目录的文字 &lt;BR&gt;DirText /LANG=2052 &quot;请选择 ${ NAME } 的安装路径：&quot; &quot;选择目录用以安装 ${ NAME }：&quot; &quot;浏览...&quot; &lt;BR&gt;; 是否允许安装在根目录下 &lt;BR&gt;AllowRootDirInstall false&lt;/P&gt;
&lt;P&gt;; 安装信息的颜色 &lt;BR&gt;;InstallColors 000000 FFFFFF &lt;BR&gt;; 安装进度条显示方式 &lt;BR&gt;InstProgressFlags smooth colored &lt;BR&gt;; 完成后自动关闭安装程序 &lt;BR&gt;AutoCloseWindow true &lt;BR&gt;; 显示“显示详细细节”对话框 &lt;BR&gt;ShowInstDetails hide &lt;BR&gt;; 替换“显示细节”按钮的文字 &lt;BR&gt;DetailsButtonText /LANG=2052 &quot;显示细节&quot; &lt;BR&gt;; 替换“完成”按钮的文字 &lt;BR&gt;CompletedText /LANG=2052 &quot;已完成&quot;&lt;/P&gt;
&lt;P&gt;; 卸载程序设置&lt;/P&gt;
&lt;P&gt;; 替换卸载程序的文字 &lt;BR&gt;UninstallText /LANG=2052 &quot;现在将从你的系统中卸载 ${ NAME }：&quot; &quot;卸载目录：&quot; &lt;BR&gt;; 卸载程序图标 &lt;BR&gt;UninstallIcon &quot;F:\12\UnQCDIcon.ico&quot; &lt;BR&gt;; 替换卸载程序标题的文字 &lt;BR&gt;UninstallCaption /LANG=2052 &quot;卸载 ${ NAME }&quot; &lt;BR&gt;; 替换卸载程序每页按钮的文字 &lt;BR&gt;UninstallSubCaption /LANG=2052 0 &quot;：确认&quot; &lt;BR&gt;UninstallSubCaption /LANG=2052 1 &quot;：正在删除文件&quot; &lt;BR&gt;UninstallSubCaption /LANG=2052 2 &quot;：完成&quot; &lt;BR&gt;; 卸载程序显示方式 &lt;BR&gt;ShowUninstDetails hide &lt;BR&gt;; 替换“卸载”按钮的文字 &lt;BR&gt;UninstallButtonText /LANG=2052 &quot;卸载&quot;&lt;/P&gt;
&lt;P&gt;; 安装程序内容及其相关的回调函数&lt;/P&gt;
&lt;P&gt;; 安装程序内容 &lt;BR&gt;Section /e &quot;!主要程序(必须安装)&quot; SecCore &lt;BR&gt;SectionIn 1 2 RO &lt;BR&gt;; 设置输出路径，每次使用都会改变 &lt;BR&gt;SetOutPath $INSTDIR &lt;BR&gt;; 循环包含目录下全部内容 &lt;BR&gt;File /r &quot;F:\12\1\*.*&quot; &lt;BR&gt;; 只包含一个文件 &lt;BR&gt;File &quot;F:\12\gf.gif&quot; &lt;BR&gt;; 处理动态连接库文件 &lt;BR&gt;IfFileExists &quot;$INSTDIR\1.dll&quot; 0 NoFile1 &lt;BR&gt;; 取消组件注册 &lt;BR&gt;UnRegDll &quot;$INSTDIR\1.dll&quot; &lt;BR&gt;Delete &quot;$INSTDIR\1.dll&quot; &lt;BR&gt;NoFile1: &lt;BR&gt;File &quot;F:\12\1.dll&quot; &lt;BR&gt;; 注册组件 &lt;BR&gt;RegDLL &quot;$INSTDIR\QCDIconMgr.dll&quot; &lt;BR&gt;; 写入软件注册键值 &lt;BR&gt;WriteRegStr HKLM &quot;Software\NSIS\NSIS&quot; &quot;&quot; &quot;$INSTDIR&quot; &lt;BR&gt;; 为 Windows 卸载程序写入键值 &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS&quot; &quot;DisplayName&quot; &quot;NSIS（只用于移除）&quot; &lt;BR&gt;WriteRegStr HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS&quot; &quot;UninstallString&quot; '&quot;$INSTDIR\uninst.exe&quot;' &lt;BR&gt;; 写入生成卸载程序（可多次使用） &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\uninst.exe&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section /e &quot;扩展(可选)&quot; SecUpdate &lt;BR&gt;SectionIn 1 &lt;BR&gt;SetOutPath &quot;$INSTDIR\Plugins&quot; &lt;BR&gt;File &quot;F:\12\qcdplus\Plugins\2.dll&quot; &lt;BR&gt;File /r &quot;F:\12\qcdplus\Plugins\3&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;SubSection /e &quot;选项&quot; SecOptions &lt;BR&gt;Section /e &quot;创建桌面图标&quot; SecDesktopShortCut &lt;BR&gt;SectionIn 1 2 &lt;BR&gt;SetOutPath &quot;$INSTDIR\Plugins&quot; &lt;BR&gt;CreateShortCut &quot;$DESKTOP\NSIS.lnk&quot; &quot;$INSTDIR\gf.gif&quot; &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\uninst.exe&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section /e &quot;创建快速启动栏图标&quot; SecQuickbarShortCut &lt;BR&gt;SectionIn 1 2 &lt;BR&gt;SetOutPath &quot;$INSTDIR\Plugins&quot; &lt;BR&gt;CreateShortCut &quot;$QUICKLAUNCH\NSIS.lnk&quot; &quot;$INSTDIR\gf.gif&quot; &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\uninst.exe&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section /e &quot;创建 NSIS 程序组&quot; SecShortCutGroup &lt;BR&gt;SectionIn 1 2 &lt;BR&gt;SetOutPath &quot;$INSTDIR\Plugins&quot; &lt;BR&gt;CreateDirectory &quot;$SMPROGRAMS\NSIS&quot; &lt;BR&gt;CreateShortCut &quot;$SMPROGRAMS\QCD Player\gf.lnk&quot; &quot;$INSTDIR\gf.gif&quot; &lt;BR&gt;WriteUninstaller &quot;$INSTDIR\uninst.exe&quot; &lt;BR&gt;SectionEnd &lt;BR&gt;SubSectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;-Run&quot;; 运行 &lt;BR&gt;ExecWait '&quot;$INSTDIR\2.exe&quot; -p' &lt;BR&gt;WriteINIStr &quot;$INSTDIR\NSIS.ini&quot; &quot;2&quot; &quot;Language&quot; &quot;Chinese&quot; &lt;BR&gt;Exec &quot;$INSTDIR\2.exe&quot; &lt;BR&gt;ExecShell open &quot;$INSTDIR\汉化说明.htm&quot; &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;&quot; &lt;BR&gt;;Invisible section to display the Finish header&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_FINISHHEADER SetHeader &lt;BR&gt;SectionEnd &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;; 安装程序初始化设置 &lt;BR&gt;Function .onInit &lt;BR&gt;; 发现有程序正在运行时提示退出后继续运行 &lt;BR&gt;loop: &lt;BR&gt;FindWindow $R0 &quot;NSIS&quot; &lt;BR&gt;IntCmp $R0 0 done &lt;BR&gt;MessageBox MB_OKCANCEL \ &lt;BR&gt;&quot;NSIS 正在运行。$\n点击“确定”按钮会关闭 NSIS 然后继续安装，点击“取消”按钮将退出安装程序&quot; \ &lt;BR&gt;IDOK NoAbort &lt;BR&gt;Abort &lt;BR&gt;NoAbort: &lt;BR&gt;SendMessage $R0 1029 0 0 &lt;BR&gt;; 稍等后继续检测直至检测不到或用户选择取消 &lt;BR&gt;Sleep 444 &lt;BR&gt;Goto loop &lt;BR&gt;done: &lt;BR&gt;; 显示 Logo 画面 &lt;BR&gt;SetOutPath $TEMP &lt;BR&gt;File /oname=qcd_logo.bmp &quot;F:\12\logo.bmp&quot; &lt;BR&gt;File /oname=magiclime.exe &quot;${ NSISDIR }\Bin\magiclime.exe&quot; &lt;BR&gt;ExecWait '&quot;$TEMP\magiclime.exe&quot; qcd_logo.bmp' &lt;BR&gt;Delete &quot;$TEMP\magiclime.exe&quot; &lt;BR&gt;Delete &quot;$TEMP\qcd_logo.bmp&quot; &lt;BR&gt;; 初始化标牌位图 &lt;BR&gt;!insertmacro BI_INIT $R0 &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 安装程序主界面的相关文本 &lt;BR&gt;Function SetHeader &lt;BR&gt;!insertmacro MUI_HEADER_INIT &lt;BR&gt;!insertmacro MUI_HEADER_START 1 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;授权协议&quot; &quot;安装 ${ NAME } 之前，请认真阅读一下授权条款.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 1 &lt;BR&gt;!insertmacro MUI_HEADER_START 2 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;选择组件&quot; &quot;请选择你要安装的组件.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 2 &lt;BR&gt;!insertmacro MUI_HEADER_START 3 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;选择安装位置&quot; &quot;为 ${ NAME } 选择一个安装目录.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 3 &lt;BR&gt;!insertmacro MUI_HEADER_START 4 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;安装&quot; &quot;${ NAME } 已经安装，请等待.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 4 &lt;BR&gt;!insertmacro MUI_HEADER_START 5 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;完成&quot; &quot;安装顺利完成.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 5 &lt;BR&gt;!insertmacro MUI_HEADER_END &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 初始化安装程序对话框的显示文本 &lt;BR&gt;Function .onInitDialog &lt;BR&gt;!insertmacro MUI_INNERDIALOG_INIT &lt;BR&gt;!insertmacro MUI_INNERDIALOG_START 1 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_TEXT 2052 1040 &quot;如果你同意协议中的所有条款,选择“我同样”继续安装,如果你选择了“取消”,安装程序将终止,只有接受条款才能安装 ${ NAME }.&quot; &lt;BR&gt;!insertmacro MUI_INNERDIALOG_STOP 1 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_START 2 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_TEXT 2052 1042 &quot;描述&quot; &lt;BR&gt;!insertmacro MUI_INNERDIALOG_TEXT 2052 1043 &quot;移动你的鼠标到组件上,便可以见到相关的描述.&quot; &lt;BR&gt;!insertmacro MUI_INNERDIALOG_STOP 2 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_START 3 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_TEXT 2052 1041 &quot;目标文件夹&quot; &lt;BR&gt;!insertmacro MUI_INNERDIALOG_STOP 3 &lt;BR&gt;!insertmacro MUI_INNERDIALOG_END &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 转到下页面时的处理 &lt;BR&gt;Function .onNextPage &lt;BR&gt;!insertmacro MUI_NEXTPAGE_OUTER &lt;BR&gt;!insertmacro MUI_NEXTPAGE SetHeader &lt;BR&gt;; 标牌位图设置 &lt;BR&gt;!insertmacro BI_NEXT &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 转到上一页面时的处理 &lt;BR&gt;Function .onPrevPage &lt;BR&gt;!insertmacro MUI_PREVPAGE &lt;BR&gt;; 标牌位图设置 &lt;BR&gt;!insertmacro BI_PREV &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 鼠标移到指定组件时的显示处理 &lt;BR&gt;Function .onMouseOverSection &lt;BR&gt;; 用宏指令设置安装自己的注释文本 &lt;BR&gt;!insertmacro MUI_DESCRIPTION_INIT &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecCore } &quot;安装主应用程序&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecUpdate } &quot;安装 NSIS 的更新或新增插件&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecOptions } &quot;选择 NSIS 的其他安装选项，例如：创建快捷方式和应用程序组的&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecDesktopShortCut } &quot;在用户的桌面上创建 NSIS 的快捷方式&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecQuickbarShortCut } &quot;在用户的快速栏里创建 NSIS 快捷方式&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_TEXT 2052 ${ SecShortCutGroup } &quot;在用户的开始菜单的程序中创建 NSIS 的快捷方式组&quot; &lt;BR&gt;!insertmacro MUI_DESCRIPTION_END &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 安装成功完成后的设置 &lt;BR&gt;Function .onInstSuccess &lt;BR&gt;; 自己加吧:) &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 放弃安装时警告窗口的显示信息 &lt;BR&gt;Function .onUserAbort &lt;BR&gt;!insertmacro MUI_ABORTWARNING 2052 &quot;你确定要推出 ${ NAME } 的安装吗?&quot;&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_ABORTWARNING_END &lt;BR&gt;FunctionEnd &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;; 安装程序标牌位图列表 &lt;BR&gt;!insertmacro BI_LIST &lt;BR&gt;!insertmacro BI_LIST_ADD &quot;F:\12\Brand1.bmp&quot; /RESIZETOFIT &lt;BR&gt;!insertmacro BI_LIST_ADD &quot;F:\12\Brand2.bmp&quot; /RESIZETOFIT &lt;BR&gt;!insertmacro BI_LIST_ADD &quot;F:\12\Brand3.bmp&quot; /RESIZETOFIT &lt;BR&gt;!insertmacro BI_LIST_END&lt;/P&gt;
&lt;P&gt;; 卸载程序及其相关回调函数&lt;/P&gt;
&lt;P&gt;; 卸载程序内容 &lt;BR&gt;Section &quot;Uninstall&quot; &lt;BR&gt;ExecWait '&quot;$INSTDIR\12.exe&quot; /un' &lt;BR&gt;; 循环删除文件直至删除文件夹 &lt;BR&gt;RMDir /r &quot;$SMPROGRAMS\NSIS&quot; &lt;BR&gt;UnRegDLL &quot;$INSTDIR\2.dll&quot; &lt;BR&gt;Delete &quot;$INSTDIR\QCDIconMgr.dll&quot; &lt;BR&gt;Delete &quot;$INSTDIR\*.*&quot; &lt;BR&gt;DeleteRegKey HKLM &quot;Software\NSIS&quot; &lt;BR&gt;DeleteRegKey HKLM &quot;Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS&quot; &lt;BR&gt;MessageBox MB_YESNO&amp;amp;line;MB_ICONQUESTION \ &lt;BR&gt;&quot;是否连插件目录也要删除？$\n(若您要保留这些文件，请点击下面的“否”按钮)&quot; \ &lt;BR&gt;IDNO NoDelete &lt;BR&gt;; 全删光！！！ &lt;BR&gt;RMDir /r &quot;$INSTDIR&quot; &lt;BR&gt;NoDelete: &lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;; 定义卸载程序标牌位图 &lt;BR&gt;!define BI_UNINSTALL &lt;BR&gt;!include &quot;${ NSISDIR }\Examples\branding.nsh&quot;&lt;/P&gt;
&lt;P&gt;; 初始化卸载程序对话框的设置 &lt;BR&gt;Function un.onInit &lt;BR&gt;; 初始化标牌位图 &lt;BR&gt;!insertmacro BI_INIT $R0 &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 卸载程序主界面的相关文本 &lt;BR&gt;Function un.SetHeader &lt;BR&gt;!insertmacro MUI_HEADER_INIT &lt;BR&gt;!insertmacro MUI_HEADER_START 1 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;卸载 ${ NAME }&quot; &quot;${ NAME_FULL } 将从你的系统里移除.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 1 &lt;BR&gt;!insertmacro MUI_HEADER_START 2 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;卸载&quot; &quot;${ NAME } 正在被卸载，请等待.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 2 &lt;BR&gt;!insertmacro MUI_HEADER_START 3 &lt;BR&gt;!insertmacro MUI_HEADER_TEXT 2052 &quot;完成&quot; &quot;${ NAME_FULL } 已从你的系统中移除.&quot; &lt;BR&gt;!insertmacro MUI_HEADER_STOP 3 &lt;BR&gt;!insertmacro MUI_HEADER_END &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 初始化卸载程序对话框时的处理 &lt;BR&gt;Function un.onInitDialog &lt;BR&gt;; 自己加:) &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 卸载程序转到下一页时的处理 &lt;BR&gt;Function un.onNextPage &lt;BR&gt;!insertmacro MUI_NEXTPAGE_OUTER &lt;BR&gt;!insertmacro MUI_NEXTPAGE un.SetHeader &lt;BR&gt;; 标牌位图设置 &lt;BR&gt;!insertmacro BI_NEXT &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 卸载程序完成时的处理 &lt;BR&gt;Function un.onUninstSuccess &lt;BR&gt;; 再加^_^ &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 放弃卸载程序时的处理 &lt;BR&gt;Function un.onUserAbort &lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; 卸载程序标牌位图列表 &lt;BR&gt;!insertmacro BI_LIST &lt;BR&gt;!insertmacro BI_LIST_ADD &quot;F:\12\UnBrand1.bmp&quot; /RESIZETOFIT &lt;BR&gt;!insertmacro BI_LIST_ADD &quot;F:\12\UnBrand2.bmp&quot; /RESIZETOFIT &lt;BR&gt;!insertmacro BI_LIST_END&lt;/P&gt;
&lt;P&gt;; 结束 &lt;BR&gt;/////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;7.注意两个标牌位图列表宏指令必须放置到函数的后面，就像我编写的那样，安装程序的标牌位 &lt;BR&gt;图列表放置到到所有安装程序回调函数的后面；卸载程序的标牌位图列表放置到所有卸载程序回 &lt;BR&gt;调函数的后面。 &lt;BR&gt;关键是要注意整体布局（这样才不会看迷糊），当然若编译不能通过，就要进行合适的调整。&lt;/P&gt;
&lt;P&gt;8. 使用指令： &lt;BR&gt;makensis /CD f:\study.nsi&quot; &lt;BR&gt;进行编译（这个示例脚本我没试过-_-，若编译无法通过只好自己动手研究研究了。我放出来只是用于参考学习）&lt;/P&gt;
&lt;P&gt;9. 还没完—— NSIS 对多语言的支持还是不够完美（注意：是完美——有点鸡蛋里挑骨头的味道）。 &lt;BR&gt;我们继续： &lt;BR&gt;　　用 ExeScope （其他的资源编辑器也行，别说你没有）打开生成的 study.exe 文件，找到对话框资源的 105 项目。你会发现有一块很明显的用以显示标牌位图的控件。因为 NSIS 在插件此控件时是使其保持于授权协议文件控件等高的，所以当使用用 modern2.exe 对话框模板时会与对话框顶部多出 45 的距离——不罗嗦了，总之根据需要搞得好看就行（别过火！）。顺便提一下，NSIS 安装目中的 Contrib\UIs 子目录下提供了多种对话框模板，你可以自行选用（就是用 &lt;BR&gt;ChangeUI 指令或用宏指令），甚至根据需要用资源编辑器修改模板资源。&lt;/P&gt;
&lt;P&gt;接着修改：找到 111 项，把里面的资源汉化掉（新的界面居然没有对此对话框的多语言支持！这个对话框只有在大容量的安装程序执行时才显示）。&lt;/P&gt;
&lt;P&gt;用 ExeScope 更新后，再用 Hex WorkShop 打开我问可怜的试验品——study.exe，查找字符串“unpacking data: ”（没引号的，你别瞎加。找不到别怪我 $_$）。找到后处理一下，用“正在解压缩数据：” &lt;BR&gt;替换（正好 8 个字符 Yeah！）。&lt;/P&gt;
&lt;P&gt;10. 现在我要说为什么不启用 UPX 压缩以及关闭 CRC 检测： &lt;BR&gt;用 UPX 压缩可执行文件头或启用 CRC 检测（起用的话就是打开了自校验），我们的 ExeScope 就无用武之地了（除非你够牛会动态跟踪技术和反汇编把文件头壳和自校验去掉，否则还是关掉的好）。&lt;/P&gt;
&lt;P&gt;至此全部完工。&lt;/P&gt;
&lt;P&gt;4...&lt;BR&gt;创建 NSIS 脚本的习惯： 创建一个 include 目录，用来保存安装用的文件， .nsi 文件放在 include 的上级目录，再在 include 目录里创建一个 resource，用来保存一些资源文件比如图标、界面位图、自己修改的 UI 等等。&lt;/P&gt;
&lt;P&gt;然后分析一下官方的安装程序，嗯嗯，先清空临时文件夹，这是为了为了找东西方便，然后启动安装程序，再到临时目录里找一个 nxxx.tmp 这样的目录，里面有一些释放出来的资源 gaydata.ini、modern-header.bmp、classic256.bmp、modern256.bmp、opt2page.ini、opt3page.ini。那几个位图一看就明白，不用解释，gaydata.ini 呢，里面有从 sec0 到 sec47 的定义，所以我们可以确定一共有 47 个区段，而且区段的名称是根据 gaydata.ini 来确定的，如何知道是根据 gaydata.ini 来确定的 的呢，你在安装程序刚启动的时候(刚显示许可页面的时候)找到临时的那个目录(也就是 NSIS 里的 $PLUGINSDIR 目录)，把一个区段名称改一下，比如把“Winamp (required)”改为 aaa，等进入组件选择页面的时候第一个就是 aaa 了，而如果把“Winamp (required)”清空的话，第一个区段就不见了。 opt2page.ini、opt3page.ini 分别是最后两个页面用来选择连接方式和外观的。分析后就可以动手了……&lt;/P&gt;
&lt;P&gt;1.建立基本的结构&lt;/P&gt;
&lt;P&gt;首先在脚本头部定义一些版本号等值，比如&lt;/P&gt;
&lt;P&gt;!define VERSION &quot;5.05&quot;&lt;BR&gt;!define VERSION_NUM &quot;505&quot;&lt;/P&gt;
&lt;P&gt;这样版本号变的时候在脚本头部改一下就行了，不用在脚本的每个地方都改&lt;BR&gt;然后定义输出文件名，为了方便 full、pro、lite 三个版本切换方便。&lt;/P&gt;
&lt;P&gt;!define FILE_NAME &quot;Winamp${ VERSION_NUM }_full&quot;&lt;/P&gt;
&lt;P&gt;有关定义的说明可以看这里&lt;/P&gt;
&lt;P&gt;再下来就是安装程序属性的设置了，必须的设置有&lt;BR&gt;Name &quot;Winamp&quot;&lt;BR&gt;OutFile &quot;${ FILE_NAME }.exe&quot;&lt;/P&gt;
&lt;P&gt;当然&lt;/P&gt;
&lt;P&gt;SetCompressor lzma&lt;/P&gt;
&lt;P&gt;应该也是必须的，LZMA 不止压缩率大很多，而且不太准确的一个属性是启动快不少，然后再设置一个区段就构成了主体部分，已经能够编译了&lt;/P&gt;
&lt;P&gt;Section &quot;主程序&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;2. 插入页面&lt;/P&gt;
&lt;P&gt;首先要&lt;/P&gt;
&lt;P&gt;!include &quot;MUI.nsh&quot;&lt;/P&gt;
&lt;P&gt;这样才能使用 NSIS 提供的一些宏来插入页面，要插入的页面是&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_PAGE_LICENSE &quot;.\resource\License.txt&quot;&lt;BR&gt;!insertmacro MUI_PAGE_COMPONENTS&lt;BR&gt;!insertmacro MUI_PAGE_DIRECTORY&lt;BR&gt;!insertmacro MUI_PAGE_COMPONENTS&lt;BR&gt;!insertmacro MUI_PAGE_INSTFILES&lt;BR&gt;!insertmacro MUI_UNPAGE_CONFIRM&lt;BR&gt;!insertmacro MUI_UNPAGE_INSTFILES&lt;/P&gt;
&lt;P&gt;最后还要插入语言&lt;/P&gt;
&lt;P&gt;!insertmacro MUI_LANGUAGE English&lt;/P&gt;
&lt;P&gt;3. 完善安装程序属性设置&lt;BR&gt;当然安装程序的属性还要增加一些设置&lt;/P&gt;
&lt;P&gt;BrandingText &quot;Nullsoft Install System -- built on ${ __DATE__ } at ${ __TIME__ }&quot;&lt;/P&gt;
&lt;P&gt;这是设置安装程序个人标志的&lt;/P&gt;
&lt;P&gt;InstallDir &quot;$PROGRAMFILES\Winamp&quot;&lt;/P&gt;
&lt;P&gt;设置一个默认的安装路径&lt;/P&gt;
&lt;P&gt;InstallDirRegKey HKCU &quot;Software\Winamp&quot; &quot;&quot;&lt;/P&gt;
&lt;P&gt;优先读取注册表里保存的路径，如果存在就是用注册表保存的路径&lt;/P&gt;
&lt;P&gt;4. 设置页面&lt;BR&gt;图标的定义&lt;/P&gt;
&lt;P&gt;!define MUI_ICON &quot;.\resource\inst.ico&quot;&lt;BR&gt;!define MUI_UNICON &quot;.\resource\uninst.ico&quot;&lt;/P&gt;
&lt;P&gt;定义了安装程序图标和卸载程序图标&lt;/P&gt;
&lt;P&gt;!define MUI_HEADERIMAGE&lt;/P&gt;
&lt;P&gt;定义在安装程序顶端显示一个位图&lt;/P&gt;
&lt;P&gt;!define MUI_HEADERIMAGE_BITMAP &quot;.\resource\modern-header.bmp&quot;&lt;/P&gt;
&lt;P&gt;定义要显示的位图，必须是本地机器上的&lt;/P&gt;
&lt;P&gt;!define MUI_COMPONENTSPAGE_NODESC&lt;/P&gt;
&lt;P&gt;指定组件选择页面不使用描述区域&lt;/P&gt;
&lt;P&gt;5. 设置页面文本&lt;/P&gt;
&lt;P&gt;!define MUI_LICENSEPAGE_TEXT_TOP &quot;Please read and agree to the license terms below before installing.&quot;&lt;/P&gt;
&lt;P&gt;指定许可页面上顶端显示的文本&lt;/P&gt;
&lt;P&gt;!define MUI_COMPONENTSPAGE_TEXT_TOP &quot;This will install Winamp ${ VERSION }. This installer contains the full install.&quot;&lt;/P&gt;
&lt;P&gt;指定组件选择页面顶端的文本&lt;/P&gt;
&lt;P&gt;!define MUI_DIRECTORYPAGE_TEXT_TOP &quot;Setup has determined the optimal location to install. If you would like to change the folder, do so now.&quot;&lt;/P&gt;
&lt;P&gt;指定目录选择页面的文本&lt;/P&gt;
&lt;P&gt;!define MUI_ABORTWARNING&lt;/P&gt;
&lt;P&gt;定义按取消按钮时，提示是否真的退出&lt;/P&gt;
&lt;P&gt;6. 设定安装类型，并把补全所有的区段&lt;/P&gt;
&lt;P&gt;InstType &quot;Full&quot;&lt;BR&gt;InstType &quot;Standard&quot;&lt;BR&gt;InstType &quot;Lite&quot;&lt;BR&gt;InstType &quot;Minimal&quot;&lt;/P&gt;
&lt;P&gt;一共四个安装类型，还有一个 Custom 类型系统会自动添加，不必干预&lt;/P&gt;
&lt;P&gt;然后在创建 46 个区段，一共有 47 个，名称可以随便起，因为区段的名称到后面会由 gaydata.ini 来从命名，比如&lt;/P&gt;
&lt;P&gt;Section &quot; &quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;7. .onInit 函数&lt;/P&gt;
&lt;P&gt;这个函数是在安装程序 GUI 启动完毕的时候开始执行里面的代码，应该把那些资源文件在这个阶段释放到用户电脑以供使用&lt;/P&gt;
&lt;P&gt;InitPluginsDir&lt;/P&gt;
&lt;P&gt;初始化 $PLUGINSDIR 也就是插件目录&lt;/P&gt;
&lt;P&gt;File &quot;/oname=$PLUGINSDIR\gaydata.ini&quot; &quot;.\resource\gaydata.ini&quot;&lt;BR&gt;File &quot;/oname=$PLUGINSDIR\opt2page.ini&quot; &quot;.\resource\opt2page.ini&quot;&lt;BR&gt;File &quot;/oname=$PLUGINSDIR\opt3page.ini&quot; &quot;.\resource\opt3page.ini&quot; &lt;BR&gt;File &quot;/oname=$PLUGINSDIR\classic256.bmp&quot; &quot;.\resource\classic256.bmp&quot;&lt;BR&gt;File &quot;/oname=$PLUGINSDIR\modern256.bmp&quot; &quot;.\resource\modern256.bmp&quot;&lt;/P&gt;
&lt;P&gt;因为在 .onInit 里使用 File 会使程序启动时要搜索很久，所以还应该使用 ReserveFile，ReserveFile 的说明看这里。&lt;BR&gt;在 !include &quot;MUI.nsh&quot; 上面增加&lt;/P&gt;
&lt;P&gt;ReserveFile &quot;.\resource\gaydata.ini&quot;&lt;BR&gt;ReserveFile &quot;.\resource\opt2page.ini&quot;&lt;BR&gt;ReserveFile &quot;.\resource\opt3page.ini&quot; &lt;BR&gt;ReserveFile &quot;.\resource\classic256.bmp&quot;&lt;BR&gt;ReserveFile &quot;.\resource\modern256.bmp&quot;&lt;BR&gt;ReserveFile &quot;${ NSISDIR }\Plugins\InstallOptions.dll&quot; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;因为 InstallOptions.dll 在自定义界面要使用，所以也要加入&lt;/P&gt;
&lt;P&gt;8. 组件的隐藏和显示&lt;BR&gt;细心的朋友都看到了脚本里面有两个 !insertmacro MUI_PAGE_COMPONENTS，那么组件选择页面就会出现两次，察看 gaydata.ini 就知道第一次显示的是 sec0 到 sec36，第二次显示的是 sec37 到 sec 47。&lt;BR&gt;关于页面的说明请看这里&lt;BR&gt;每个页面都有三个函数： Pre、Show、Leave，分别是预载入、显示、离开，在 MUI 界面可以用定义的方法来插入函数，比如在 !insertmacro MUI_PAGE_COMPONENTS 前(插入上一个页面之后) 定义一个 MUI_PAGE_CUSTOMFUNCTION_PRE 函数就可以插入一个预载入函数。在本次脚本中在第一个组件选择页面作如下定义&lt;/P&gt;
&lt;P&gt;!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentPre&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_SHOW ComponentShow&lt;/P&gt;
&lt;P&gt;上面定义了 ComponentPre、ComponentShow 函数，当然定义的函数名可以随便起，但一般来说名字都要表达它的含义，便于阅读。&lt;/P&gt;
&lt;P&gt;在开始创建这两个函数之前还要定义一些内容&lt;/P&gt;
&lt;P&gt;!define SECTION_COMPONENT_END 36&lt;BR&gt;!define SECTION_ASSCOIATION_START 37&lt;BR&gt;!define SECTION_TOTAL 47&lt;/P&gt;
&lt;P&gt;上面定义了 36 是要安装的组件最后的区段索引好，37 是文件关联等的开始区段索引号，47 是总共的区段数。ComponentPre 函数的内容如下&lt;/P&gt;
&lt;P&gt;Function ComponentPre&lt;BR&gt;Push $0&lt;BR&gt;Push $1&lt;/P&gt;
&lt;P&gt;Call SectionTextReset&lt;/P&gt;
&lt;P&gt;StrCpy $1 0&lt;BR&gt;loop:&lt;BR&gt;ReadINIStr $0 &quot;$PLUGINSDIR\gaydata.ini&quot; &quot;secnames&quot; &quot;sec$1&quot;&lt;BR&gt;StrCmp $0 &quot;&quot; 0 +2&lt;BR&gt;SectionSetText $1 &quot;&quot;&lt;BR&gt;StrCmp $1 ${ SECTION_COMPONENT_END } loop_quit&lt;BR&gt;IntOp $1 $1 + 1&lt;BR&gt;Goto loop&lt;BR&gt;loop_quit:&lt;/P&gt;
&lt;P&gt;StrCpy $1 ${ SECTION_ASSCOIATION_START }&lt;BR&gt;SectionSetText $1 &quot;&quot;&lt;BR&gt;StrCmp $1 ${ SECTION_TOTAL } +3&lt;BR&gt;IntOp $1 $1 + 1&lt;BR&gt;Goto -3&lt;/P&gt;
&lt;P&gt;Pop $1&lt;BR&gt;Pop $0&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;这个函数调用了 SectionTextReset 函数，SectionTextReset 函数如下&lt;/P&gt;
&lt;P&gt;Function SectionTextReset&lt;BR&gt;Push $R0&lt;/P&gt;
&lt;P&gt;StrCpy $R0 0&lt;BR&gt;SectionSetText $R0 &quot; &quot;&lt;BR&gt;StrCmp $R0 ${ SECTION_TOTAL } +3&lt;BR&gt;IntOp $R0 $R0 + 1&lt;BR&gt;Goto -3&lt;/P&gt;
&lt;P&gt;Pop $R0&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;SectionTextReset 函数构成一个循环，$R0 从 0 开始递增，直到等于 ${ SECTION_TOTAL } 后跳出循环，这个循环把所有区段的名称都重置为空格，在两个 MUI_PAGE_COMPONENTS 页面的预载入函数都调用一次。这是因为 Show 函数会把一些区段隐藏，即把区段名称设为空值，在下一个 MUI_PAGE_COMPONENTS 页面的 Pre 阶段必须给它一个名称，否则它将一直隐藏。&lt;/P&gt;
&lt;P&gt;调用了 SectionTextReset 函数之后是一个循环，这个循环读取 &quot;$PLUGINSDIR\gaydata.ini&quot; 的 sec0 到 ${ SECTION_COMPONENT_END } ，如果某个 sec 读到的值为空，则把该区段隐藏，也就是把区段名设为空值。你可以试试英文原版，刚启动时把 &quot;$PLUGINSDIR\gaydata.ini&quot; 的 sec0 设为空值，到了组件选择页面 Winamp (required) 区段就被隐藏了。&lt;/P&gt;
&lt;P&gt;再下来也是一个循环，把 ${ SECTION_ASSCOIATION_START } 到 ${ SECTION_TOTAL } 的区段隐藏，因为第一个 MUI_PAGE_COMPONENTS 只需要显示 0 到 ${ SECTION_COMPONENT_END } 的区段。ComponentShow 函数如下&lt;/P&gt;
&lt;P&gt;Function ComponentShow&lt;BR&gt;Push $0&lt;BR&gt;Push $1&lt;/P&gt;
&lt;P&gt;StrCpy $1 0&lt;BR&gt;loop:&lt;BR&gt;ReadINIStr $0 &quot;$PLUGINSDIR\gaydata.ini&quot; &quot;secnames&quot; &quot;sec$1&quot;&lt;BR&gt;SectionSetText $1 $0&lt;BR&gt;StrCmp $1 ${ SECTION_COMPONENT_END } loop_quit&lt;BR&gt;IntOp $1 $1 + 1&lt;BR&gt;Goto loop&lt;BR&gt;loop_quit:&lt;/P&gt;
&lt;P&gt;Pop $1&lt;BR&gt;Pop $0&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;也是一个循环，$1 的值从 0 到 ${ SECTION_COMPONENT_END } 递增，则是依次从 sec0 到 sec36 读取 gaydata.ini 相应的值，并根据读取道的值来从命名区段名称。&lt;/P&gt;
&lt;P&gt;第二个组件页面对应的 AsscoiationPre、AsscoiationShow 与上面的基本一致，只是要隐藏的区段索引不同而已。&lt;/P&gt;
&lt;P&gt;9. 隐藏控件&lt;BR&gt;组件页面第二次显示的时候，有几个控件是隐藏的，用 Resource Hacker 打开 ${ NSISDIR }\Contrib\UIs\modern.exe 里面的 104 对话框就是组件显示页面，要隐藏的空间 ID 为 1017 (显示安装类型) 和 1021 (它左边显示的文本) 还有 1023 (磁盘空间显示的控件)。显示和隐藏控件的指令为 ShowWindow ，说明请看这里。&lt;BR&gt;隐藏控件的代码需要加在 AsscoiationShow 函数里。&lt;/P&gt;
&lt;P&gt;FindWindow $0 &quot;#32770&quot; &quot;&quot; $HWNDPARENT&lt;/P&gt;
&lt;P&gt;获取一个窗口句柄保存在 $0 里&lt;/P&gt;
&lt;P&gt;GetDlgItem $1 $0 1017&lt;/P&gt;
&lt;P&gt;获取 1017 控件的句柄&lt;/P&gt;
&lt;P&gt;ShowWindow $1 ${ SW_HIDE }&lt;/P&gt;
&lt;P&gt;隐藏 1017 控件，其他几个控件的隐藏指令依次为&lt;/P&gt;
&lt;P&gt;GetDlgItem $1 $0 1021&lt;BR&gt;ShowWindow $1 ${ SW_HIDE }&lt;BR&gt;GetDlgItem $1 $0 1023&lt;BR&gt;ShowWindow $1 ${ SW_HIDE }&lt;/P&gt;
&lt;P&gt;除了控件隐藏之外，还有两处文本需要更改，由于使用 !define 只能对第一次显示的组件页面更改，所以第二次显示的文本只能自己用 SendMessage 来改了&lt;/P&gt;
&lt;P&gt;GetDlgItem $1 $0 1006&lt;BR&gt;SendMessage $1 ${ WM_SETTEXT } 0 &quot;STR:Select which icons you want installed, and whether you want files and CDs associated with&quot;&lt;BR&gt;GetDlgItem $1 $0 1022&lt;BR&gt;SendMessage $1 ${ WM_SETTEXT } 0 &quot;STR:Select icons to install and media associations:&quot;&lt;/P&gt;
&lt;P&gt;组件A，组件B，A依赖于B。意思就是组件B可单独安装，但是B被安装时，A必须要被安装&lt;/P&gt;
&lt;P&gt;实现起来的脚本:&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Function .onSelChange&lt;BR&gt;SectionGetFlags ${ secA } $1&lt;BR&gt;StrCmp $1 1 0 +2&lt;BR&gt;SectionSetFlags ${ secB } 1&lt;BR&gt;FunctionEnd&lt;BR&gt;将此代码复制到最后一个Sectiongroupend(如果没有就是Sectionend)的后面即可。其中SecA、SecB分别改为你要定义的互斥软件的编号&lt;/P&gt;
&lt;P&gt;案例分析:&lt;BR&gt;QQ狂人DIY版的2005.10.29组件包里面，Tim平台是很重要的组件，很多组件依赖他才可以运行，看看狂人是怎么处理的(Tim平台编号是Sec18)&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Function .onSelChange&lt;BR&gt;SectionGetFlags ${ sec11 } $2&lt;BR&gt;StrCmp $2 1 0 +2&lt;BR&gt;SectionSetFlags ${ sec18 } 1&lt;BR&gt;FunctionEnd&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;组件A，组件B，两组件互斥。意思就是组件A与B不能同时安装，选择组建A时，组件B自动被取消选择，而当B被勾选时，A被自动取消选择。&lt;/P&gt;
&lt;P&gt;实现起来的脚本:&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Function .onSelChange&lt;BR&gt;SectionGetFlags ${ secA } $1&lt;BR&gt;SectionGetFlags ${ secB } $2&lt;BR&gt;StrCmp $2 1 0 +2&lt;BR&gt;SectionSetFlags ${ secA } 0&lt;BR&gt;StrCmp $1 1 0 +2&lt;BR&gt;SectionSetFlags ${ secB } 0&lt;BR&gt;FunctionEnd&lt;BR&gt;将此代码复制到最后一个Sectiongroupend(如果没有就是Sectionend)的后面即可。其中SecA、SecB分别改为你要定义的互斥软件的编号&lt;/P&gt;
&lt;P&gt;案例分析:&lt;BR&gt;QQ狂人DIY版的2005.10.29组件包里面有2个不同的外挂，狂人将其分别定义为Sec03和SecWG3，我们想让4.x外挂被选时3.x自动被取消，可以使用这样的代码&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Function .onSelChange&lt;BR&gt;SectionGetFlags ${ sec03 } $1&lt;BR&gt;SectionGetFlags ${ secWG3 } $2&lt;BR&gt;StrCmp $2 1 0 +2&lt;BR&gt;SectionSetFlags ${ sec03 } 0&lt;BR&gt;StrCmp $1 1 0 +2&lt;BR&gt;SectionSetFlags ${ secWG3 } 0&lt;BR&gt;FunctionEnd&lt;BR&gt;因为狂人组件包里面已经有Function .onSelChange以及FunctionEnd，因此我们只需要把&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;SectionGetFlags ${ sec03 } $1&lt;BR&gt;SectionGetFlags ${ secWG3 } $2&lt;BR&gt;StrCmp $2 1 0 +2&lt;BR&gt;SectionSetFlags ${ sec03 } 0&lt;BR&gt;StrCmp $1 1 0 +2&lt;BR&gt;SectionSetFlags ${ secWG3 } 0&lt;BR&gt;添加到Function .onSelChange以及FunctionEnd之间，最好在FunctionEnd的上一行，就OK了&lt;BR&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]有Flash的NSIS安装包制作脚本</title>
           <link>http://www.jdxz.com//softinfo/4963.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-22 1:25:26</pubDate>
           <comments></comments>
           <description>&lt;P&gt;; 该脚本应使用NSIS编译器编译&lt;/P&gt;
&lt;P&gt;; 安装程序初始定义常量&lt;BR&gt;!define PRODUCT_NAME &quot;医保农合接口&quot;&lt;BR&gt;!define PRODUCT_VERSION &quot;9.3&quot;&lt;BR&gt;!define PRODUCT_PUBLISHER &quot;jljyczy&quot;&lt;/P&gt;
&lt;P&gt;SetCompressor lzma&lt;/P&gt;
&lt;P&gt;Var hFlash ;定义Flash句柄变量&lt;/P&gt;
&lt;P&gt;; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------&lt;BR&gt;!include &quot;MUI.nsh&quot;&lt;/P&gt;
&lt;P&gt;; MUI 预定义常量&lt;BR&gt;!define MUI_FINISHPAGE_NOAUTOCLOSE&lt;BR&gt;!define MUI_ABORTWARNING&lt;BR&gt;!define MUI_ICON &quot;${NSISDIR}\Contrib\Graphics\Icons\win-install.ico&quot;&lt;BR&gt;!define MUI_UNICON &quot;${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico&quot;&lt;BR&gt;!define MUI_UNWELCOMEFINISHPAGE_BITMAP &quot;${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp&quot;&lt;BR&gt;!define MUI_HEADERIMAGE&lt;BR&gt;!define MUI_HEADERIMAGE_BITMAP &quot;${NSISDIR}\Contrib\Graphics\Header\win.bmp&quot;&lt;BR&gt;!define MUI_HEADERIMAGE_UNBITMAP &quot;${NSISDIR}\Contrib\Graphics\Header\orange-uninstall.bmp&quot;&lt;/P&gt;
&lt;P&gt;; Flash 运行页面&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_PRE Pre&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_SHOW Show&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_LEAVE Leave&lt;BR&gt;; 欢迎页面&lt;BR&gt;!insertmacro MUI_PAGE_WELCOME&lt;BR&gt;; 组件选择页面&lt;BR&gt;!insertmacro MUI_PAGE_COMPONENTS&lt;BR&gt;; 安装目录选择页面&lt;BR&gt;!insertmacro MUI_PAGE_DIRECTORY&lt;BR&gt;; 安装过程页面&lt;BR&gt;!insertmacro MUI_PAGE_INSTFILES&lt;BR&gt;; Flash 运行页面&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_Pre Pre&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_SHOW Show&lt;BR&gt;!define MUI_PAGE_CUSTOMFUNCTION_LEAVE Leave&lt;BR&gt;; 安装完成页面&lt;BR&gt;!insertmacro MUI_PAGE_FINISH&lt;/P&gt;
&lt;P&gt;; 安装卸载过程页面&lt;BR&gt;!insertmacro MUI_UNPAGE_INSTFILES&lt;/P&gt;
&lt;P&gt;; 安装界面包含的语言设置&lt;BR&gt;!insertmacro MUI_LANGUAGE &quot;SimpChinese&quot;&lt;/P&gt;
&lt;P&gt;; 安装预释放文件&lt;BR&gt;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS&lt;BR&gt;; ------ MUI 现代界面定义结束 ------&lt;/P&gt;
&lt;P&gt;Name &quot;${PRODUCT_NAME} ${PRODUCT_VERSION}&quot;&lt;BR&gt;OutFile &quot;医保农合接口.exe&quot;&lt;BR&gt;InstallDir &quot;$PROGRAMFILES\UFSoft&quot;&lt;BR&gt;InstallDirRegKey HKLM &quot;${PRODUCT_UNINST_KEY}&quot; &quot;UninstallString&quot;&lt;BR&gt;ShowInstDetails show&lt;BR&gt;ShowUnInstDetails show&lt;BR&gt;BrandingText &quot;Copyright (C) 2006-2010 jljyczy&quot;&lt;/P&gt;
&lt;P&gt;; -------------- Flash 开始运行 --------------&lt;/P&gt;
&lt;P&gt;ReserveFile &quot;${NSISDIR}\Plugins\System.dll&quot;&lt;BR&gt;ReserveFile &quot;${NSISDIR}\Plugins\FlashLib.dll&quot;&lt;BR&gt;;ReserveFile &quot;${NSISDIR}\Examples\FlashLib\1.swf&quot;&lt;BR&gt;ReserveFile &quot;1.swf&quot;&lt;/P&gt;
&lt;P&gt;Section &quot;&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Function .onInit&lt;BR&gt;&amp;nbsp; InitPluginsDir&lt;BR&gt;!define MySWF &quot;$PLUGINSDIR\1.swf&quot;&lt;BR&gt;&amp;nbsp; ;File &quot;/oname=${MySWF}&quot; &quot;${NSISDIR}\Examples\FlashLib\1.swf&quot;&lt;BR&gt;&amp;nbsp; File &quot;/oname=${MySWF}&quot; &quot;1.swf&quot;&lt;BR&gt;&amp;nbsp; File &quot;/oname=$PLUGINSDIR\FlashLib.dll&quot; &quot;${NSISDIR}\Plugins\FlashLib.dll&quot;&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;Function Pre&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;Function Show&lt;BR&gt;&amp;nbsp; ;System::Call 'user32::LoadImage(i,t,i,i,i,i,) i (0,&quot;$PLUGINSDIR\modern-wizard.bmp&quot;,0,0,0,0x2010) .s'&lt;BR&gt;&amp;nbsp; Pop $R0&lt;BR&gt;&amp;nbsp; !insertmacro INSTALLOPTIONS_READ $R1 &quot;ioSpecial.ini&quot; &quot;Field 1&quot; &quot;HWND&quot;&amp;nbsp; ;读取图片容器的句柄&lt;BR&gt;&amp;nbsp; System::Call '$PLUGINSDIR\FlashLib::FlashLibInit(i,i,i,i,i,i,i) i (0,0,164,291,$R1,$R0,true) .s'&lt;BR&gt;&amp;nbsp; Pop $hFlash&lt;BR&gt;&amp;nbsp; System::Call '$PLUGINSDIR\FlashLib::FlashLoadMovie(i,t) i ($hFlash, &quot;${MySWF}&quot;)'&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;Function Leave&lt;BR&gt;&amp;nbsp; System::Call '$PLUGINSDIR\FlashLib::FlashLibFree(i $hFlash)'&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;Function .onGUIEnd&lt;BR&gt;&amp;nbsp; System::Call '$PLUGINSDIR\FlashLib::FlashLibFree(i $hFlash)'&lt;BR&gt;&amp;nbsp; System::Free&lt;BR&gt;&amp;nbsp; ;由于FlashLib插件并不是原生的NSIS插件, 因此最后的释放函数可能并不适用&lt;BR&gt;&amp;nbsp; ;需要将文件设置为重启删除, 避免临时插件残留&lt;BR&gt;&amp;nbsp; Delete /REBOOTOK &quot;$PLUGINSDIR\FlashLib.dll&quot;&lt;BR&gt;&amp;nbsp; RMDIR /REBOOTOK &quot;$PLUGINSDIR&quot;&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;; -------------- Flash 运行结束 --------------&lt;/P&gt;
&lt;P&gt;Section -Setup&lt;BR&gt;&amp;nbsp; ;修改ufhis.ini文件&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK zg_ybmzzh jyxyy1&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK zg_ybmzmm&amp;nbsp;***&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK zg_ybzyzh jyxyy2&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK zg_ybzymm&amp;nbsp;***&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK zg_hospitalid 25&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK clientip 192.168.XXX.XXX&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK jm_ybmzzh jyxyy1&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK jm_ybmzmm&amp;nbsp;***&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK jm_ybzyzh jyxyy2&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK jm_ybzymm&amp;nbsp;***&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini YBJK jm_hospitalid 32&lt;BR&gt;&amp;nbsp; WriteINIStr $WINDIR\ufhis.ini LICENSE LICENSED dfd9759c0ac5f12e7a57f37dbf56fbf9&lt;BR&gt;&amp;nbsp; ;删除注册表Internet Mobile键&lt;BR&gt;&amp;nbsp; DeleteRegKey HKLM &quot;SOFTWARE\Microsoft\Internet Mobile&quot;&lt;BR&gt;&amp;nbsp; ;在开始菜单程序组下建立一名为&quot;医保农合接口&quot;的目录。&lt;BR&gt;&amp;nbsp; CreateDirectory &quot;$SMPROGRAMS\医保农合接口&quot;&lt;BR&gt;&amp;nbsp; SetOverwrite on&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;门诊挂号与划价收费&quot; SEC01&lt;BR&gt;&amp;nbsp; SetOutPath &quot;$INSTDIR\HRP\Economic\OutPatient\&quot;&lt;BR&gt;&amp;nbsp; File /r &quot;D:\UFSoft_xyy\HRP\Economic\OutPatient\*.*&quot;&lt;BR&gt;&amp;nbsp; ;在开始菜单目录下建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$SMPROGRAMS\医保农合接口\门诊挂号.lnk&quot; &quot;$INSTDIR\HRP\Economic\OutPatient\mzgh.exe&quot;&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$SMPROGRAMS\医保农合接口\门诊划价收费.lnk&quot; &quot;$INSTDIR\HRP\Economic\OutPatient\mzhf.exe&quot;&lt;BR&gt;&amp;nbsp; ;在桌面上建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$DESKTOP\门诊挂号.lnk&quot; &quot;$INSTDIR\HRP\Economic\OutPatient\mzgh.exe&quot;&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$DESKTOP\门诊划价收费.lnk&quot; &quot;$INSTDIR\HRP\Economic\OutPatient\mzhf.exe&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;住院登记与出院结算&quot; SEC02&lt;BR&gt;&amp;nbsp; SetOutPath &quot;$INSTDIR\HRP\Economic\InPatient\&quot;&lt;BR&gt;&amp;nbsp; File /r &quot;D:\UFSoft_xyy\HRP\Economic\InPatient\*.*&quot;&lt;BR&gt;&amp;nbsp; ;在开始菜单目录下建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$SMPROGRAMS\医保农合接口\住院登记与出院结算.lnk&quot; &quot;$INSTDIR\HRP\Economic\InPatient\djcy.exe&quot;&lt;BR&gt;&amp;nbsp; ;在桌面上建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$DESKTOP\住院登记与出院结算.lnk&quot; &quot;$INSTDIR\HRP\Economic\InPatient\djcy.exe&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;住院护士站&quot; SEC03&lt;BR&gt;&amp;nbsp; SetOutPath &quot;$INSTDIR\HRP\Clinic\&quot;&lt;BR&gt;&amp;nbsp; File /r &quot;D:\UFSoft_xyy\HRP\Clinic\*.*&quot;&lt;BR&gt;&amp;nbsp; ;在开始菜单目录下建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$SMPROGRAMS\医保农合接口\住院护士站.lnk&quot; &quot;$INSTDIR\HRP\Clinic\zyhs.exe&quot;&lt;BR&gt;&amp;nbsp; ;在桌面上建立快捷方式。&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$DESKTOP\住院护士站.lnk&quot; &quot;$INSTDIR\HRP\Clinic\zyhs.exe&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;医保BDE驱动&quot; SEC04&lt;BR&gt;&amp;nbsp; SetOutPath &quot;$INSTDIR\HRP\Driver\&quot;&lt;BR&gt;&amp;nbsp; File &quot;D:\UFSoft_xyy\HRP\Driver\bde_setup.exe&quot;&lt;BR&gt;&amp;nbsp; ;立即执行，并等待执行结果。&lt;BR&gt;&amp;nbsp; ExecWait '&quot;$INSTDIR\HRP\Driver\bde_setup.exe&quot;'&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section &quot;医保读卡器驱动&quot; SEC05&lt;BR&gt;&amp;nbsp; SetOutPath &quot;$INSTDIR\HRP\Driver\&quot;&lt;BR&gt;&amp;nbsp; File &quot;D:\UFSoft_xyy\HRP\Driver\card_reader.exe&quot;&lt;BR&gt;&amp;nbsp; ;立即执行，并等待执行结果。&lt;BR&gt;&amp;nbsp; ExecWait '&quot;$INSTDIR\HRP\Driver\card_reader.exe&quot;'&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section -AdditionalIcons&lt;BR&gt;&amp;nbsp; CreateShortCut &quot;$SMPROGRAMS\医保农合接口\Uninstall.lnk&quot; &quot;$INSTDIR\uninst.exe&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;Section -Post&lt;BR&gt;&amp;nbsp; WriteUninstaller &quot;$INSTDIR\uninst.exe&quot;&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;#-- 根据 NSIS 脚本编辑规则，所有 Function 区段必须放置在 Section 区段之后编写，以避免安装程序出现未可预知的问题。--#&lt;/P&gt;
&lt;P&gt;; 区段组件描述&lt;BR&gt;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN&lt;BR&gt;&amp;nbsp; !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} &quot;&quot;&lt;BR&gt;&amp;nbsp; !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} &quot;&quot;&lt;BR&gt;&amp;nbsp; !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} &quot;&quot;&lt;BR&gt;&amp;nbsp; !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} &quot;&quot;&lt;BR&gt;&amp;nbsp; !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} &quot;&quot;&lt;BR&gt;!insertmacro MUI_FUNCTION_DESCRIPTION_END&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;/******************************&lt;BR&gt;&amp;nbsp;*&amp;nbsp; 以下是安装程序的卸载部分&amp;nbsp; *&lt;BR&gt;&amp;nbsp;******************************/&lt;/P&gt;
&lt;P&gt;Section Uninstall&lt;BR&gt;&amp;nbsp; ;删除卸载文件。&lt;BR&gt;&amp;nbsp; Delete &quot;$INSTDIR\uninst.exe&quot;&lt;BR&gt;&amp;nbsp; ;删除桌面快捷方式。&lt;BR&gt;&amp;nbsp; Delete &quot;$DESKTOP\门诊挂号.lnk&quot;&lt;BR&gt;&amp;nbsp; Delete &quot;$DESKTOP\门诊划价收费.lnk&quot;&lt;BR&gt;&amp;nbsp; Delete &quot;$DESKTOP\住院登记与出院结算.lnk&quot;&lt;BR&gt;&amp;nbsp; Delete &quot;$DESKTOP\住院护士站.lnk&quot;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ;删除开始菜单目录。&lt;BR&gt;&amp;nbsp; RMDir /r &quot;$SMPROGRAMS\医保农合接口&quot;&lt;BR&gt;&amp;nbsp; ;删除安装组件的文件夹。&lt;BR&gt;&amp;nbsp; RMDir /r &quot;$INSTDIR\HRP\Clinic&quot;&lt;BR&gt;&amp;nbsp; RMDir /r &quot;$INSTDIR\HRP\Driver&quot;&lt;BR&gt;&amp;nbsp; RMDir /r &quot;$INSTDIR\HRP\Economic&quot;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; SetAutoClose true&lt;BR&gt;SectionEnd&lt;/P&gt;
&lt;P&gt;#-- 根据 NSIS 脚本编辑规则，所有 Function 区段必须放置在 Section 区段之后编写，以避免安装程序出现未可预知的问题。--#&lt;/P&gt;
&lt;P&gt;Function un.onInit&lt;BR&gt;&amp;nbsp; MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 &quot;您确实要完全移除 $(^Name) 所有的组件？&quot; IDYES +2&lt;BR&gt;&amp;nbsp; Abort&lt;BR&gt;FunctionEnd&lt;/P&gt;
&lt;P&gt;Function un.onUninstSuccess&lt;BR&gt;&amp;nbsp; HideWindow&lt;BR&gt;&amp;nbsp; MessageBox MB_ICONINFORMATION|MB_OK &quot;$(^Name) 已成功地从您的计算机移除。&quot;&lt;BR&gt;FunctionEnd&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]善用补丁软件的智能定位功能</title>
           <link>http://www.jdxz.com//softinfo/4788.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2010-1-13 9:25:21</pubDate>
           <comments></comments>
           <description>　通常汉化人制作补丁的时候，一般都先自定义了原版文件的安装目录，如果用户更改了原始的安装目录，那么汉化过程中就必须手工确定原版软件的真实安装目录。能不能让补丁智能的判断原版软件的真实路径呢？答案是肯定的。目前的补丁程序中Patch maker 1.2、CoCo Patch、FS Patch等都具备了利用注册表信息判断软件实际安装路径的功能。&lt;BR&gt;&lt;BR&gt;　　全文使用的研究对象：&lt;BR&gt;　　试验对象：Singularity Millennium 5.1(简称sing)&lt;BR&gt;　　注册表键值：HKEY_LOCAL_MACHINE\Software\WinAbility\Singularity\Setup,&lt;BR&gt;　　Home=C:\Program Files\WinAbility\Singularity Millennium&lt;BR&gt;&lt;BR&gt;　　Patch maker 1.2的注册表定位&lt;BR&gt;　　在pm 1.2中选择&quot;向导选项&quot;标签，右侧排列有&quot;安装目录&quot;的相关选择，最上面的是&quot;默认值&quot;，这个就是大家最常使用的目录设置栏；下面分别有两个&quot;可选项&quot;：&quot;从注册表获取&quot;、&quot;从.ini文件获取&quot;。&lt;BR&gt;&lt;BR&gt;　　针对&quot;从注册表获取&quot;分别设定三种实验方法&lt;BR&gt;　　1、只设置&quot;默认值&quot;内容(C:\Program Files\WinAbility\Singularity Millennium)；&lt;BR&gt;　　2、只设置&quot;从注册表获取&quot;内容；&lt;BR&gt;　　3、同时设置&quot;默认值&quot;+&quot;从注册表获取&quot;；&lt;BR&gt;&lt;BR&gt;　　结果：&lt;BR&gt;　　1、无论sing装在那个目录，都只显示默认设定的路径，如果安装在其他目录，补丁程序判断目录无效，需要手工定位。如果没有安装原版，情况相同。&lt;BR&gt;　　2、无论sing安装在什么目录，都能自动显示正确的路径，如果没有安装原版，目录栏留空，强行执行将提示错误(补丁程序在当前盘符如E:\下搜索，提示文件不存在)；&lt;BR&gt;　　3、无论sing安装在什么目录，都能自动显示正确的路径，如果没有安装原版，目录栏显示设定的&quot;默认值&quot;，强行执行判断目录无效；&lt;BR&gt;　　三种方法所生成的大小都是127,xxxKB，相差不大。&lt;BR&gt;&lt;BR&gt;　　结论：&lt;BR&gt;　　推荐使用第二种方法，在制作补丁时，在&quot;向导文字&quot;/&quot;目录&quot;下面添加文字如：&quot;★★如果目录栏空白，表明原版软件没有安装，或者没有使用常规的安装方法。&quot;，这样既可以避免不必要的汉化错误，同时可以提醒用户注意原版的按装正确性，相应的也减少由于用户不了解原版安装要求最后却将汉化不正确的结果怪罪到汉化人身上的几率和投诉。&lt;BR&gt;&lt;BR&gt;　　pm 1.2中注册表信息的具体设置：&lt;BR&gt;　　原始的信息是：HKEY_LOCAL_MACHINE\Software\WinAbility\Singularity\Setup，子键值为home(Home中包含实际路径)。&lt;BR&gt;　　在&quot;根键值&quot;下拉菜单选择&quot;HKEY_LOCAL_MACHINE&quot;--在&quot;键值&quot;中输入&quot;Software\WinAbility\Singularity\Setup&quot;(注意斜杠)--在&quot;子键值&quot;中填写home，即可。&lt;BR&gt;&lt;BR&gt;　　关于Funduc Software Patch的注册表定位&lt;BR&gt;　　在Fspatch制作界面的右侧，&quot;选项&quot;按钮进入相关设置：&quot;安装路径&quot;用于设定默认的原版安装路径；&quot;注册表指定路径&quot;用来确定软件的注册表键值。&lt;BR&gt;&lt;BR&gt;　　1、使用默认&quot;安装路径&quot;；&lt;BR&gt;　　2、使用&quot;注册表指定路径&quot;；&lt;BR&gt;　　3、&quot;安装路径&quot;+&quot;注册表指定路径&quot;；&lt;BR&gt;&lt;BR&gt;　　结果：&lt;BR&gt;　　1、原版正常安装可以识别路径，并提示发现程序请求确认，确认后随即开始汉化。原版安装在其他目录或者没有安装，显示当前所在路径，不作任何提示；需手工定位目录。&lt;BR&gt;　　2、无论安装在哪里都可以识别，随即正常进行汉化；&lt;BR&gt;　　3、无论安装在哪里都可以识别，随即正常进行汉化；&lt;BR&gt;&lt;BR&gt;　　结论：&lt;BR&gt;　　推荐使用方法2。&lt;BR&gt;　　注册表信息的填写格式如：HKEY_LOCAL_MACHINE\Software\WinAbility\Singularity\Setup\home，需完整填写。&lt;BR&gt;　　注意：必须在&quot;选项&quot;中选择&quot;Windows 95/NT[32位]风格补丁&quot;才能实现注册表定位功能。&lt;BR&gt;&lt;BR&gt;　　CoCo Patch的注册表定位&lt;BR&gt;　　CoCo Patch的定位方式最为丰富，因此不作对比试验，单纯讲解有关注册表定位的操作步骤。&lt;BR&gt;　　首先在新建的方案中，第一个文件决定总的目录定位，其他的一般选&quot;之前目录值&quot;(多重目录升级的不在此列)。选中第一个文件，右侧&quot;目录&quot;下拉菜单选择&quot;注册表键值&quot;，随之下面出现有关的栏目：首先是&quot;主键值&quot;，这里CoCo Patch使用的是缩写，&quot;HKEY_LOCAL_MACHINE&quot;对应的是选择&quot;HKLM&quot;(其他类推)；&quot;副键值&quot;中填入&quot;Software\WinAbility\Singularity\Setup&quot;(注意斜杠)，&quot;键名&quot;中填写&quot;Home&quot;，即可。&lt;BR&gt;&lt;BR&gt;　　实际汉化中，补丁在显示完相关信息后，随即自动确认正确的原版目录并马上开始进行升级。(没有任何提示，可以说是智能，也可以说安全性不足)&lt;BR&gt;&lt;BR&gt;　　通过以上补丁工具的测试，最理想的方案是选择Patch Maker，并使用第二种方法。除了功能易于实现，还因为该软件允许制作者提供更多的信息提示给最终用户，具有人性化的特点。&lt;BR&gt;&lt;BR&gt;　　关于原版软件安装信息在注册表中的提取：&lt;BR&gt;　　由于对注册表不算太熟悉，以下内容只是抛砖引玉。&lt;BR&gt;　　1、HKEY_LOCAL_MACHINE\Software\，通常的软件都在在这里建立自己的键值，一般是逐级建立不同的键值，比如WinAbility\Singularity\Setup，就有三重级别，Home属于setup下面的子键；由于各个软件情况不同，这里查到的键值不一定就包含安装路径，具体的子键值需自己判断。&lt;BR&gt;　　2、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths，很多软件都会在这里为主程序建立键值。比如ACDSee，在HKEY_LOCAL_MACHINE\Software\中有键值，但没有指定ACDSee.exe的路径，但是在这里专门为ACDSee.exe建立键值指定路径。类似的软件还有Opera、WinZip等等，相当多的软件会在这里为主程序指定路径。所以，这里是重点盘查对象。&lt;BR&gt;&lt;BR&gt;　　如何快速获取完整键值名称：&lt;BR&gt;　　启动regedit，找到有关内容(此处为WinAbility\Singularity\Setup)，鼠标停在键值上如&quot;Setup&quot;，右键菜单选&quot;复制键名&quot;，剪贴板中已经包含&quot;HKEY_LOCAL_MACHINE\Software\WinAbility\Singularity\Setup&quot;。&lt;BR&gt;&lt;BR&gt;　　重点：&lt;BR&gt;　　实际运用中，关键是在注册表中判断出含有软件安装路径的键值，这是第一个关键所在。不同软件有自己不同的设置，请具体问题具体分析。&lt;BR&gt;　　第二个重点是，不同的补丁软件有关注册表信息的填写格式不同，需区别对待；上面已经针对性地给出具体的填写格式，如果有新的软件请自行试验来作判断。&lt;BR&gt;　　(简单实验方法：以上述软件为例，将&quot;home&quot;中的路径稍作修改，看看生成的补丁是否随之反映出有关修改，就知道填写的格式是否正确。)&lt;BR&gt;&lt;BR&gt;　　在实际生活中，部分用户贯彻&quot;NEXT再NEXT，继续再继续&quot;的所谓软件安装&quot;指南&quot;，对软件的安装路径不甚了了；然后部分&quot;指南&quot;又提到：系统软件装C盘，应用软件装D盘，游戏装E盘！安装目录用户倒是会自己更改了，但是改完后又未必记得住，找的回。另外，在汉化人方面，不少人愿意费心思在压缩包中详细说明如何进行汉化升级，但是往往实际用户未必会懂，或者未必会看，结果反而可能惹来投诉，哎，红日不照我精诚！与其如此，不妨将心思花多一点在补丁制作上面，简便汉化用户操作程序，保证汉化正确执行，使补丁更加智能化；既方便用户，也减少投诉，一劳永逸，何乐不为。&lt;BR&gt;&lt;BR&gt;　　既然大家都承认汉化是一件利人的事情，因此我们制作补丁的时候，不妨就将利人的精神贯彻到底。&lt;BR&gt;&lt;BR&gt;附录：&lt;BR&gt;　　辅助判断功能：&lt;BR&gt;　　实际汉化升级中，除了需要定位目录，为了保证汉化的准确性，补丁制作人还希望判断该目录是否包含正确的升级对象。因此，还需要判断升级对象的功能来保证正确汉化。&lt;BR&gt;　　这里，就谈到主程序判断功能。以Sing Me 5.1为例，需要重点汉化的主程序是sing.exe，只要该程序存在且正确，即使其他程序不存在，忽略掉仍能保证汉化后的基本运行。需要判断的因素有：程序是否存在；版本或大小是否正确。&lt;BR&gt;　　既判断存在也判断版本：Patch Maker 1.2；&lt;BR&gt;　　只判断存在：PatchWise Maker(关子)、FS Patch；&lt;BR&gt;　　上面所特指的是允许指定主程序进行判断的补丁工具。WinPatch和大部分的单个文件补丁工具都可以判断存在或大小，但是WinPatch不能指定主程序，一旦原版安装时用户选择了自定义安装而导致部分要汉化的文件缺失时，或者原版属于升级安装，部分文件保留旧版文件，WinPatch只要发现有一个文件对不上，就只会作一件事情——什么都不作！至于其他的单个文件补丁工具不在本文讨论之列。&lt;BR&gt;&lt;BR&gt;　　Patch Maker 1.2的操作：&lt;BR&gt;　　假设确定Sing.exe为主程序判断对象，在&quot;文件&quot;标签左侧列表中单选该程序，右下方&quot;如果尚未安装&quot;选&quot;致命错误&quot;；&quot;如果版本未知&quot;选&quot;致命错误&quot;。其他需要汉化的程序可根据情况，可以选择&quot;忽略&quot;。汉化过程中，一旦sing.exe不存在或者版本有差异，整个安装程序终止。如果sing.exe判断正确，另外的某个程序有误，如果选的是&quot;忽略&quot;，则其他程序继续被汉化，只留下该程序被忽略。&lt;BR&gt;　　PatchWise Maker的操作：&lt;BR&gt;　　需在Update.ini中填写FileName=sing.exe，否则汉化程序无法进行。但是不判断版本，只要存在即可汉化。&lt;BR&gt;　　FS Patch：在&quot;选项&quot;/&quot;指定文件&quot;中填写sing.exe，但是不会影响最终的运行。&lt;BR&gt;</description>
       </item>
       <item>
           <title>[安装制作]程序的安装和部署</title>
           <link>http://www.jdxz.com//softinfo/2268.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2009-4-24 8:08:08</pubDate>
           <comments></comments>
           <description>&lt;P&gt;&lt;FONT size=3&gt;摘 要：本讲先来介绍安装和部署前的准备，然后用向导创建一个安装和部署项目，并修改项目的属性，最后讨论如何使用自己的标题图像、添加“序列号”对话框及生成程序菜单项和桌面图标。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Times New Roman&quot;&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;目录&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;安装和部署前的准备&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;创建一个安装和部署的项目&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;生成和测试&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;修改项目属性&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;使用自己的标题图像&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;添加“序列号”验证对话框&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;生成程序菜单项和桌面图标&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;结语&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Times New Roman&quot; size=3&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;安装和部署前的准备&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;一旦应用程序项目开发好了之后，就要创建一个安装程序供用户进行安装。早期的安装程序大多数是使用InstallShield来制作的，InstallShield一个最大的特点是可以使用其内嵌的脚本语言InstallScript来定制自己的安装过程和安装界面。不过，现在我们还有一个更简便的选择，那就是使用Visual Studio .NET来创建程序安装和部署项目。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;在将程序发布之前，我们需要将应用程序项目生成进行重新配置，即将原来默认的Debug(调试)版本变成了Release(发布)版本。具体步骤如下：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)启动Visual Studio .NET，打开上一讲的单文档应用程序项目Viewer。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)打开“生成”菜单，单击“配置管理器”，弹出对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)在“活动的解决方案配置”中选择“Release”，结果如图1所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图1&amp;nbsp; “配置管理器”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)单击“关闭”按钮。打开“生成”菜单，单击“生成解决方案”。生成完后，关闭该解决方案。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;需要说明的是，在用MFC应用程序向导创建的项目中，可以有Win32 Debug和Win32 Release两个版本。这两个版本的区别是：Debug版本的运行程序有相应的调试信息代码，而Release版本的运行程序则没有，但Release版本的运行程序经过代码的优化，其程序的运行速度被最大加速。因此一般来说，当用户在将开发的应用程序发布给用户之前，应将项目调试后将其编译成Win32 Release版本。编译和生成后的有关文件被放置在项目名文件夹下的Release子文件夹中。对于Debug版本，其编译和生成后的有关文件被放置在Debug子文件夹中。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;创建一个安装和部署的项目&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Visual Studio.NET不仅提供了创建基于Windows 或基于Web的应用程序和组件的安装程序的工具，也提供了创建用于下载的.Cab 文件的工具。与InstallShield不同的是，Visual Studio.NET使用Microsoft Windows Installer来提供程序安装和配置的功能。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Visual Studio.NET为用户安装和部署项目提供四种类型的模板：合并模块项目、安装项目、Web 安装项目和 Cab 项目。此外还提供了两个安装程序向导，可帮助我们完成创建部署项目的过程。下面我们使用安装向导来创建一个安装项目。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;打开“文件”菜单，选择“新建”-&amp;gt;“项目”，弹出“新建项目”对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;单击左侧的项目类型“安装和部署项目”，选择右侧的“安装向导”模板，输入项目名称“ViewerSetup”，指定一个项目位置，如图2所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图2&amp;nbsp; “新建项目”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;单击“确定”按钮，出现如图3所示的对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图3 &amp;nbsp;向导“第1步”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;单击“下一步”按钮，出现如图4所示的对话框。这里，可以选择安装项目类型以及重新发布的打包类型。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图4&amp;nbsp; 向导“第2步”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;保留默认的选项，单击“下一步”按钮，出现向导“第3步”对话框。单击“添加”按钮，在弹出的“添加文件”对话框中，将前面的Viewer应用程序可执行文件添加进来，结果如图5所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图5&amp;nbsp; 向导“第3步”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;单击“下一步”按钮，出现如图6所示的对话框，显示出我们在前面几个步骤中作出的选择内容。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图6&amp;nbsp; 向导“第4步”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(7)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;单击“完成”按钮，系统开始创建。需要说明的是，单击“上一步”按钮可对前面的操作进行修改。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(8)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;打开“项目”，选择“添加”-&amp;gt;“合并模块”，选定用于MFC应用程序本地化支持的两个模块，一个是MFC_Loc_FE.msm(东南亚地方)和VC_MFC.msm(MFC的支持)，单击“打开”按钮。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;生成和测试&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)打开“生成”菜单，单击“生成解决方案”，系统就会在指定项目位置下的“ViewerSetup\Debug”中为该安装项目生成一个ViewerSetup.msi安装文件。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)在解决方案资源管理器中，右击顶层节点“ViewerSetup”，从弹出的快捷菜单中单击“安装”，启动Windows Installer，进行应用程序的安装过程。开始出现的是安装“欢迎”对话框，如图7所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图7&amp;nbsp; “欢迎”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)单击“下一步”按钮，进入“选择安装文件夹”对话框，如图8所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图8&amp;nbsp; “选择安装文件夹”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)单击“下一步”按钮，进入“确认安装”对话框，如图9所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图9&amp;nbsp; “确认安装”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)单击“下一步”按钮，系统开始安装，并显示安装进度，最后显示安装完成对话框，如图10所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图10&amp;nbsp; “安装完成”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)单击“关闭”按钮，退出安装。这就是ViewerSetup默认的安装过程。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;修改项目属性&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)在解决方案资源管理器中，单击顶层目录的“ViewerSetup”。在属性窗口中出现如图11所示的属性。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图11&amp;nbsp; 项目属性&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;具体属性含义可参见MSDN中的说明，需要注意的是：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;为保证UpgradeCode、PackageCode和ProductCode三种属性值的唯一性，最好保留其默认值。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;l&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;在Windows资源管理器中选定某安装程序文件(.msi)，右击鼠标，从弹出的快捷菜单中选择“属性”命令，则Author、Description、Keywords和Subject等属性显示在其属性对话框的“摘要”标签页上。而在应用程序安装后，属性Author、Description、Manufacturer、ManufacturerUrl、SupportPhone和SupportUrl显示在“支持信息”对话框中，如图12所示，该内容可从系统的“添加/删除程序”对话框中相应程序的“查看支持信息”得到。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图12&amp;nbsp; “支持信息”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)在属性窗口中，将Author属性内容改为“丁有和”。Author用来指定应用程序或组件的作者名或联系人。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)将Manufacturer属性内容改为“计算机编程维护与技巧杂志社”。Manufacturer用来指定应用程序或组件的开发公司或发行商。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)将ManufacturerUrl属性内容改为“www.comprg.com.cn”，ManufacturerUrl用来指定Manufacturer的网址。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)将ProductName属性内容改为“ 文本浏览器 ”(注意文本前后要留有空格)。ProductName用来指定在目标计算机上安装应用程序或组件时用于描述该应用程序或组件的公共名称。默认为部署项目的名称。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)将Subject属性内容设为“文本浏览器”。Subject用来指定在目标计算机上安装应用程序或组件时用于描述该应用程序或组件的其他信息。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(7)将Title属性内容改为“文本浏览器”。Title用来指定安装程序的标题。默认情况下，Title属性与部署项目的名称相同。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(8)右击解决方案管理器顶层目录ViewerSetup，从弹出的快捷菜单中选择“重命名”，键入“文本浏览器安装”后按Enter键。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(9)打开“生成”菜单，单击“重新生成解决方案”。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(10)&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=3&gt;打开“项目”菜单，单击“安装”，看看出现的界面的变化。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;使用自己的标题图像&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;“标题图像”是用来显示在安装对话框中的位于标题栏下方的图像，它是宽度为 500 像素、高度为 70 像素的位图。下面就来改变对话框中的安装标题图像。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)打开Windows中的“画图”工具，并将其图像大小设置为500 x 70。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)在最右侧添加一个用于产品标识的图像(自己构造)，结果如图13所示，将该位图保存到Banner.bmp文件中。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图13&amp;nbsp; 制作标题位图&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)在Visual Studio .NET中，打开“项目”菜单，选择“添加”-&amp;gt;“文件”，将刚才创建的Banner.bmp文件添加当前安装项目中。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)打开“视图”菜单，选择“编辑器”-&amp;gt;“用户界面”，在窗口中显示出“用户界面”编辑器，如图14所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图14 “用户界面”编辑器&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;在“用户界面”编辑器中，安装过程中所出现的对话框均在这里以“树视图”形式显示出来。用户界面分为“一般安装”和“管理员安装”两大类。“一般安装”用于最终用户运行安装程序时将显示的对话框，“管理员安装”部分用于系统管理员将安装程序上载到网络位置时将显示的对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)单击“欢迎使用”，将在属性窗口中出现这个对话框的属性，其中BannerBitmap属性用来指定对话框的标题图像的。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)在属性窗口中，单击BannerBitmap属性栏右侧的下拉按钮，从弹出的列表中选择“（浏览…）”，出现如图15所示的对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图15 “选择项目中的项”对话框&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(7)双击“应用程序文件夹”，出现前面添加的标题图像文件Banner.bmp，选中它，单击“确定”按钮。这样，该对话框的标题图像就设置好了。类似的，还可以为其他所有的对话框进行设置。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(8)重新生成并安装，结果出现的“欢迎使用”对话框如图16所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图16&amp;nbsp; 定制后的“欢迎使用”对话框&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Times New Roman&quot; size=3&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;添加“序列号”验证对话框&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;程序安装时往往需要序列号为限制非法安装，下面就来实现。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)在“用户界面”编辑器中，右击“安装”下的“启动”节点，从弹出的快捷菜单中选择“添加对话框”，出现如图17所示的对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图17&amp;nbsp; “添加对话框”&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)由于“序列号”是产品的一种客户信息，因此我们单击“客户信息”，然后单击“确定”按钮。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)在“用户界面”编辑器中，将“客户信息”节点拖放到“欢迎使用”与“安装文件夹”之间。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)在“客户信息”属性窗口中，将BannerBitmap属性修改为“Banner.bmp”。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)将SerialNumberTemplate属性修改成“&amp;lt;?????-?????&amp;gt;”。SerialNumberTemplate属性决定文本框在对话框中的显示方式，并确定是仅对序列号的格式进行验证，还是按照 Windows 安装程序算法对序列号进行验证。SerialNumberTemplate属性的有效可编辑字符可以是“#?%^&amp;lt;&amp;gt;”，其中#表示要求输入一个数字，该数字将不包括在验证算法中。%表示要求输入一个数字，该数字将包括在验证算法中。?表示要求输入一个字母数字字符，该字符将不包括在验证算法中。^表示要求输入一个大写字母或一个数字。&amp;lt;和&amp;gt;表示该字符左边或右边的所有字符在对话框中都不可见。 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)将ShowSerialNumber属性设置为True，结果如图18所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图18&amp;nbsp; 修改的“客户信息”属性&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(7)这样，重新生成安装后，出现如图19所示的“客户信息”对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;B&gt;图19&amp;nbsp; “客户信息”对话框&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;需要说明的是，若自己验证序列号，也就是说序列号等于某个字符串，则需要进行自定义操作。由于自定义操作需要更多的底层代码，因此这里不作讨论。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Times New Roman&quot; size=3&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;生成程序菜单项和桌面图标&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;在Windows中运行程序的最常用快捷方式是在程序中创建菜单项或在桌面中创建快捷图标。下面就来创建。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;1.&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/B&gt;&lt;B&gt;&lt;FONT size=3&gt;生成程序菜单项&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)在“文件系统”编辑器中，右击“用户的‘程序’菜单”，弹出快捷菜单，将鼠标指针指向菜单中的“添加”，弹出子菜单，单击子菜单中的“文件夹”。将该文件夹名称改为“文本浏览器”。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)单击“文本浏览器”，在右侧列表视图窗口处右击鼠标，弹出快捷菜单，单击“创建新的快捷方式”。弹出如前面的图15所示的“选择项目中的项”对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)在对话框中，双击“应用程序文件夹”，然后单击“Viewer.exe”，单击“确定”按钮。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)单击创建的快捷方式“Viewer.exe 的快捷方式”，在属性窗口中将Name属性改成“运行 文本浏览器”。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)在属性窗口中，单击Icon属性右则的下拉按钮，从中选择“（浏览…）”，在弹出的“图标”对话框中，单击“浏览”按钮，在“选择项目中的项”对话框中，选中“应用程序文件夹”后，单击右侧的“添加文件”，将Viewer项目文件夹中的Viewer.ico文件添加。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)单击Viewer.ico，再单击“确定”按钮。此时“图标”对话框如图20所示。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图20&amp;nbsp; “图标”对话框&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(7)单击“当前图标”中的图标，然后单击“确定”按钮，这里属性窗口中的属性变成如图21所示的内容。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图21&amp;nbsp; 修改后的程序快捷方式属性&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;需要说明的是：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Arguments属性用来为所选的自定义操作指定命令行参数。仅适用于.exe自定义操作。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;ShowCmd属性用来为通过快捷方式启动的应用程序指定窗口状态(正常vsdscNormal、最小化vsdscMinimized或最大化vsdscMaximized)。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Target属性用来指定目标计算机上由快捷方式启动的应用程序的路径和文件名。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Transitive属性用来确定在目标计算机上安装或重新安装应用程序或组件时，安装程序是否重新计算选定的文件夹、文件、注册表键或注册表值的Condition属性。此属性是一项高级功能，应谨慎使用，一般使用其默认值False。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;WorkingFolder属性用来指定文件夹的名称，在目标计算机上的该文件夹中安装选定快捷方式的目标应用程序。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(8)在左侧单击“文本浏览器”，将其AlwaysCreate属性设为True。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(9)重新生成安装后，在“开始”菜单中的“所有程序中”中出现如图22所示的程序菜单。&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;B&gt;&lt;FONT size=3&gt;图22&amp;nbsp; 安装后的程序菜单项&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=3&gt;2.&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/B&gt;&lt;B&gt;&lt;FONT size=3&gt;创建桌面图标&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(1)在“文件系统”编辑器中，单击“用户桌面”，将其AlwaysCreate属性设为True。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(2)在编辑器的右侧窗口处，右击鼠标，从弹出快捷菜单中选择“创建新的快捷方式”。弹出如前面的图15所示的“选择项目中的项”对话框。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(3)在对话框中，双击“应用程序文件夹”，然后单击“Viewer.exe”，单击“确定”按钮。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(4)单击创建的快捷方式“Viewer.exe 的快捷方式”，在属性窗口中将Name属性改成“文本浏览器”。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(5)单击“文本浏览器”。在属性窗口中，将Icon属性设为Viewer.ico文件中的图标。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;(6)重新生成并安装。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=宋体 size=3&gt;结语&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;本讲重点讨论了程序的安装和部署，一旦安装项目制作好以后就可以在项目文件夹下Debug中的文件制成安装盘。在本讲座中，我们领略了用Visual C++ .NET进行应用程序开发的一般过程，从中可以发现其功能的强大，当然要想更加深入地使用该工具，还应在实践中不断磨练。不过，这里还有强调的是，一定要用Visual C++ .NET做一个项目。 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]为你的电脑系统清除淤塞的垃圾</title>
           <link>http://www.jdxz.com//softinfo/1424.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-18 0:39:11</pubDate>
           <comments></comments>
           <description>&lt;SPAN class=tpc_content&gt;为你的电脑系统清除淤塞的垃圾！轻松流畅上网！&lt;BR&gt;&lt;BR&gt;你是否注意到你的电脑系统磁盘的可用空间正在一天天在减少呢？是不是像老去的猴王一样动作一天比一天迟缓呢？没错！在Windows在安装和使用过程中都会产生相当多的LJ文件，包括临时文件（如：*.tmp、*._mp）日志文件（*.log）、临时帮助文件（*.gid）、磁盘检查文件（*.chk）、临时备份文件（如：*.old、*.bak）以及其他临时文件。特别是如果一段时间不清理IE的临时文件夹“Temporary Internet Files”，其中的缓存文件有时会占用上百MB的磁盘空间。这些LJ文件不仅仅浪费了宝贵的磁盘空间，严重时还会使系统运行慢如蜗牛。这点相信你肯定忍受不了吧！所以应及时清理系统的LJ文件的淤塞，保持系统的“苗条”身材，轻松流畅上网！朋友来吧，现在就让我们一起来快速清除系统LJ吧！！&lt;BR&gt;&lt;BR&gt;新建一个记事本并输入以下的内容：&lt;BR&gt;@echo off&lt;BR&gt;echo 正在清除系统LJ文件，请稍等......&lt;BR&gt;del /f /s /q %systemdrive%\*.tmp&lt;BR&gt;del /f /s /q %systemdrive%\*._mp&lt;BR&gt;del /f /s /q %systemdrive%\*.log&lt;BR&gt;del /f /s /q %systemdrive%\*.gid&lt;BR&gt;del /f /s /q %systemdrive%\*.chk&lt;BR&gt;del /f /s /q %systemdrive%\*.old&lt;BR&gt;del /f /s /q %systemdrive%\recycled\*.*&lt;BR&gt;del /f /s /q %windir%\*.bak&lt;BR&gt;del /f /s /q %windir%\prefetch\*.*&lt;BR&gt;rd /s /q %windir%\temp &amp;amp; md %windir%\temp&lt;BR&gt;del /f /q %userprofile%\cookies\*.*&lt;BR&gt;del /f /q %userprofile%\recent\*.*&lt;BR&gt;del /f /s /q &quot;%userprofile%\Local Settings\Temporary Internet Files\*.*&quot;&lt;BR&gt;del /f /s /q &quot;%userprofile%\Local Settings\Temp\*.*&quot;&lt;BR&gt;del /f /s /q &quot;%userprofile%\recent\*.*&quot;&lt;BR&gt;echo 清除系统LJ完成！&lt;BR&gt;echo. &amp;amp; pause &lt;BR&gt;&lt;BR&gt;最后将它保存，然后更名为“清除系统LJ.bat”！ok！你的LJ清除器就这样制作成功了！&lt;BR&gt;以后只要双击运行该文件，当屏幕提示“清除系统LJ完成！就还你一个“苗条”的系统了！！到时候再看看你的电脑，是不是急速如飞呢？可别忘了回帖喔！&lt;/SPAN&gt;</description>
       </item>
       <item>
           <title>[安装制作]任何路径bat文件运行后自己删除自己的命令</title>
           <link>http://www.jdxz.com//softinfo/1423.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-17 23:47:16</pubDate>
           <comments></comments>
           <description>&lt;P&gt;后缀是bat的文件就是批处理文件，是一种文本文件。简单的说，它的作用就是自动的连续执行多条命令，批处理文件的内容就是一条一条的命令。&amp;nbsp;比如，在启动wps软件时，每次都必须执行&amp;nbsp;&lt;BR&gt;&lt;BR&gt;C:\&amp;gt;cd&amp;nbsp;wps&amp;nbsp;&lt;BR&gt;C:\WPS&amp;gt;spdos&amp;nbsp;&lt;BR&gt;C:\WPS&amp;gt;py&amp;nbsp;&lt;BR&gt;C:\WPS&amp;gt;wbx&amp;nbsp;&lt;BR&gt;C:\WPS&amp;gt;wps&amp;nbsp;&lt;BR&gt;&lt;BR&gt;如果每次用WPS之前都这样执行一次，您是不是觉得很麻烦呢？&amp;nbsp;&lt;BR&gt;&lt;BR&gt;如果有一个方法，只需编写一个批处理文件，就会自动执行刚才的所有命令，您想不想学呢？&amp;nbsp;&lt;BR&gt;&lt;BR&gt;当您看完此节，自己编写的第一个批处理文件顺利执行时，您一定会大吃一惊的。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;此外电脑每次启动时都会寻找autoexec.bat这条批处理文件，从而可执行一些每次开机都要执行的命令，如设置路径path、加载鼠标驱动mouse、磁盘加速smartdrv等，可以使您的电脑真正自动化。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;echo、@、call、pause、rem&amp;nbsp;是批处理文件最常用的几个命令，我们就从他们开始学起。&amp;nbsp;echo&amp;nbsp;表示显示此命令后的字符&amp;nbsp;&lt;BR&gt;echo&amp;nbsp;off&amp;nbsp;表示在此语句后所有运行的命令都不显示命令行本身&amp;nbsp;&lt;BR&gt;@&amp;nbsp;与echo&amp;nbsp;off相象，但它是加在其它命令行的最前面，表示运行时不显示命令行本身。&amp;nbsp;&lt;BR&gt;call&amp;nbsp;调用另一条批处理文件（如果直接调用别的批处理文件&amp;nbsp;，执行完那条文件后将无法执行当前文件后续命令）&amp;nbsp;&lt;BR&gt;pause&amp;nbsp;运行此句会暂停，显示Press&amp;nbsp;any&amp;nbsp;key&amp;nbsp;to&amp;nbsp;continue...&amp;nbsp;等待用户按任意键后继续&amp;nbsp;&lt;BR&gt;rem&amp;nbsp;表示此命令后的字符为解释行，不执行，只是给自己今后查找用的&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;例：用edit编辑a.bat文件，输入下列内容后存盘为c:\a.bat，执行该批处理文件后可实现：将根目录中所有文件写入&amp;nbsp;a.txt中，启动UCDOS，进入WPS等功能。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;批处理文件的内容为:&amp;nbsp;文件表示：&amp;nbsp;&lt;BR&gt;&lt;BR&gt;echo&amp;nbsp;off&amp;nbsp;不显示命令行&amp;nbsp;&lt;BR&gt;&lt;BR&gt;dir&amp;nbsp;c:\*.*&amp;nbsp;&amp;gt;a.txt&amp;nbsp;将c盘文件列表写入a.txt&amp;nbsp;&lt;BR&gt;&lt;BR&gt;call&amp;nbsp;c:\ucdos\ucdos.bat&amp;nbsp;调用ucdos&amp;nbsp;&lt;BR&gt;&lt;BR&gt;echo&amp;nbsp;你好&amp;nbsp;显示&quot;你好&quot;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;pause&amp;nbsp;暂停,等待按键继续&amp;nbsp;&lt;BR&gt;&lt;BR&gt;rem&amp;nbsp;使用wps&amp;nbsp;注释将使用wps&amp;nbsp;&lt;BR&gt;&lt;BR&gt;cd&amp;nbsp;ucdos&amp;nbsp;进入ucdos目录&amp;nbsp;&lt;BR&gt;&lt;BR&gt;wps&amp;nbsp;使用wps&amp;nbsp;&lt;BR&gt;&lt;BR&gt;批处理文件中还可以像C语言一样使用参数，这只需用到一个参数表示符%。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;%表示参数，参数是指在运行批处理文件时在文件名后加的字符串。变量可以从&amp;nbsp;%0到%9，%0表示文件名本身，字符串用%1到%9顺序表示。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;例如，C：根目录下一批处理文件名为f.bat，内容为&amp;nbsp;format&amp;nbsp;%1&amp;nbsp;&lt;BR&gt;&lt;BR&gt;则如果执行C:\&amp;gt;f&amp;nbsp;a:&amp;nbsp;则实际执行的是format&amp;nbsp;a:&amp;nbsp;&lt;BR&gt;&lt;BR&gt;又如C：根目录下一批处理文件的名为t.bat，内容为&amp;nbsp;type&amp;nbsp;%1&amp;nbsp;type&amp;nbsp;%2&amp;nbsp;&lt;BR&gt;&lt;BR&gt;那么运行C:\&amp;gt;t&amp;nbsp;a.txt&amp;nbsp;b.txt&amp;nbsp;将顺序地显示a.txt和b.txt文件的内容&amp;nbsp;&lt;BR&gt;&lt;BR&gt;if&amp;nbsp;goto&amp;nbsp;choice&amp;nbsp;for&amp;nbsp;是批处理文件中比较高级的命令，如果这几个你用得很熟练，你就是批处理文件的专家啦。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;if&amp;nbsp;表示将判断是否符合规定的条件，从而决定执行不同的命令。&amp;nbsp;有三种格式:&amp;nbsp;&lt;BR&gt;1、if&amp;nbsp;&quot;参数&quot;&amp;nbsp;==&amp;nbsp;&quot;字符串&quot;&amp;nbsp;待执行的命令&amp;nbsp;&lt;BR&gt;参数如果等于指定的字符串，则条件成立，运行命令，否则运行下一句。(注意是两个等号）&amp;nbsp;&lt;BR&gt;如if&amp;nbsp;&quot;%1&quot;==&quot;a&quot;&amp;nbsp;format&amp;nbsp;a:&amp;nbsp;&lt;BR&gt;&lt;BR&gt;2、if&amp;nbsp;exist&amp;nbsp;文件名&amp;nbsp;待执行的命令&amp;nbsp;&lt;BR&gt;如果有指定的文件，则条件成立，运行命令，否则运行下一句。如if&amp;nbsp;exist&amp;nbsp;config.sys&amp;nbsp;edit&amp;nbsp;config.sys&amp;nbsp;&lt;BR&gt;&lt;BR&gt;3、if&amp;nbsp;errorlevel&amp;nbsp;数字&amp;nbsp;待执行的命令&amp;nbsp;&lt;BR&gt;如果返回码等于指定的数字，则条件成立，运行命令，否则运行下一句。如if&amp;nbsp;errorlevel&amp;nbsp;2&amp;nbsp;goto&amp;nbsp;x2&amp;nbsp;DOS程序运行时都会返回一个数字给DOS，称为错误码errorlevel或称返回码&amp;nbsp;&lt;BR&gt;&lt;BR&gt;goto&amp;nbsp;批处理文件运行到这里将跳到goto&amp;nbsp;所指定的标号处，&amp;nbsp;一般与if配合使用。&amp;nbsp;如:&amp;nbsp;&lt;BR&gt;&lt;BR&gt;goto&amp;nbsp;end&amp;nbsp;&lt;BR&gt;&lt;BR&gt;:end&amp;nbsp;&lt;BR&gt;echo&amp;nbsp;this&amp;nbsp;is&amp;nbsp;the&amp;nbsp;end&amp;nbsp;&lt;BR&gt;&lt;BR&gt;标号用&amp;nbsp;:字符串&amp;nbsp;表示，标号所在行不被执行&amp;nbsp;&lt;BR&gt;&lt;BR&gt;choice&amp;nbsp;使用此命令可以让用户输入一个字符，从而运行不同的命令。使用时应该加/c:参数，c:后应写提示可输入的字符，之间无空格。它的返回码为1234……&amp;nbsp;&lt;BR&gt;&lt;BR&gt;如:&amp;nbsp;choice&amp;nbsp;/c:dme&amp;nbsp;defrag,mem,end&amp;nbsp;&lt;BR&gt;将显示&amp;nbsp;&lt;BR&gt;defrag,mem,end[D,M,E]?&amp;nbsp;&lt;BR&gt;&lt;BR&gt;例如，test.bat的内容如下:&amp;nbsp;&lt;BR&gt;@echo&amp;nbsp;off&amp;nbsp;&lt;BR&gt;choice&amp;nbsp;/c:dme&amp;nbsp;defrag,mem,end&amp;nbsp;&lt;BR&gt;if&amp;nbsp;errorlevel&amp;nbsp;3&amp;nbsp;goto&amp;nbsp;defrag&amp;nbsp;应先判断数值最高的错误码&amp;nbsp;&lt;BR&gt;if&amp;nbsp;errorlevel&amp;nbsp;2&amp;nbsp;goto&amp;nbsp;mem&amp;nbsp;&lt;BR&gt;if&amp;nbsp;errotlevel&amp;nbsp;1&amp;nbsp;goto&amp;nbsp;end&amp;nbsp;&lt;BR&gt;&lt;BR&gt;:defrag&amp;nbsp;&lt;BR&gt;c:\dos\defrag&amp;nbsp;&lt;BR&gt;goto&amp;nbsp;end&amp;nbsp;&lt;BR&gt;&lt;BR&gt;:mem&amp;nbsp;&lt;BR&gt;mem&amp;nbsp;&lt;BR&gt;goto&amp;nbsp;end&amp;nbsp;&lt;BR&gt;&lt;BR&gt;:end&amp;nbsp;&lt;BR&gt;echo&amp;nbsp;good&amp;nbsp;bye&amp;nbsp;&lt;BR&gt;&lt;BR&gt;此文件运行后，将显示&amp;nbsp;defrag,mem,end[D,M,E]?&amp;nbsp;用户可选择d&amp;nbsp;m&amp;nbsp;e&amp;nbsp;，然后if语句将作出判断，d表示执行标号为defrag的程序段，m表示执行标号为mem的程序段，e表示执行标号为end的程序段，每个程序段最后都以goto&amp;nbsp;end将程序跳到end标号处，然后程序将显示good&amp;nbsp;bye，文件结束。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;for&amp;nbsp;循环命令，只要条件符合，它将多次执行同一命令。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;格式FOR&amp;nbsp;[%%f]&amp;nbsp;in&amp;nbsp;(集合)&amp;nbsp;DO&amp;nbsp;[命令]&amp;nbsp;&lt;BR&gt;只要参数f在指定的集合内，则条件成立，执行命令&amp;nbsp;&lt;BR&gt;&lt;BR&gt;如果一条批处理文件中有一行:&amp;nbsp;&lt;BR&gt;for&amp;nbsp;%%c&amp;nbsp;in&amp;nbsp;(*.bat&amp;nbsp;*.txt)&amp;nbsp;do&amp;nbsp;type&amp;nbsp;%%c&amp;nbsp;&lt;BR&gt;含义是如果是以bat或txt结尾的文件，则显示文件的内容。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;autoexec.bat&amp;nbsp;&lt;BR&gt;&lt;BR&gt;DOS在启动会自动运行autoexec.bat这条文件，一般我们在里面装载每次必用的程序，如:&amp;nbsp;path(设置路径)、smartdrv(磁盘加速)、&amp;nbsp;mouse(鼠标启动)、mscdex(光驱连接)、&amp;nbsp;doskey(键盘管理)、set(设置环境变量)等。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;如果启动盘根目录中没有这个文件，电脑会让用户输入日期和时间。&amp;nbsp;&lt;BR&gt;&lt;BR&gt;例如，一个典型的autoexec.bat内容如下:&amp;nbsp;&lt;BR&gt;&lt;BR&gt;@echo&amp;nbsp;off&amp;nbsp;不显示命令行&amp;nbsp;&lt;BR&gt;&lt;BR&gt;prompt&amp;nbsp;$p$g&amp;nbsp;设置提示符前有目录提示&amp;nbsp;&lt;BR&gt;&lt;BR&gt;path&amp;nbsp;c:\dos;c:\;c:\windows;c:\ucdos;c:\tools&amp;nbsp;设置路径&amp;nbsp;&lt;BR&gt;&lt;BR&gt;lh&amp;nbsp;c:\dos\doskey.com&amp;nbsp;加载键盘管理&amp;nbsp;&lt;BR&gt;&lt;BR&gt;lh&amp;nbsp;c:\mouse\mouse.com&amp;nbsp;加载鼠标管理&amp;nbsp;&lt;BR&gt;&lt;BR&gt;lh&amp;nbsp;c:\dos\smartdrv.exe&amp;nbsp;加载磁盘加速管理&amp;nbsp;&lt;BR&gt;&lt;BR&gt;lh&amp;nbsp;c:\dos\mscdex&amp;nbsp;/S&amp;nbsp;/D:MSCD000&amp;nbsp;/M:12&amp;nbsp;/V&amp;nbsp;加载CD-ROM驱动&amp;nbsp;&lt;BR&gt;&lt;BR&gt;set&amp;nbsp;temp=c:\temp&amp;nbsp;设置临时目录&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;以外一种方式补充：&lt;/P&gt;
&lt;DIV class=t_msgfont id=message728642&gt;cmd下&lt;BR&gt;rd c:\boot /s/q&lt;BR&gt;&lt;BR&gt;删除c:\boot文件夹及里面所有文件,不经过确认.&lt;/DIV&gt;
&lt;P&gt;以外一种方式补充：&lt;BR&gt;&amp;nbsp;我想做个设置IE首页的批处理放到系统的开始菜单的启动项里,,让电脑开机进系统后自动运行一次,运行完后就这个批处理就自己删除,哪个高人能指点一下或写个出来啊?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;解决方法:&lt;BR&gt;&lt;BR&gt;在批处理文件最后添加一行&lt;BR&gt;&lt;BR&gt;del /f %0&lt;BR&gt;&lt;BR&gt;即可。&lt;BR&gt;&lt;BR&gt;如果该批处理文件有系统、隐藏、只读属性，可在del /f %0行前添加一行&lt;BR&gt;attrib -h -s -r %0&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;假如批处理名字 为 p.bat&lt;BR&gt;在最后面一句语句中加入 del p.bat&lt;BR&gt;即可，它是要以删除自己的。&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]常用软件的静默安装介绍</title>
           <link>http://www.jdxz.com//softinfo/1421.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-13 17:17:22</pubDate>
           <comments></comments>
           <description>&lt;P&gt;大部分软件，其安装都具备一定的智能性，换句话说，许多软件的安装都能采取全自动或半自动的方式进行。&lt;BR&gt;　　下面以不同的安装方式进行讨论：&lt;BR&gt;一、 Microsoft Windows Installer&lt;BR&gt;如果某个软件是用Windows Installer打包的，那你就应该能在文件夹中看到*.msi文件。&lt;BR&gt;这是最典型的特征，这些文件通常可以使用 /QB和 /QN参数进行自动安装。。&lt;BR&gt;/qb 会在窗口中显示一个基本的安装进程&lt;BR&gt;/qn 参数则不会显示任何窗口，直接在后台自动安装&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了阻止某些程序安装成功后自动重启动（例如Kerio Personal Firewall 4），你可以在 /qn 或者 /qb参数后使用REBOOT=Suppress标记，例如：&lt;BR&gt;如安装虚拟光驱 DaemonTools：msiexec /i dtools.msi /qb REBOOT=SUPPRESS&lt;BR&gt;二、 Windows 补丁包&lt;BR&gt;有两种情况，一种是类似IE增量补丁包的那种安装文件，要使之静默安装，只需要在执行文件后加上　/q:a /r:n　参数即可；一种是　Windows　常用的补丁文件，一般情况下加上 /U /N /Z 即可实现静默安装。&lt;BR&gt;(对于新的系统补丁，也可使用 /passive /norestart)。这通用大部分情况，但某些特定的补丁不能用此法进行静默安装。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;三、InstallShield&lt;BR&gt;a.要使用静默安装的方式安装用InstallShield技术打包的程序，首先要在现有的操作系统中创建一个setup.iss文件。&lt;BR&gt;在命令行窗口中使用 -R 参数（大小写敏感）运行安装程序。&lt;BR&gt;例如：Setup.exe -R&lt;BR&gt;b. 接着会显示常见的安装屏幕，并且询问你一些问题，例如要安装的目录等有一点是很重要的，在安装结束后你不能选择“立刻重启动计算机”的选项。如果你选了，在批处理文件中的其他命令就会因为计算机重启动而无法执行。&lt;BR&gt;c. 在安装程序运行完毕后，打开你的C:\Windows（或者C:\WINNT）目录,然后找到setup.iss文件，把这个文件和你将要静默安装的程序setup.exe保存在同一个目录中&lt;BR&gt;d. 用以下命令进行静默安装：setup.exe -s [-sms]&lt;BR&gt;&amp;nbsp;&lt;BR&gt;我怎么知道哪个程序是使用InstallShield技术打包的？&lt;BR&gt;&amp;nbsp;&amp;nbsp; 大部分这类程序的安装文件都可以被压缩软件解压缩，安装文件setup.exe的属性对话框中应该有“InstallShield (R) Setup Launcher”或者其他类似的字样。&lt;BR&gt;&amp;nbsp;&amp;nbsp; 最后，如果你在保存安装文件的文件夹中看到了一个setup.iss文件，那么毫无疑问这是用InstallShield打包了！&lt;BR&gt;四、InstallShield with MSI&lt;BR&gt;InstallShield with MSI 制作的安装文件，请使用类似：setup.exe /s /v&quot;/qb&quot; 来安装&lt;/P&gt;
&lt;P&gt;你的问题：&lt;BR&gt;都仔细看了,有些还是不太懂&lt;BR&gt;例如:DaemonTools：msiexec /i dtools.msi /qb REBOOT=SUPPRESS&lt;BR&gt;为什么要用 msiexec /i ?&lt;BR&gt;还有请问,你测试安装的时候是在虚拟机装还是直接在系统用检测安装装?&lt;BR&gt;答：msiexec是 Windows Installer的一部分。用来帮助Windows Installer package files (MSI)格式的安装文件。&lt;BR&gt;语法：msiexec /i &quot;文件完整路径&quot;&lt;BR&gt;更多Windows Installer参数参看&lt;BR&gt;&lt;A href=&quot;http://support.microsoft.com/default.aspx?scid=kb;en-us;314881&quot;&gt;&lt;FONT color=#4c87cb&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;314881&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;测试安装，我都试在虚拟机上做的。&lt;/P&gt;
&lt;P&gt;反正拿到一个安装程序，大家用各静默安装参数试试就知道了（[/s] [/S] [/silent [/noreboot]] [/verysilent [/sp-] [/norestart]] [/q] [/qn] [/qb] [REBOOT=SUPPRESS]&amp;nbsp; [/s /v/qn] [/q:a /r:n] [/u /n /z] [/quiet] [/SilentInstallNoSponsor] [/SilentInstall] [/s /qn] [/s /qd] [-s] [-q] 等）。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;常用软件的静默安装介绍&lt;BR&gt;蓝色旋风 发表于 2006-3-7 9:07:00&lt;BR&gt;无人值守安装光盘最有魅力的地方之一&lt;BR&gt;就是在安装过程中可以静默安装好预先设计集成的一些常用软件，安装结束以后软件就已经可以使用&lt;BR&gt;但是很多朋友发现每个软件以及系统补丁，它们的静默安装参数是不一样的&lt;BR&gt;在本文就和广大爱好者一起研究一下几种常见软件封包形式的静默安装方式&lt;BR&gt;如有遗漏和错误之处，请指出，大家互相交流！&lt;/P&gt;
&lt;P&gt;常用的软件封包形式主要有以下几个形式&lt;BR&gt;Inno Setup&lt;BR&gt;InstallShield&lt;BR&gt;NSIS&lt;BR&gt;Microsoft Windows Installer&lt;BR&gt;WISE&lt;/P&gt;
&lt;P&gt;QUOTE:&lt;/P&gt;
&lt;P&gt;一.Inno Setup&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;使用Inno技术制成的程序安装包可以使用/SILENT 和 /VERYSILENT参数进行静默安装&lt;BR&gt;我不知道这两个参数有什么分别，因为它们实现的功能看上去是一样的&lt;/P&gt;
&lt;P&gt;setup.exe /VERYSILENT&lt;/P&gt;
&lt;P&gt;你会看到一个对话框，询问你是否打算继续安装：&lt;/P&gt;
&lt;P&gt;我们可以通过使用一个参数跳过这个对话框：&lt;/P&gt;
&lt;P&gt;setup.exe /VERYSILENT /SP-&lt;/P&gt;
&lt;P&gt;有些利用Inno 技术做作的安装包会在程序安装完毕后自动运行所安装的程序，例如ISOBuster&lt;BR&gt;不过我们可以使用一个叫做Taskkill的系统自带工具杀死相关的进程。&lt;/P&gt;
&lt;P&gt;以下是一个可以用于批处理文件安装由Inno打包的软件的命令的示例：&lt;/P&gt;
&lt;P&gt;ECHO.&lt;BR&gt;ECHO 正在安装ISOBuster 1.4&lt;BR&gt;ECHO 请稍候...&lt;BR&gt;start /wait %systemdrive%\install\Applications\ISOBuster\IsoBuster14.exe /VERYSILENT /SP-&lt;BR&gt;ECHO.&lt;BR&gt;ECHO Killing ISOBuster.exe process&lt;BR&gt;taskkill.exe /F /IM isobuster.exe&lt;BR&gt;ECHO.&lt;/P&gt;
&lt;P&gt;我怎么知道哪个安装程序是用Inno 技术打包的？&lt;/P&gt;
&lt;P&gt;这种软件安装时第一个界面一般如下图所示&lt;BR&gt;在窗口标题栏左侧的图标上点击鼠标左键&lt;BR&gt;然后再探出菜单上点击“About Setup”也可以看见安装类型&lt;/P&gt;
&lt;P&gt;更多使用Inno技术打包的软件可用的参数可以在下面看到：&lt;BR&gt;E文好的朋友可以仔细研究研究&lt;BR&gt;With the Inno Setup Extentions in use the following command line switches become available:&lt;/P&gt;
&lt;P&gt;SP-&lt;BR&gt;Disables the This will install... Do you wish to continue? prompt at the beginning of Setup. Of course, this will have no&lt;/P&gt;
&lt;P&gt;effect if the DisableStartupPrompt [Setup] section directive was set to yes.&lt;/P&gt;
&lt;P&gt;/SILENT, /VERYSILENT&lt;BR&gt;Instructs Setup to be silent or very silent. When Setup is silent the wizard and the background window are not displayed but&lt;/P&gt;
&lt;P&gt;the installation progress window is. When a setup is very silent this installation progress window is not displayed.&lt;/P&gt;
&lt;P&gt;Everything else is normal so for example error messages during installation are displayed and the startup prompt is (if you&lt;/P&gt;
&lt;P&gt;haven''t disabled it with DisableStartupPrompt or the ''/SP-'' command line option explained above)&lt;/P&gt;
&lt;P&gt;If a restart is necessary and the ''/NORESTART'' command isn''t used (see below) and Setup is silent, it will display a&lt;/P&gt;
&lt;P&gt;Reboot now? messagebox. If it''s very silent it will reboot without asking.&lt;/P&gt;
&lt;P&gt;/NORESTART&lt;BR&gt;Instructs Setup not to reboot even if it''s necessary.&lt;BR&gt;/LOADINF=&quot;filename&quot;&lt;BR&gt;Instructs Setup to load the settings from the specified file after having checked the command line. This file can be prepared&lt;/P&gt;
&lt;P&gt;using the ''/SAVEINF='' command as explained below.&lt;/P&gt;
&lt;P&gt;/SAVEINF=&quot;filename&quot;&lt;BR&gt;Instructs Setup to save installation settings to the specified file.&lt;/P&gt;
&lt;P&gt;/DIR=&quot;x:\dirname&quot;&lt;BR&gt;Overrides the default directory name displayed on the Select Destination Directory wizard page. A fully qualified pathname&lt;/P&gt;
&lt;P&gt;must be specified. If the [Setup] section directive DisableDirPage was set to yes, this command line parameter is ignored.&lt;/P&gt;
&lt;P&gt;/GROUP=&quot;folder name&quot;&lt;BR&gt;Overrides the default folder name displayed on the Select Start Menu Folder wizard page. If the [Setup] section directive&lt;/P&gt;
&lt;P&gt;DisableProgramGroupPage was set to yes, this command line parameter is ignored.&lt;/P&gt;
&lt;P&gt;/NOICONS&lt;BR&gt;Instructs Setup to initially disable the Don''t create any icons check box on the Select Start Menu Folder wizard page.&lt;/P&gt;
&lt;P&gt;/COMPONENTS=&quot;comma separated list of component names&quot;&lt;BR&gt;Overrides the default components settings. Using this command line parameter causes Setup to automatically select a custom&lt;/P&gt;
&lt;P&gt;type.&lt;/P&gt;
&lt;P&gt;QUOTE:&lt;/P&gt;
&lt;P&gt;二.InstallShield&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;要使用静默安装的方式安装用InstallShield技术打包的程序&lt;BR&gt;你首先要在现有的操作系统中创建一个setup.iss文件。&lt;/P&gt;
&lt;P&gt;1. 在命令行窗口中使用 -R 参数（大小写敏感）运行安装程序。&lt;/P&gt;
&lt;P&gt;例如：&lt;BR&gt;Setup.exe -R&lt;/P&gt;
&lt;P&gt;2. 接着会显示常见的安装屏幕，并且询问你一些问题，例如要安装的目录等&lt;BR&gt;&amp;nbsp; 有一点是很重要的，在安装结束后你不能选择“立刻重启动计算机”的选项&lt;BR&gt;&amp;nbsp; 如果你选了，在批处理文件中的其他命令就会因为计算机重启动而无法执行&lt;/P&gt;
&lt;P&gt;3. 在安装程序运行完毕后，打开你的C:\Windows （或者C:\WINNT）目录&lt;BR&gt;&amp;nbsp; 然后找到setup.iss文件，把这个文件和你将要静默安装的程序setup.exe保存在同一个目录中&lt;/P&gt;
&lt;P&gt;4. 用以下命令进行静默安装：&lt;/P&gt;
&lt;P&gt;start /wait %systemdrive%\install\Application\Application_name\Setup.exe -s&lt;/P&gt;
&lt;P&gt;5. 对所有准备进行静默安装，并且使用了InstallShield技术打包的程序重复上面的步骤操作&lt;/P&gt;
&lt;P&gt;技术难点：从光盘上的RunOnceEx中安装用Installshield技术打包的程序&lt;BR&gt;如果从光盘上直接执行RunOnceEx，用Installshield打包的应用程序安装将会失败&lt;BR&gt;除非你指定了用于保存日至文件的位置&lt;BR&gt;下面就有一个示例，你可以将这个例子用于你自己的程序的安装（粗体字部分看仔细了）：&lt;/P&gt;
&lt;P&gt;REG ADD %KEY%\045 /VE /D &quot;Kerio Personal Firewall 2.1.5&quot; /f&lt;BR&gt;REG ADD %KEY%\045 /V 1 /D &quot;%CDROM%\apps\KPF\Setup.exe -s -f2\&quot;%systemdrive%\kerio.log\&quot;&quot; /f&lt;/P&gt;
&lt;P&gt;然后你可以用一个cleanup.cmd文件删除kerio.log文件&lt;BR&gt;DEL &quot;%systemroot%\kerio.log&quot;&lt;/P&gt;
&lt;P&gt;我怎么知道哪个程序是使用InstallShield技术打包的？&lt;BR&gt;大部分这类程序的安装文件都可以被压缩软件解压缩，安装文件setup.exe的属性对话框中应该有“InstallShield (R) Setup Launcher”或者&lt;/P&gt;
&lt;P&gt;其他类似的字样。&lt;BR&gt;最后，如果你在保存安装文件的文件夹中看到了一个setup.iss文件，&lt;BR&gt;那么毫无疑问这是用InstallShield打包了！&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;QUOTE:&lt;/P&gt;
&lt;P&gt;三. Nullsoft SuperPiMP Install System (NSIS)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;使用NSIS 打包的安装文件可以用 /S参数进行自动安装（“S”是大小写敏感的）：&lt;/P&gt;
&lt;P&gt;Setup.exe /S&lt;/P&gt;
&lt;P&gt;你也可以用 /D参数选择将要安装的目标分区和文件夹：&lt;/P&gt;
&lt;P&gt;Setup.exe /S /D=E:\Software\CDex&lt;/P&gt;
&lt;P&gt;像Winamp 和CDex这类的软件都会在安装结束后显示一个确认屏幕（CDex）&lt;BR&gt;或者一个设置文件关联方式的结束安装屏幕（Winamp）&lt;BR&gt;我还不知道怎样跳过这一步，但是这个屏幕对批处理文件的继续执行不会有任何影响&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;我怎么知道哪个程序是使用NSIS技术打包的？&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;很多用NSIS打包的程序在安装的时候都有类似这样的窗口，例如Winamp 和CDex：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;QUOTE:&lt;/P&gt;
&lt;P&gt;四.Microsoft Windows Installer&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;微软老大的封包形式！&lt;BR&gt;如果某个软件是用Windows Installer打包的，那你就应该能在文件夹中看到*.msi文件。&lt;BR&gt;这是最典型的特征&lt;BR&gt;这些文件通常可以使用 /QB和 /QN参数进行自动安装。&lt;BR&gt;Powertoys使用了 /s /v/qn参数，对于这些软件，你可以依次尝试上面提到的参数&lt;BR&gt;看看哪个是有效的。&lt;/P&gt;
&lt;P&gt;/qb 会在窗口中显示一个基本的安装进程&lt;BR&gt;/qn 参数则不会显示任何窗口，直接在后台自动安装&lt;/P&gt;
&lt;P&gt;阻止程序安装完成后自动重启动：&lt;BR&gt;为了阻止某些程序安装成功后自动重启动（例如Kerio Personal Firewall 4），你可以在 /qn 或者 /qb参数后使用REBOOT=Suppress标记，例&lt;/P&gt;
&lt;P&gt;如：&lt;/P&gt;
&lt;P&gt;setup.msi &quot;/qn REBOOT=Suppress&quot;&lt;/P&gt;
&lt;P&gt;有些安装程序使用 /s/v/qn参数进行自动安装，因此阻止它们重启动应该用：&lt;/P&gt;
&lt;P&gt;setup.exe /s /v&quot;/qn REBOOT=Suppress&quot;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;QUOTE:&lt;/P&gt;
&lt;P&gt;五.WISE Installer&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;用WISE技术打包的软件在安装的时候可以选择使用 /s参数进行自动安装：&lt;/P&gt;
&lt;P&gt;Setup.exe /s&lt;/P&gt;
&lt;P&gt;更多的其他参数:&lt;BR&gt;You can run Wise Installation .EXE with command line options to automate many of the tasks you would normally do in the User&lt;/P&gt;
&lt;P&gt;Interface. The list of options is as follows.&lt;/P&gt;
&lt;P&gt;/c file.wse -- creates executable file from wise script&lt;BR&gt;/r -- opens Wise in SetupCapture window&lt;BR&gt;/u -- runs the upgrade wizard that checks for any upgrades online&lt;BR&gt;/d CompVar=Value -- defines a single compiler variable in Enterprise Edition. Multiple definitions require multiple /d&lt;BR&gt;/d=filename -- uses filename to define compiler variables. Each line in file is CompVar=Value&lt;/P&gt;
&lt;P&gt;Example: installbuilder.exe /c /d _MYVAR_=&quot;Test&quot; c:\my\source\files\setup.wse&lt;/P&gt;
&lt;P&gt;Wise Installations:&lt;/P&gt;
&lt;P&gt;/T -- test mode&lt;BR&gt;/X pathname -- extracts files into pathname&lt;BR&gt;/Z pathname -- extracts files into pathname and reboots&lt;BR&gt;/S -- silent install&lt;BR&gt;/M -- prompts for windows, system, temp directories&lt;BR&gt;/M=filename -- specifies a value file similar to /d above, but for standard variables (See NOTE below).&lt;BR&gt;/M1 -- same as /m plus it prompts before any file that is self-registered&lt;BR&gt;/M2 -- reserved for internal use by Wise during debugger sessions&lt;/P&gt;
&lt;P&gt;Example: setup.exe /T&lt;/P&gt;
&lt;P&gt;Unwise:&lt;/P&gt;
&lt;P&gt;/Z -- remove empty directories, including one with unwise itself in it.&lt;BR&gt;/A -- automatic mode, no user choices other than cancel.&lt;BR&gt;/S -- silent mode, automatic mode with no user choices&lt;BR&gt;/R -- rollback mode, selects option to rollback on uninstall&lt;BR&gt;/U -- like automatic mode, but gives all choices other than custom/automatic title window title can be at the end of the&lt;/P&gt;
&lt;P&gt;command line&lt;/P&gt;
&lt;P&gt;Example: unwise.exe /S c:\my\program\directory\install.log&lt;/P&gt;
&lt;P&gt;NOTE: The values file is a simple text file with variables listed, one per line, in VARIABLE=&quot;VALUE&quot; format. If the variable&lt;/P&gt;
&lt;P&gt;is found in the values file, the specified value is used; otherwise, its value is unchanged. The file containing the&lt;/P&gt;
&lt;P&gt;variables can be up to 32K.&lt;/P&gt;
&lt;P&gt;我怎么知道哪些程序是使用Wise技术打包的？&lt;/P&gt;
&lt;P&gt;使用Wise技术打包的大部分程序都会在开始运行的时候显示一个启动界面：&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;但是也有一些会最小化这个窗口，只显示一个深蓝色的背景，还有安装窗口在屏幕的中央&lt;/P&gt;
&lt;P&gt;基本介绍完毕&lt;BR&gt;有人问？绿色软件怎么安装啊？&lt;BR&gt;告诉大家：用RAR做个自解压，这个方法好像是最简单有效的，呵呵&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=t_msgfont id=message10674015&gt;大部分软件，其安装都具备一定的智能性，换句话说，许多软件的安装都能采取全自动或半自动的方式进行。&lt;BR&gt;&lt;BR&gt;　　下面以不同的安装方式进行讨论：&lt;BR&gt;&lt;BR&gt;一、 &lt;FONT color=#0000ff&gt;&lt;B&gt;Microsoft Windows Installer&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;如果某个软件是用Windows Installer打包的，那你就应该能在文件夹中看到*.msi文件。&lt;BR&gt;&lt;BR&gt;这是最典型的特征，这些文件通常可以使用 /QB和 /QN参数进行自动安装。。&lt;BR&gt;&lt;BR&gt;/qb 会在窗口中显示一个基本的安装进程&lt;BR&gt;&lt;BR&gt;/qn 参数则不会显示任何窗口，直接在后台自动安装&lt;BR&gt;&lt;BR&gt;为了阻止某些程序安装成功后自动重启动（例如Kerio Personal Firewall 4），你可以在 /qn 或者 /qb参数后使用REBOOT=Suppress标记，例如：&lt;BR&gt;&lt;BR&gt;如安装虚拟光驱 DaemonTools：msiexec /i dtools.msi /qb REBOOT=SUPPRESS&lt;BR&gt;&lt;BR&gt;二、 &lt;FONT color=#0000ff&gt;&lt;B&gt;Windows 补丁包&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;有两种情况，一种是类似IE增量补丁包的那种安装文件，要使之静默安装，只需要在执行文件后加上　/q:a /r:n　参数即可；一种是　Windows　常用的补丁文件，一般情况下加上 /U /N /Z 即可实现静默安装。&lt;BR&gt;&lt;BR&gt;(对于新的系统补丁，也可使用 /passive /norestart)。这通用大部分情况，但某些特定的补丁不能用此法进行静默安装。&lt;BR&gt;&lt;BR&gt;三、&lt;FONT color=#0000ff&gt;&lt;B&gt;InstallShield&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;a.要使用静默安装的方式安装用InstallShield技术打包的程序，首先要在现有的操作系统中创建一个setup.iss文件。&lt;BR&gt;&lt;BR&gt;在命令行窗口中使用 -R 参数（大小写敏感）运行安装程序。&lt;BR&gt;&lt;BR&gt;例如：Setup.exe -R&lt;BR&gt;&lt;BR&gt;b. 接着会显示常见的安装屏幕，并且询问你一些问题，例如要安装的目录等有一点是很重要的，在安装结束后你不能选择“立刻重启动计算机”的选项。如果你选了，在批处理文件中的其他命令就会因为计算机重启动而无法执行。&lt;BR&gt;&lt;BR&gt;c. 在安装程序运行完毕后，打开你的C:\Windows（或者C:\WINNT）目录,然后找到setup.iss文件，把这个文件和你将要静默安装的程序setup.exe保存在同一个目录中&lt;BR&gt;&lt;BR&gt;d. 用以下命令进行静默安装：setup.exe -s [-sms]&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#ff0000&gt;我怎么知道哪个程序是使用InstallShield技术打包的？&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;大部分这类程序的安装文件都可以被压缩软件解压缩，安装文件setup.exe的属性对话框中应该有“InstallShield (R) Setup Launcher”或者其他类似的字样。&lt;BR&gt;&lt;BR&gt;最后，如果你在保存安装文件的文件夹中看到了一个setup.iss文件，那么毫无疑问这是用InstallShield打包了！&lt;BR&gt;&lt;BR&gt;四、&lt;FONT color=#0000ff&gt;&lt;B&gt;InstallShield with MSI&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;InstallShield with MSI 制作的安装文件，请使用类似：setup.exe /s /v&quot;/qb&quot; 来安装&lt;BR&gt;&lt;BR&gt;五、&lt;FONT color=#0000ff&gt;&lt;B&gt;WISE Installer&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;用WISE技术打包的软件在安装的时候可以选择使用 /s参数进行自动安装：setup.exe /s&lt;BR&gt;&lt;BR&gt;六、&lt;FONT color=#0000ff&gt;&lt;B&gt;Inno Setup&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;Inno Setup 制作的安装文件，请使用：setup.exe /sp- /silent /norestart&lt;BR&gt;&lt;BR&gt;我怎么知道哪个安装程序是用Inno 技术打包的？&lt;BR&gt;&lt;BR&gt;这种软件安装时第一个界面一般如下图所示&lt;BR&gt;&lt;BR&gt;在窗口标题栏左侧的图标上点击鼠标左键，然后再探出菜单上点击“About Setup”可以看见安装类型[attach]138[/attach]&lt;BR&gt;&lt;BR&gt;七、&lt;FONT color=#0000ff&gt;&lt;B&gt;NullSoft Installation System&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;使用 NSIS (NullSoft Installation System) 制作的安装文件，可用 /S （注意大写）来进行静默安装。示例：setup.exe /S&lt;BR&gt;&lt;BR&gt;使用NSIS 打包的安装文件可以用 /S参数进行自动安装（“S”是大小写敏感的）：&lt;BR&gt;&lt;BR&gt;Setup.exe /S&lt;BR&gt;&lt;BR&gt;你也可以用 /D参数选择将要安装的目标分区和文件夹：&lt;BR&gt;&lt;BR&gt;Setup.exe /S /D=E:\Software\CDex&lt;BR&gt;&lt;BR&gt;像Winamp 和CDex这类的软件都会在安装结束后显示一个确认屏幕（CDex）或者一个设置文件关联方式的结束安装屏幕（Winamp）&lt;BR&gt;&lt;BR&gt;我怎么知道哪个程序是使用NSIS技术打包的？&lt;BR&gt;&lt;BR&gt;很多用NSIS打包的程序在安装的时候都有类似这样的窗口，例如Winamp 和CDex：[attach]139[/attach]&lt;BR&gt;&lt;BR&gt;八、&lt;FONT color=#0000ff&gt;&lt;B&gt;Wise Installation Professional&lt;/B&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;制作的安装文件，可用 /silent 参数进行静默安装。&lt;BR&gt;&lt;BR&gt;反正拿到一个安装程序，大家用各静默安装参数试试就知道了!&lt;/DIV&gt;</description>
       </item>
       <item>
           <title>[安装制作]封装——封你喉 我对GHOST的看法</title>
           <link>http://www.jdxz.com//softinfo/1420.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-11 22:32:43</pubDate>
           <comments></comments>
           <description>&lt;P&gt;站在现在看昨天 &lt;BR&gt;&lt;BR&gt;首先你看到标题可能觉得这不是一篇技术性文章，你错了。写这篇文章的目的是来谈到下封装工具的发展历程，相信看完后会对你有很大的启示。我要让你知道，其实人人都会做恢复光盘！ &lt;BR&gt;&lt;BR&gt;一口气写完的，难免有错别字/望谅解. &lt;BR&gt;&lt;BR&gt;首先，我来谈谈手动封装系统的过程及其原理！（小兵的帖子对于菜鸟们来说还不够详细） &lt;BR&gt;手工封装其实只要解决两个问题，其实现在的工具无非也是解决这两个问题。至于工具的好处就是智能，不要人工操作（程序都写好了）另外就是方便扩展性（例如你可以添加任何适合运行何种程序，或者隐藏P处理的黑框）。言归正传——这两个问题就是电源判断即突破HAL限制，（这个是必要的，因为母机和客户机的配置通常不一样）以及SRS驱动相关（因为目前的机器配置更新越来越快，所以这个是必要的。这样能提高恢复光盘可用性）。下面我详细说下这两个方面是如何突破的并达到手工封装系统（请睁大耳朵）。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;电源判断的实现有多种方法，我就来介绍常用的方法： &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Copy&amp;nbsp;code &lt;BR&gt;突破HAL限制&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Longhorn的启示&amp;nbsp; &lt;BR&gt;Windows&amp;nbsp;Server&amp;nbsp;2003之前，Sysprep受到“必须源计算机与目标计算机有着相同的HAL”的限制，在HAL不相同的时候，不能正确判断计算机电源管理模式。&amp;nbsp; &lt;BR&gt;从2003年Windows&amp;nbsp;Server&amp;nbsp;2003发布到2006年底Windows&amp;nbsp;Vista的发布中的3年中，微软在研发Vista的时候，发布了以内部研发编号命名的Windows&amp;nbsp;Longhorn测试版。&amp;nbsp; &lt;BR&gt;Windows&amp;nbsp;Longhorn与以往的Windows在启动时有着一定的区别。&amp;nbsp; &lt;BR&gt;第一，NTLDR&amp;nbsp;有一定区别，提供了“/detecthal”&amp;nbsp;接口；&amp;nbsp; &lt;BR&gt;第二，BOOT.INI也支持“/detecthal”参数，以实现与NTLDR的结合；&amp;nbsp; &lt;BR&gt;第三，INF文件夹中有了“dtecthal.inf”，&amp;nbsp;提供各种HAL类型检测的参数说明。&amp;nbsp; &lt;BR&gt;有了这三个文件，可以让计算机在开机启动时即自动检测&amp;nbsp;HAL，从而可以自动判断电源管理选项。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;移植Longhorn的HAL判断&amp;nbsp; &lt;BR&gt;现今大多数人还是以使用Windows&amp;nbsp;2000/XP为主，所以，即使Longhorn的HAL判断再怎么强悍，不能移植到2000/XP中，也就不能使用。&amp;nbsp; &lt;BR&gt;以下是在2000/XP总移植并使用Longhorn的HAL判断的具体方法：&amp;nbsp; &lt;BR&gt;1&amp;gt;从系统中提取相应的HAL文件包：（WIN2000在SP4.CAB、WINDOWS&amp;nbsp;XP&amp;nbsp;SP2在SP2.CAB中）&amp;nbsp; &lt;BR&gt;halacpi.dll&amp;nbsp; &lt;BR&gt;halapic.dll&amp;nbsp; &lt;BR&gt;halmps.dll&amp;nbsp; &lt;BR&gt;halaacpi.dll&amp;nbsp; &lt;BR&gt;halmacpi.dll&amp;nbsp; &lt;BR&gt;hal.dll&amp;nbsp; &lt;BR&gt;ntkrnlmp.exe&amp;nbsp; &lt;BR&gt;ntkrnlpa.exe&amp;nbsp; &lt;BR&gt;ntkrpamp.exe&amp;nbsp; &lt;BR&gt;ntoskrnl.exe&amp;nbsp; &lt;BR&gt;提取完毕后将hal.dll更名为halstnd.dll，ntoskrnl.exe更名为ntkrnlup.exe；&amp;nbsp; &lt;BR&gt;2&amp;gt;将上述相应的HAL文件包拷贝到准备封装的系统的%Windir%\SYSTEM32\下；&amp;nbsp; &lt;BR&gt;3&amp;gt;将Longhorn的“dtecthal.inf”拷贝到准备封装的系统的%Windir%\INF\下；&amp;nbsp; &lt;BR&gt;4&amp;gt;修改C:\BOOT.INI&amp;nbsp; &lt;BR&gt;在准备封装的系统后面加上&amp;nbsp;/DETECTHAL参数如：&amp;nbsp; &lt;BR&gt;[boot&amp;nbsp;loader]&amp;nbsp; &lt;BR&gt;timeout=0&amp;nbsp; &lt;BR&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&amp;nbsp; &lt;BR&gt;[operating&amp;nbsp;systems]&amp;nbsp; &lt;BR&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&quot;Microsoft&amp;nbsp;Windows&amp;nbsp;XP&amp;nbsp;Professional&quot;&amp;nbsp;/fastdetect&amp;nbsp;/detecthal&amp;nbsp; &lt;BR&gt;5&amp;gt;将LONGHORN版本的NTLDR拷贝到从C:\，覆盖原有的NTLDR；&amp;nbsp; &lt;BR&gt;6&amp;gt;删除准备封装的系统的HAL信息，删除注册表中以下键值，如果提示权限不足不能删除，则可用setacl.exe来修改权限再删除。&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;至此，突破了HAL限制的系统就已经准备完毕。由于这个技术本身就出自微软，所以对电源管理的判断几乎是100％。&amp;nbsp; &lt;BR&gt;突破HAL限制的系统可以部署在任何HAL环境的计算机上，不再有“源计算机和目标计算机需有相同的HAL”的限制。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Copy&amp;nbsp;code &lt;BR&gt;突破S&amp;amp;R&amp;amp;S实例&amp;nbsp;(微软方法) &lt;BR&gt;&lt;BR&gt;1&amp;gt;收集需要的srs驱动，方便期间，直接下载DPS提供的massstorage&amp;nbsp;驱动：&amp;nbsp; &lt;BR&gt;[url]http://www.driverpacks.net/DriverPacks/download.php?pag=m[/url]&amp;nbsp; &lt;BR&gt;2&amp;gt;解压驱动到c:\drivers&amp;nbsp;。&amp;nbsp; &lt;BR&gt;3&amp;gt;编辑sysprep.ini&amp;nbsp;加入以下内容&amp;nbsp; &lt;BR&gt;InstallFilesPath=C:\sysprep\i386&amp;nbsp; &lt;BR&gt;然后在[SysprepMassStorage]段中添加需要的串口磁盘驱动，根据DPS驱动包的说明书，一般只集成Intel、nVIDIA、Uli、VIA、SiS、AMD的串口磁盘驱动即可，在对应的驱动包中的inf文件中，可以获得硬件的即插即用ID。&amp;nbsp; &lt;BR&gt;例如：&amp;nbsp; &lt;BR&gt;[SysprepMassStorage]&amp;nbsp; &lt;BR&gt;PCI\VEN_1022&amp;amp;DEV_7469=c:\drivers\m\am\AMDEIDE.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1002&amp;amp;DEV_4349=c:\drivers\m\at\atiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5215=c:\drivers\m\au\1\ALIIDE.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5219=c:\drivers\m\au\1\ALIIDE.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5229=c:\drivers\m\au\1\ALIIDE.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5228=c:\drivers\m\au\2\m5228.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5281=c:\drivers\m\au\2\m5281.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5287=c:\drivers\m\au\3\ulisata.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5288=c:\drivers\m\au\4\ULISATA.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_10B9&amp;amp;DEV_5289=c:\drivers\m\au\5\ULISATA.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2652&amp;amp;CC_0104=c:\drivers\m\in\1\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_27C3&amp;amp;CC_0104=c:\drivers\m\in\1\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2682&amp;amp;CC_0104=c:\drivers\m\in\1\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_27C6&amp;amp;CC_0104=c:\drivers\m\in\1\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2822&amp;amp;CC_0104=c:\drivers\m\in\1\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2652&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2653&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_27C1&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_27C5&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2681&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_2821&amp;amp;CC_0106=c:\drivers\m\in\1\iaahci.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_24DF&amp;amp;CC_0104=c:\drivers\m\in\1\O\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_8086&amp;amp;DEV_25B0&amp;amp;CC_0104=c:\drivers\m\in\1\O\iastor.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_008E=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_00D5=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_00EE=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_00E3=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_0036=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_003E=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_0054=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_0055=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_0266=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_0267=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_036F=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_037E=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_037F=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_03F6=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_03F7=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_10DE&amp;amp;DEV_03E7=c:\drivers\m\N\TM\nvatabus.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1039&amp;amp;DEV_0181=c:\drivers\M\SI\1\SISRaid1.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1039&amp;amp;DEV_0180=c:\drivers\M\SI\2\SISRaid.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1039&amp;amp;DEV_0182=c:\drivers\M\SI\3\SISRaid2.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3349&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_6287&amp;amp;CC_0106=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_0591&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3249&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3149&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3164&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_0581&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_7372&amp;amp;CC_0104=c:\drivers\M\V\1\VIAMRAID.INF&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_4149=c:\drivers\M\V\2\viapide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3149&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_0591&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_5337&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3349&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_5287&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_3164&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_0581&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_1106&amp;amp;DEV_5324&amp;amp;CC_0101=c:\drivers\M\V\3\vminiide.inf&amp;nbsp; &lt;BR&gt;PCI\VEN_104B&amp;amp;DEV_1040=c:\drivers\M\VM\vmscsi.inf&amp;nbsp; &lt;BR&gt;4&amp;gt;在c:\sysprep&amp;nbsp;目录下建立&amp;nbsp;i386\$oem$目录&amp;nbsp;，在c:\sysprep\i386\$oem$&amp;nbsp;中建立cmdlines.txt&amp;nbsp;文件，在文件中加入&amp;nbsp; &lt;BR&gt;[Commands]&amp;nbsp; &lt;BR&gt;&quot;c:\sysprep\sysprep&amp;nbsp;-clean&quot;&amp;nbsp; &lt;BR&gt;这样就会在最小化安装的过程中禁用所有因为在目标计算机上不存在而未安装的大量存储控制器。&amp;nbsp; &lt;BR&gt;至此，一个突破了S&amp;amp;R&amp;amp;S限制的系统映像准备完毕。&amp;nbsp; &lt;BR&gt;执行sysprep进行封装，在封装的过程中，系统会自动安装&amp;nbsp;srs驱动。在最小化安装的时候会删除多余的驱动。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;上述的方法你掌握了，你即突破了关键性技术问题！下面老事重谈，罗嗦一遍做个总结！ &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Copy&amp;nbsp;code &lt;BR&gt;1、安装WindowsXP &lt;BR&gt;&lt;BR&gt;2、安装软件（可选） &lt;BR&gt;推荐安装OFFICE&amp;nbsp;2003中的ACCESS、EXCEL、WORD三组件的最小安装，智能ABC&amp;nbsp;5.22破解，WINRAR、WINDOWS优化大师、FLASHGET、BITCOMIT、暴风影音、ACDSEE &lt;BR&gt;&lt;BR&gt;3、保存本用户的输入法设置 &lt;BR&gt;打开&amp;nbsp;控制面板－区域和语言选项－高级&amp;nbsp;将&amp;nbsp;“将所有设置应用于当前用户帐户和默认用户配置文件(D)”&amp;nbsp;选框选上，解决安装的输入法在系统还原后，系统托盘没显示的问题。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;4、保存文件到系统目录（这里提到的DD我会提供给大家的!） &lt;BR&gt;解压缩AutoHAL.rar &lt;BR&gt;复制里面的halacpi.dll、halapic.dll、halmps.dll、halaacpi.dll、halmacpi.dll、halstnd.dll、ntkrnlmp.exe、ntkrnlpa.exe、ntkrpamp.exe、ntkrnlup.exe十个文件到\WINDOWS\SYSTEM32\ &lt;BR&gt;复制dtecthal.inf到\WINDOWS\INF\ &lt;BR&gt;复制run.bat到\WINDOWS\ &lt;BR&gt;复制boot.ini、bootXP.ini、ntldr、ntldrXP到系统根目录 &lt;BR&gt;&lt;BR&gt;解压缩sysprep.rar到根目录\sysprep\ &lt;BR&gt;重新执行setupmgr.exe按照提示制作sysprep.inf文件(也可以沿用里面包含的sysprep.inf) &lt;BR&gt;&lt;BR&gt;5、系统减肥计划 &lt;BR&gt;1、关闭系统还原 &lt;BR&gt;2、关闭系统休眠 &lt;BR&gt;3、转移虚拟内存页面文件 &lt;BR&gt;4、清理磁盘，删除系统和IE临时文件&amp;nbsp; &lt;BR&gt;在“Internet选项”中删除Internet临时文件和脱机内容，删除Cookies，清除历史记录。 &lt;BR&gt;删除&amp;nbsp;C:\Documents&amp;nbsp;and&amp;nbsp;Settings\Administrator\Local&amp;nbsp;Settings\Temp\&amp;nbsp;下所有文件。 &lt;BR&gt;删除&amp;nbsp;C:\Program&amp;nbsp;Files\UPDATE\*.* &lt;BR&gt;删除&amp;nbsp;C:\Program&amp;nbsp;Files\InstallShield&amp;nbsp;Installation&amp;nbsp;Information\*.* &lt;BR&gt;删除&amp;nbsp;C:\Program&amp;nbsp;Files\WindowsUpdate\*.* &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS\Temp&amp;nbsp;下所有文件 &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS&amp;nbsp;下所有以“$NtUninstall*$”为命名格式的隐藏目录 &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS&amp;nbsp;下所有以KB8打头的和Q打头的.log文件 &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS\SoftwareDistribution\Download\*.* &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS\Installer\*.* &lt;BR&gt;删除&amp;nbsp;C:\WINDOWS\Downloaded&amp;nbsp;Installations\*.* &lt;BR&gt;5、移动我的文档至&amp;nbsp;D:\My&amp;nbsp;Documents（可选） &lt;BR&gt;&lt;BR&gt;6、删除、更改系统硬件驱动 &lt;BR&gt;&lt;BR&gt;做封装所用的计算机中所使用的驱动程序，在被部署的计算机上大多数不再有用（除非都被部署在相同硬件配置的计算机上）。所以，我们要一一删除源计算机中的这些驱动，以免残留的驱动造成部署的不正常。&amp;nbsp; &lt;BR&gt;卸载驱动，在“设备管理器”（我的电脑，属性，硬件，设备管理器）中列出所有设备，然后一一卸载。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;在设备管理器中，可以看到当前正在使用的所有硬件设备。 &lt;BR&gt;【1、更改“IDE&amp;nbsp;ATA/ATAPI控制器”为“标准双通道&amp;nbsp;PCI&amp;nbsp;IDE&amp;nbsp;控制器”&amp;nbsp; &lt;BR&gt;2、更改计算机电源管理模式“Advanced&amp;nbsp;Configuration&amp;nbsp;Power&amp;nbsp;Interface(ACPI)”为&amp;nbsp;“Standard&amp;nbsp;PC” &lt;BR&gt;【1和2不懂看这里： &lt;BR&gt;、更改IDE&amp;nbsp;ATA/ATAPI控制器 &lt;BR&gt;点击“更新驱动程序”-“从列表或指定位置安装”-“不要搜索，我要选择自己的驱动”改成“标准的双通道PCI&amp;nbsp;IDE控制器” &lt;BR&gt;2、再把“计算机”里的内容改为“Standard&amp;nbsp;PC” &lt;BR&gt;点击“更新驱动程序”-“从列表或指定位置安装”-“不要搜索，我要选择自己的驱动”改成“Standard&amp;nbsp;PC”】 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;3、卸载网络适配器 &lt;BR&gt;4、卸载通用串行总线控制器 &lt;BR&gt;5、卸载声音、视频游戏控制器 &lt;BR&gt;6、卸载监视器 &lt;BR&gt;7、卸载显示卡】（注意先后顺序!） &lt;BR&gt;&lt;BR&gt;7、清理信息 &lt;BR&gt;1、清理“事件查看器”内信息 &lt;BR&gt;2、清理“菜单”访问记录 &lt;BR&gt;3、清理IE缓存信息 &lt;BR&gt;&lt;BR&gt;8、运行\sysprep\DllCacheManager.exe&amp;lt;在sysprep.rar里包含&amp;gt;备份DLL文件 &lt;BR&gt;&lt;BR&gt;9、运行“磁盘碎片整理程序” &lt;BR&gt;&lt;BR&gt;10、执行sysprep.exe封装系统 &lt;BR&gt;&lt;BR&gt;11、运行regedit，查找hal项，删除***_HAL&amp;lt;acpi_hal&amp;gt;注册表项。删除时，在要删除的项上点右键，然后选择“权限”&amp;nbsp;，为当前用户添加“完全控制”权限即可 &lt;BR&gt;&lt;BR&gt;【11不懂看这里：删除HAL文件一项具体操作过程： &lt;BR&gt;1、点“开始”&amp;nbsp;-&amp;nbsp;“运行”&amp;nbsp;-&amp;nbsp;输入“regedit” &lt;BR&gt;2、选中“HKEY_LOCAL_MACHINE” &lt;BR&gt;3、选择“编辑”&amp;nbsp;-&amp;nbsp;“查找”&amp;nbsp;-&amp;nbsp;“查看”选项选择上“项”就可以&amp;nbsp;-&amp;nbsp;“全字匹配”钩去掉&amp;nbsp;-&amp;nbsp;选“查找” &lt;BR&gt;4、不断的查找，一直找到含有&amp;nbsp;“***_HAL”字样的地方，一般在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root”和“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\”中都有，大概有四个。 &lt;BR&gt;5、项上点右键，然后选择“权限”&amp;nbsp;，为当前用户添加“完全控制”权限。 &lt;BR&gt;6、删除有“***_HAL”字样的项，几个都删除才可以。】 &lt;BR&gt;&lt;BR&gt;12、关闭系统，制作GHOST &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;下面我要来说说现在的封装工具了；如下下提到的封装工具先后顺序是我了知接触的顺序，可以说是他们被创造出来的顺序。在下面的谈论但中我会对工具进行理智性评价（如有不妥不对的地方，网友请指正。作者请包涵！） &lt;BR&gt;&lt;BR&gt;说道封装工具，我们广大互联网朋友应该对这些原创作者无私的制作，致敬！工具的却带来了太大的方便，各种工具的使用极其特性各有不同；如果你选择了适合自己上手的工具那么你也将会是个G高手。引用小兵的一句话“你可以什么都不会，你也可以制作万能G系统（原话差不多啦！）” &lt;BR&gt;&lt;BR&gt;我的理解，封装工具是必然产物！封装工具是高说做系统“玩腻了”的产物，也是其技术实力体现的产物 &lt;BR&gt;【第一个】工具，龙帝国SRS封装工具！龙帝国是G研究最早的一个技术性论坛，那里高手如云（死性不改、石头、冷面人、木鸟、研究僧人、风之客……..）众多关键性技术就是从这里诞生的!由于站长死性的长时间消失，以及论坛人心的不聚，慢慢地这条龙睡着了！下面来说工具。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最新版本是&amp;nbsp;龙帝国死性不改&amp;nbsp;Computer&amp;nbsp;deployment&amp;nbsp;Tools（S&amp;amp;R&amp;amp;S9.8.0708）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;对这个工具我的评价只能是技术强，但不人性化！懂得使用的人简直就是把利器！&amp;nbsp; &lt;BR&gt;死性不改作者采用的是底层抽象电源判断方式！准确率几乎是100%同时目前好多种工具都偷窥了他的技术！例如SRS驱动方面和电源判断等关键性技术！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;如果你不在乎他们论坛的LOGO以及封装恢复是否美观，这个是你的首先！当然，也有跳过他LOGO的方法!建议不要如此做，既然免费用了别人的东西就别那个什么了….所以这里我不做介绍！&amp;nbsp;9.8我没用过！但我告诉你，9.6最后的那个版本是最经典的一个版本！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第二个】工具，jujumao的封装工具!&amp;nbsp; &lt;BR&gt;&lt;BR&gt;猪猪猫的工具我只使用过他的首个版本！最新版本我下载了但没去用它！这里不不做过多的评价！JUJUMAO好像就是传说但中的杨海军，是个技术实力很强的作者.他的工具走的是龙帝国的路线，只解决电源判断以及SRS驱动问题，至于其他扩展是没有的！你要自己想办法。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;这个工具你不妨去尝试下！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;说到这里，对JUJUMAO的系统做个个人评价！早期版本五插件什么的！非常优秀，而且我个人觉得除去东海的系统电脑公司用得最多的就是他的了（指本地区），但现在走向了没落！垃圾越来越多，你进他们论坛网站给你的感觉就不怎么样了！对此评价到此为止。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;【第三个】工具，秋天论坛的封装工具。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;抱歉，这个封装工具已经停产！真的是很遗憾。但值得大家庆幸的是，软件作者“秋天”正式我们G区的版主！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;说说工具，此款工具类龙帝国封装工具！美观大方（我对秋天的审美观，很认同！小兵的审美观也一级棒！），缺点是不够人性话！只能提供电源判断功能以及SRS驱动集成！其他的你就自己像办法。&amp;nbsp; &lt;BR&gt;同时，秋天制作的某些辅助工具也堪称经典。现在网路上估计还有电源判断，以及隐藏程序运行等经典工具下载。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;秋天论坛开始我极为喜欢！或许是经营不尚或许是太多黑客攻击！目前系统大玩家是的前身就是秋天论坛！但好像秋天不管事务了。秋天的工具真的希望再次看到！（我是不是用了很多感叹号？）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第四三个】工具，自由天空的封装工具&amp;nbsp; &lt;BR&gt;在此向作者致敬，他们论坛走的是开源的道路！辅助工具开放VB源代码，封装工具不加壳！这样做真可谓是难得！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最新版本&amp;nbsp; &lt;BR&gt;EASY&amp;nbsp;SYSPREP&amp;nbsp;1.06&amp;nbsp; &lt;BR&gt;GUI&amp;nbsp;Easy&amp;nbsp;Sysprep&amp;nbsp;1.1&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;我不知道为什么他们要出两个不同的版本，对于EASY&amp;nbsp;SYSPREP&amp;nbsp;1.06是最早的发展系列！他是一个纯封装性工具，无GUI&amp;nbsp;Easy&amp;nbsp;Sysprep&amp;nbsp;1.1来得人性话。GUI&amp;nbsp;Easy&amp;nbsp;Sysprep&amp;nbsp;1.1可以设置接口调配程序修改图片等等！EASY&amp;nbsp;SYSPREP更有点像龙帝国封装工具的意味，但没有论坛LOGO及其其他信息是它的特色。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;嘿嘿，据说他们的工具是龙帝国的翻版！类似于把龙帝国的工具“拖层皮”我还是那句话，龙帝国工具有些东西是永远都弄不到的，除非自己领悟！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;这个工具较为容易上手，是使用工具中级水平者的首选！你要是懂得VB的话，就可以尽情的DIY了！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第五个】工具，于安的封装工具。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;测试过，首个版本走的是龙帝国路线，即不人性话。安装后还用把东西移来移去，简直就是半自动化，说明此人编程语言不到家哈。但让对于以前需要自己LOGO的同志，这个还是受到追捧的！&amp;nbsp; &lt;BR&gt;目前发展到哪个版本了，我不太了解！个人不是很喜欢这个工具！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;类似的这些个人作品，即不带表论坛的作品。在下面我就忽略不多做介绍.&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第六个】这个工具同样是个高手大师级别制作（看图说话），那就是PreTooler,&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最高版本PreTooler1.55&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;这个工具全无LOGO，集成智能于一身。上手非常容易！我个人觉得在其后续出现的工具或者他人更新过的工具，或多或少采纳了他的思路。拥有这个工具，完全支持自定义任何东西（真正做到无限扩展）！做得最可贵的地方是，虽然这个作者商无网站和论坛！但他的工具封装出来的系统绝对“纯净”（像手工）！在部署文件夹中你可以做到只有一个部署文件！（向作者致敬！本人强烈推荐）&amp;nbsp; &lt;BR&gt;同时作者还推出了像驱动可选安装器等辅助工具（可自定义logo）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;个人唯一感觉的就是SRS驱动不够强悍！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第七个】为雨林木风的封装工具SysPacker&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最高版本：SysPacker&amp;nbsp;1.0&amp;nbsp;beta&amp;nbsp;3&amp;nbsp;Reload&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;此款工具号称为只需要更改电源跟&amp;nbsp;IDE&amp;nbsp;通道即可封装系统，看到这款工具截图大家似乎时不时觉得与介绍的第五个工具相像？其实工具的制作即为程序代码的事项，做某件事情达到某种效果其实用很多方法。&amp;nbsp; &lt;BR&gt;相比上款工具，YLMF的SysPacker更具有论坛色彩，非技术方面的我们就不加讨论了！总之，封装后在部署文件夹中的东西不少.同样，这也是一款出色的封装工具！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;值得一提的是，现在好多（几乎所有）封装工具的驱动清除功能，都是采用雨林木风的驱动服务清除程式！所以要相像此工具也是很强的！总结这款工具：只要你不在乎那些不是“问题的问题”这款工具依然是个不错的选择！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第八个】个工具，创想封装工具&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最新版本创想封装工具1.0&amp;nbsp;正式版&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;款工具也是后起之秀，不针对论坛我们针对工具来说说。&amp;nbsp; &lt;BR&gt;此工具走的线路是PreTooler封装工具以及小兵出品封装工具的中间路线。集成了驱动删除询问，分辨率调整…附加功能（可选择），我觉得这个工具所走的路线非常好，他的所有工具都能看到他们论坛的踪影！为什么还说他做得好呢？我并不喜欢一个论坛吧宣传搞成第一位；但你只要动动脑子就可以把这个工具完全替换成你自己的（作者还是“留情”了，望后续版本保留），更可贵的是。——创想论坛工具发布说明中有这样一句不清不楚的话“其核心是以SRS9.7为核心，界面美观，简单易用！功能及性能优越”我在他们论坛发过帖询问这个问题，但回答也并不明确！呵呵，我估计；难道是他们破解了SRS9.7然后……后话我就不说了！同时有一点值得其他工具借鉴的是，此款工具，只要你图片选择合适，恢复系统的时候是很美观的（有渐显拉大图片效果），不足之处是，辅助工具太具论坛色彩，一句话“不好看”。而且论坛的辅助工具极像深度小兵的工具！这点建议立即改正，那样的话创想在这方面，永远做不了主流论坛！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第九个】深度一键封装工具&amp;nbsp;Dprep&amp;nbsp; &lt;BR&gt;&lt;BR&gt;目前最新版本&amp;nbsp;DprepV3.0&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;小兵真是个不断创新的人才！此款工具是款“傻瓜式”封装工具。看图说话！你只需要打勾与点击就可以完成一个系统的制作。工具考虑细微，连Mediaplayer的快捷方式去除都考虑在其中。拥有此款工具，你真的是什么都不懂也可完成G系统制作。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;对自家的工具，我就多说点建议。工具不易复杂！其实富于功能多了不见得就好,应该向PreTooler靠近！另外采用创想联盟工具的SETUP图片显现效果，配合你最近新出的解决声卡及其其他硬件问题的小工具，无缝连接......那不就无敌了！！！！！！！！！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;说到这，不能不说说小兵的辅助工具！一级棒....无论是从美观性还是易用性以及扩展性。据我目前所知道的，驱动选择工具有两个版本，硬盘安装有两个版本，再次说声‘小兵辛苦了！’工具除去论坛信息与小兵大名（并不明显），并无其他。整体美观实用！最少是我能够接受。要知道完全要什么广告都没有而你又下载不到的东西要自己造。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;送上一句话：经典之作往往是“纯净”的！（即任何可以自己DIY）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;--------------------------------------------------------------------------------&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;工具就介绍这么多！我再怎么介绍其实还不如你亲身体验来的好。下面楼，我会介绍下、工具在我心目中的排名、某些封装小工具的推荐、某些技巧。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;最后是，《如何真确面对G系统》呵呵，题目可能有点大了！&lt;/P&gt;
&lt;P&gt;【第一个】工具，龙帝国SRS封装工具！龙帝国是G研究最早的一个技术性论坛，那里高手如云（死性不改、石头、冷面人、木鸟、研究僧人、风之客……..）众多关键性技术就是从这里诞生的!由于站长死性的长时间消失，以及论坛人心的不聚，慢慢地这条龙睡着了！下面来说工具。&lt;BR&gt;&lt;BR&gt;目前最新版本是 龙帝国死性不改 Computer deployment Tools（S&amp;amp;R&amp;amp;S9.8.0708）&lt;BR&gt;&lt;BR&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 600px; HEIGHT: 477px&quot; border=0 hspace=0 alt=&quot;&quot; src=&quot;http://www.jdxz.net/uploadfiles/2007-08-11/20070811_225539_748.jpg&quot; width=600 height=477&gt;&lt;BR&gt;&lt;BR&gt;对这个工具我的评价只能是技术强，但不人性化！懂得使用的人简直就是把利器！&lt;BR&gt;死性不改作者采用的是底层抽象电源判断方式！准确率几乎是100%同时目前好多种工具都偷窥了他的技术！例如SRS驱动方面和电源判断等关键性技术！&lt;BR&gt;&lt;BR&gt;如果你不在乎他们论坛的LOGO以及封装恢复是否美观，这个是你的首先！当然，也有跳过他LOGO的方法!建议不要如此做，既然免费用了别人的东西就别那个什么了….所以这里我不做介绍！ 9.8我没用过！但我告诉你，9.6最后的那个版本是最经典的一个版本！&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第二个】工具，jujumao的封装工具!&lt;BR&gt;&lt;BR&gt;猪猪猫的工具我只使用过他的首个版本！最新版本我下载了但没去用它！这里不不做过多的评价！JUJUMAO好像就是传说但中的杨海军，是个技术实力很强的作者.他的工具走的是龙帝国的路线，只解决电源判断以及SRS驱动问题，至于其他扩展是没有的！你要自己想办法。&lt;BR&gt;&lt;BR&gt;这个工具你不妨去尝试下！&lt;BR&gt;&lt;BR&gt;说到这里，对JUJUMAO的系统做个个人评价！早期版本五插件什么的！非常优秀，而且我个人觉得除去东海的系统电脑公司用得最多的就是他的了（指本地区），但现在走向了没落！垃圾越来越多，你进他们论坛网站给你的感觉就不怎么样了！对此评价到此为止。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;【第三个】工具，秋天论坛的封装工具。&lt;BR&gt;&lt;BR&gt;抱歉，这个封装工具已经停产！真的是很遗憾。但值得大家庆幸的是，软件作者“秋天”正式我们G区的版主！&lt;BR&gt;&lt;BR&gt;说说工具，此款工具类龙帝国封装工具！美观大方（我对秋天的审美观，很认同！小兵的审美观也一级棒！），缺点是不够人性话！只能提供电源判断功能以及SRS驱动集成！其他的你就自己像办法。&lt;BR&gt;同时，秋天制作的某些辅助工具也堪称经典。现在网路上估计还有电源判断，以及隐藏程序运行等经典工具下载。&lt;BR&gt;&lt;BR&gt;秋天论坛开始我极为喜欢！或许是经营不尚或许是太多黑客攻击！目前系统大玩家是的前身就是秋天论坛！但好像秋天不管事务了。秋天的工具真的希望再次看到！（我是不是用了很多感叹号？）&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第四三个】工具，自由天空的封装工具&lt;BR&gt;在此向作者致敬，他们论坛走的是开源的道路！辅助工具开放VB源代码，封装工具不加壳！这样做真可谓是难得！&lt;BR&gt;&lt;BR&gt;目前最新版本&lt;BR&gt;EASY SYSPREP 1.06&lt;BR&gt;GUI Easy Sysprep 1.1&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224721_371.jpg');&quot; border=0 src=&quot;/uploadfiles/2007-08-11/20070811_224721_371.jpg&quot; onload=&quot;if(this.width&gt;'800')this.width='800';&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 625px; HEIGHT: 450px&quot; onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224728_628.jpg');&quot; border=0 src=&quot;/uploadfiles/2007-08-11/20070811_224728_628.jpg&quot; width=720 onload=&quot;if(this.width&gt;'800')this.width='800';&quot; height=486&gt;&lt;BR&gt;&lt;BR&gt;我不知道为什么他们要出两个不同的版本，对于EASY SYSPREP 1.06是最早的发展系列！他是一个纯封装性工具，无GUI Easy Sysprep 1.1来得人性话。GUI Easy Sysprep 1.1可以设置接口调配程序修改图片等等！EASY SYSPREP更有点像龙帝国封装工具的意味，但没有论坛LOGO及其其他信息是它的特色。&lt;BR&gt;&lt;BR&gt;嘿嘿，据说他们的工具是龙帝国的翻版！类似于把龙帝国的工具“拖层皮”我还是那句话，龙帝国工具有些东西是永远都弄不到的，除非自己领悟！&lt;BR&gt;&lt;BR&gt;这个工具较为容易上手，是使用工具中级水平者的首选！你要是懂得VB的话，就可以尽情的DIY了！&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第五个】工具，于安的封装工具。&lt;BR&gt;&lt;BR&gt;测试过，首个版本走的是龙帝国路线，即不人性话。安装后还用把东西移来移去，简直就是半自动化，说明此人编程语言不到家哈。但让对于以前需要自己LOGO的同志，这个还是受到追捧的！&lt;BR&gt;目前发展到哪个版本了，我不太了解！个人不是很喜欢这个工具！&lt;BR&gt;&lt;BR&gt;类似的这些个人作品，即不带表论坛的作品。在下面我就忽略不多做介绍.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;【第六个】这个工具同样是个高手大师级别制作（看图说话），那就是PreTooler,&lt;BR&gt;&lt;BR&gt;目前最高版本PreTooler1.55&lt;BR&gt;&lt;BR&gt;&lt;B&gt;&lt;/B&gt;&lt;BR&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 635px; HEIGHT: 446px&quot; onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224731_409.jpg');&quot; border=0 hspace=0 alt=&quot;&quot; src=&quot;/uploadfiles/2007-08-11/20070811_224731_409.jpg&quot; width=723 onload=&quot;if(this.width&gt;'800')this.width='800';&quot; height=496&gt; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;这个工具全无LOGO，集成智能于一身。上手非常容易！我个人觉得在其后续出现的工具或者他人更新过的工具，或多或少采纳了他的思路。拥有这个工具，完全支持自定义任何东西（真正做到无限扩展）！做得最可贵的地方是，虽然这个作者商无网站和论坛！但他的工具封装出来的系统绝对“纯净”（像手工）！在部署文件夹中你可以做到只有一个部署文件！（向作者致敬！本人强烈推荐）&lt;BR&gt;同时作者还推出了像驱动可选安装器等辅助工具（可自定义logo）&lt;BR&gt;&lt;BR&gt;个人唯一感觉的就是SRS驱动不够强悍！&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;【第七个】为雨林木风的封装工具SysPacker&lt;BR&gt;&lt;BR&gt;目前最高版本：SysPacker 1.0 beta 3 Reload&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224732_813.gif');&quot; border=0 src=&quot;/uploadfiles/2007-08-11/20070811_224732_813.gif&quot; onload=&quot;if(this.width&gt;'800')this.width='800';&quot;&gt;&lt;BR&gt;&lt;BR&gt;此款工具号称为只需要更改电源跟 IDE 通道即可封装系统，看到这款工具截图大家似乎时不时觉得与介绍的第五个工具相像？其实工具的制作即为程序代码的事项，做某件事情达到某种效果其实用很多方法。&lt;BR&gt;相比上款工具，YLMF的SysPacker更具有论坛色彩，非技术方面的我们就不加讨论了！总之，封装后在部署文件夹中的东西不少.同样，这也是一款出色的封装工具！&lt;BR&gt;&lt;BR&gt;值得一提的是，现在好多（几乎所有）封装工具的驱动清除功能，都是采用雨林木风的驱动服务清除程式！所以要相像此工具也是很强的！总结这款工具：只要你不在乎那些不是“问题的问题”这款工具依然是个不错的选择！&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;【第八个】个工具，创想封装工具&lt;BR&gt;&lt;BR&gt;目前最新版本创想封装工具1.0 正式版&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style=&quot;FILTER: ; WIDTH: 623px; HEIGHT: 553px&quot; onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224732_509.jpg');&quot; border=0 hspace=0 alt=&quot;&quot; src=&quot;/uploadfiles/2007-08-11/20070811_224732_509.jpg&quot; width=759 onload=&quot;if(this.width&gt;'800')this.width='800';&quot; height=586&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;款工具也是后起之秀，不针对论坛我们针对工具来说说。&lt;BR&gt;此工具走的线路是PreTooler封装工具以及小兵出品封装工具的中间路线。集成了驱动删除询问，分辨率调整…附加功能（可选择），我觉得这个工具所走的路线非常好，他的所有工具都能看到他们论坛的踪影！为什么还说他做得好呢？我并不喜欢一个论坛吧宣传搞成第一位；但你只要动动脑子就可以把这个工具完全替换成你自己的（作者还是“留情”了，望后续版本保留），更可贵的是。——创想论坛工具发布说明中有这样一句不清不楚的话“其核心是以SRS9.7为核心，界面美观，简单易用！功能及性能优越”我在他们论坛发过帖询问这个问题，但回答也并不明确！呵呵，我估计；难道是他们破解了SRS9.7然后……后话我就不说了！同时有一点值得其他工具借鉴的是，此款工具，只要你图片选择合适，恢复系统的时候是很美观的（有渐显拉大图片效果），不足之处是，辅助工具太具论坛色彩，一句话“不好看”。而且论坛的辅助工具极像深度小兵的工具！这点建议立即改正，那样的话创想在这方面，永远做不了主流论坛！&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;【第九个】深度一键封装工具 Dprep&lt;BR&gt;&lt;BR&gt;目前最新版本 DprepV3.0&lt;BR&gt;&lt;BR&gt;&lt;IMG onclick=&quot;if(this.width&gt;=800) window.open('/uploadfiles/2007-08-11/20070811_224733_194.jpg');&quot; border=0 src=&quot;/uploadfiles/2007-08-11/20070811_224733_194.jpg&quot; onload=&quot;if(this.width&gt;'800')this.width='800';&quot;&gt;&lt;BR&gt;&lt;BR&gt;小兵真是个不断创新的人才！此款工具是款“傻瓜式”封装工具。看图说话！你只需要打勾与点击就可以完成一个系统的制作。工具考虑细微，连Mediaplayer的快捷方式去除都考虑在其中。拥有此款工具，你真的是什么都不懂也可完成G系统制作。&lt;BR&gt;&lt;BR&gt;对自家的工具，我就多说点建议。工具不易复杂！其实富于功能多了不见得就好,应该向PreTooler靠近！另外采用创想联盟工具的SETUP图片显现效果，配合你最近新出的解决声卡及其其他硬件问题的小工具，无缝连接......那不就无敌了！！！！！！！！！&lt;BR&gt;&lt;BR&gt;说到这，不能不说说小兵的辅助工具！一级棒....无论是从美观性还是易用性以及扩展性。据我目前所知道的，驱动选择工具有两个版本，硬盘安装有两个版本，再次说声‘小兵辛苦了！’工具除去论坛信息与小兵大名（并不明显），并无其他。整体美观实用！最少是我能够接受。要知道完全要什么广告都没有而你又下载不到的东西要自己造。&lt;BR&gt;&lt;BR&gt;送上一句话：经典之作往往是“纯净”的！（即任何可以自己DIY）&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;工具就介绍这么多！我再怎么介绍其实还不如你亲身体验来的好。下面楼，我会介绍下、工具在我心目中的排名、某些封装小工具的推荐、某些技巧。&lt;BR&gt;&lt;BR&gt;最后是，《如何真确面对G系统》呵呵，题目可能有点大了！&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;驱动包：&lt;BR&gt;&lt;BR&gt;大家要知道一点，驱动的制作大师是木鸟。好多细称什么论坛版什么个人版；都是从木鸟精简优化的驱动包修改来的。如果你最求驱动的全稳，木鸟“原版”驱动包是你的首先！&lt;BR&gt;另外，最近深度论坛自爱研究新的属于自己论坛的驱动包，看其说明和我得知的消息是很强的！你就留下硬盘来下载吧o(∩_∩)o...！另外，如果你向提前体验，那就去下深度装机GHOST4.0用GHOSTXP提取出来使用，注意：这个不是正式版本！&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;驱动选择工具：&lt;BR&gt;&lt;BR&gt;强烈推荐&lt;BR&gt;我告诉你是哪几个，自己去下看说明。&lt;BR&gt;&lt;BR&gt;小兵的驱动选择工具V4.1与V5.0（AU3代码写的。V4.1是一个功能超级强大的版本，内置功能多多！不信自己去下载看说明。V5.0体积小巧，配合小兵的封装工具天衣无缝。另外V4.1配合创想联盟封装工具美观效果，不言而喻！）&lt;BR&gt;&lt;BR&gt;木头云即将发布的驱动可选工具（甚至可以可选安装软件{这点目前觉得还并不完善}；此款工具美观大方，可自定义任何个人信息！可变成你的。而且美观系数上，胜小兵一筹！！推荐之。正式版功能也非常的强大）&lt;BR&gt;&lt;BR&gt;PreTooler作者的驱动可选工具（无私的，也是可让你定制所有个人信息的一个版本，所以在此也做推荐、）&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;最后推荐的就是，你若知道写代码，自己想要什么功能如何美观都可以！&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;封装工具我发现一个毛病，大家的驱动服务清除功能都是采用的YLMF老虎的程式，可在封装工具上勾选了此功能后，在恢复完毕系统的时候用此工具检测揖让含有。我估计是安装个人驱动出现的后续问题或者是调用的时机问题。所以我建议在开始、启动项目里面再次调用重复清除一次更为安全。还要说明一点的是，龙帝国封装工具采用的是自家的驱动清除！&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;给出几个大家可能用得着的P处理代码：&lt;BR&gt;&lt;/P&gt;
&lt;H6 class=quote&gt;&lt;A onclick=&quot;CopyCode(document.getElementById('code6'));&quot; href=&quot;javascript:&quot;&gt;Copy code&lt;/A&gt;&lt;/H6&gt;
&lt;BLOCKQUOTE id=code6&gt;P处理删除自身：&amp;nbsp; del %0&amp;nbsp; &amp;nbsp; （用到时，应写到P处理的最后）&lt;BR&gt;p处理删除任意文件夹：&amp;nbsp; rd /q /s “文件夹名”&lt;BR&gt;p处理导入注册表：&amp;nbsp; &amp;nbsp; regedit/s “注册表名.reg”&amp;nbsp; (注册表文件应与P处理在同一目录下)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;我不能全部教会你，更多东西还应该自己去实践领会贯通！&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;我对个人制作系统的一些看法：&lt;BR&gt;&lt;BR&gt;什么时候才是你个人制作G系统的时机？！&lt;BR&gt;第一：你是一个电脑公司的工作人员，面对不同的装机客户群（如果网络上下载的够用，你不要去做了）&lt;BR&gt;&lt;BR&gt;第二：你热衷与这方面的制作（建议你制作你个适合自己的或者制作一个纯净版本，纯净的才是经典的，如果你是用制作工具制作，建议弄明白一些东西去手工做）&lt;BR&gt;&lt;BR&gt;第三：你是一个无聊，需要打发时间的人（建议少做，你要懂这些知识。用工具的话打发不了多少时间，你不懂的话，不断的重复你会长时间面对电脑！那样对身体不好^_^）&lt;BR&gt;&lt;BR&gt;第四：...................................................&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;为什么我不推荐大家去制作呢，现在的GXP系统做的人太多了，好的版本也多。我就向你推荐深度的官方版本，龙帝国的官方版本，与良朋社区匪兵的版本。制作G系统是个伤身又损机且费时的事情。既然网路上有你需要的版本，你何乐而不为呢。你要知道，如果你要用工具制作，始终是比别人低一个档次。其实G系统的制作还存在很多细节上的问题，细节上的处理是关键！你会吗？你行吗？......所以，用他人，用大师的系统。不是很好吗！！！！工具始终是工具，好多东西是要知道原理自己动手来得好！这个是我的个人看法，如有不同可以探讨。&lt;BR&gt;另外，有的鸟人说深度的系统不安全不纯净一类的话，我想问下你真真正正又懂得多少呢》！又这嫌功夫你就可以自己做一个更好的。所以在此我也要说明下，大家尽量官方发布下载。免得一些卑鄙小人做手脚。不但损害了深度的名声，更重要的是损害了您的利益！！&lt;BR&gt;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]深度一键封装工具 Dprep V3.0</title>
           <link>http://www.jdxz.com//softinfo/1418.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-11 11:40:15</pubDate>
           <comments></comments>
           <description>&lt;P&gt;使用说明：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;使用Dprep可一键完成系统封装，界面美观、功能完善。&amp;nbsp; &lt;BR&gt;无需安装，即点即用，放在任何位置运行即可完成封装。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;软件提供了丰富的封装及部署选项，并留有8组外部接口。&amp;nbsp; &lt;BR&gt;不用更改系统任何设置，Dprep可轻松完成windows封装。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;您可以什么都不懂、什么都不会，Dprep为您解决一切。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;============================ &lt;BR&gt;&lt;BR&gt;特别注意事项： &lt;BR&gt;&lt;BR&gt;1.&amp;nbsp;强烈建议在封装时关闭所有其他应用程序&amp;nbsp; &lt;BR&gt;2.&amp;nbsp;强烈建议自备部署工具sysprep.exe&amp;nbsp; &lt;BR&gt;3.&amp;nbsp;封装过程如果出错，按ESC退出&amp;nbsp; &lt;BR&gt;4.&amp;nbsp;尽管软件提供了更改IDE及电源的功能，还是建议您手动更改&amp;nbsp; &lt;BR&gt;5.&amp;nbsp;封装后在系统目录生成部署核心程序newprep.exe并写注册表，切勿改动&amp;nbsp; &lt;BR&gt;6.&amp;nbsp;安装SRS驱动后将在注册表HKLM\Setup\sysprep\Dprep建立字段表示安装成功&amp;nbsp; &lt;BR&gt;7.&amp;nbsp;封装win2000前请确定系统目录下有msvcp60.dll运行库 &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;封装功能介绍：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Dprep内部集成了XP/2k/03的部署工具及配置好的自动应答文件， &lt;BR&gt;如使用自备的系统部署工具，需将sysprep.exe、setupcl.exe， &lt;BR&gt;及配置好的自动应答文件sysprep.ini放在C:\SYSPREP目录下。 &lt;BR&gt;请确保您的部署工具与当前系统匹配，否则无法进行封装。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Dprep内部集成了SATA、SCIS、RAID存储驱动及键鼠驱动，&amp;nbsp; &lt;BR&gt;支持大多数存储设备，支持64位架构及最新的双核处理器。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Dprep可自动更改IDE及电源，采用MCC硬件抽象HAL技术判断电源。&amp;nbsp; &lt;BR&gt;您无需在BIOS中禁用网卡，也不用手动清理注册表的网卡信息，&amp;nbsp; &lt;BR&gt;Dprep可自动清除“本地连接”，避免出现“本地连接2”。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;封装准备过程可卸载本机所有硬件设备，包括USB键鼠，&amp;nbsp; &lt;BR&gt;封装后在设备管理器中看到残留的设备，如显卡及CPU等，&amp;nbsp; &lt;BR&gt;因为正在使用，需要重起后生效，实际上已经被清除。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;封装结束将清空临时文件、Lastgood（最后一次正确的配置），&amp;nbsp; &lt;BR&gt;Prefetch（程序缓存）等垃圾文件，保证系统轻装上阵。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;欲不封装，可不选自动运行sysprep，在sysprep弹出后关闭即可。 &lt;BR&gt;&lt;BR&gt;配置文件提供了移动虚拟内存及自动填写IP（固定及随机）选项， &lt;BR&gt;可在封装后修改C:\sysprep\Dprep.ini中的相关字段。 &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;部署功能介绍：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;部署分辨率可设置为800*600*32，画面清楚，颜色丰富。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;部署后系统启动菜单时间会恢复为30秒，我们不需这么长，&amp;nbsp; &lt;BR&gt;Dprep可记住封装前的启动菜单选择时间并在部署后还原。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;扩展接口的批处理，我们可以隐藏掉它运行的黑色窗口，&amp;nbsp; &lt;BR&gt;使得你的系统在安装过程中看起来更美观。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;部署中还将自动清除各盘根目录下的autorun自动运行病毒，&amp;nbsp; &lt;BR&gt;刚装好的系统一点D盘E盘就中招的事，这样就可以避免了。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;第一次进入系统时的个人设置对话框和WMP的桌面快捷方式，&amp;nbsp; &lt;BR&gt;我们都不喜欢，Dprep可以帮您解决掉。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;最后，Dprep可以清理掉系统中没被使用或多余的硬件驱动。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;欲跳过最小化安装，可在“准备进行系统部署”期间按下F8。 &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;技术支持信息：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Dprep采用MCC硬件抽象HAL技术，使用LONGHORN的NTLDR判断电源。&amp;nbsp; &lt;BR&gt;封装过程将修改boot.ini，并从I386提取hal相关文件到系统中。&amp;nbsp; &lt;BR&gt;卸载本机驱动包括CPU、GAME&amp;nbsp;Port、网卡、声卡、显卡、监视器、&amp;nbsp; &lt;BR&gt;USB、芯片组、人机接口、IDE设备，如使用USB键鼠需要注意了。&amp;nbsp; &lt;BR&gt;封装结束后会自动删除注册表中电源的ACPI_HAL、PCI_HAL等键。&amp;nbsp; &lt;BR&gt;同时Dprep还会清空lastgood及repair目录、清除系统临时文件。&amp;nbsp; &lt;BR&gt;部署时会清除无用的SATA驱动，并在进入系统后清除多余的驱动。&amp;nbsp; &lt;BR&gt;清除多余驱动的部分采用了YLMF的CleanMS，在此表示特别感谢。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;常见问题解答：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;1.&amp;nbsp;封装时sysprep.exe到100%停住，没有自动封装&amp;nbsp; &lt;BR&gt;可手动辅助操作，Dprep会继续安装&amp;nbsp; &lt;BR&gt;2.&amp;nbsp;提示部署工具与系统不匹配&amp;nbsp; &lt;BR&gt;按ESC退出，再关闭sysprep，选择对应的sysprep.exe。&amp;nbsp; &lt;BR&gt;3.&amp;nbsp;卸载硬件会彻底吗？&amp;nbsp; &lt;BR&gt;卸载硬件包括CPU、芯片组、网卡、声卡、显卡、监视器、&amp;nbsp; &lt;BR&gt;USB、IDE设备，设备管理器中看到的残留实际已经被卸载。&amp;nbsp; &lt;BR&gt;4.&amp;nbsp;封装出错，但提示成功&amp;nbsp; &lt;BR&gt;由于出错时您没有按ESC退出，Dprep忽略了错误继续运行，&amp;nbsp; &lt;BR&gt;并对系统电源进行了更改，这样，如果再次封装可能会死机。&amp;nbsp; &lt;BR&gt;如出现错误，请按ESC退出，您还可以重来，否则就得重新做系统了。&amp;nbsp; &lt;BR&gt;5.&amp;nbsp;想修改sysprep.ini和Dprep.ini&amp;nbsp; &lt;BR&gt;您可以在封装结束后进行修改，请仔细看注释，以免出错。&amp;nbsp; &lt;BR&gt;6.&amp;nbsp;二次封装或多次封装问题&amp;nbsp; &lt;BR&gt;Dprep支持对安装好的Ghost系统进行再次封装及多次封装&amp;nbsp; &lt;BR&gt;不建议对其他工具封装的系统进行二次封装，以免驱动冲突&amp;nbsp; &lt;BR&gt;7.&amp;nbsp;部署分辨率&amp;nbsp; &lt;BR&gt;非二次封装可以设置部署分辨率为800*600*32，如果是二次封装，&amp;nbsp; &lt;BR&gt;可停用显卡，重启设置分辨率，再启用显卡，注意步骤不要缺。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;============================ &lt;BR&gt;&lt;BR&gt;关于不封装及不部署： &lt;BR&gt;&lt;BR&gt;不封装只是不运行sysprep进行封装，其他步骤同。 &lt;BR&gt;未封装的系统不能自动安装驱动，不建议跳过。 &lt;BR&gt;&lt;BR&gt;不部署可以越过最小化安装“请稍候”及“注册组件”， &lt;BR&gt;立即重启后可以直接进入系统，使安装速度大大缩短， &lt;BR&gt;但是这样不能安装驱动，硬件将在第一次进桌面后识别。 &lt;BR&gt;&lt;BR&gt;如非特别需要，不建议越过封装及部署。 &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;历史更新记录：&amp;nbsp; &lt;BR&gt;&lt;BR&gt;07/08/02&amp;nbsp;3.0 &lt;BR&gt;修正2.3之后因校验系统版本引起的提取文件导致hal.dll丢失的问题， &lt;BR&gt;增加自动设置系统失败的三个选项为不选，并设置不写入调试信息， &lt;BR&gt;增加关闭“系统还原”的三项设置功能，可在配置文件中进行设置。 &lt;BR&gt;应大家要求，移动虚拟内存选项默认不更改，需要更改请自行设置。 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;07/07/31&amp;nbsp;2.5 &lt;BR&gt;完善封装WIN2000系统的功能，实际测试封装各种版本均稳定无错。 &lt;BR&gt;由于一些过于精简的系统I386下没有SP(n).cab，将文件合并到driver.cab， &lt;BR&gt;导致提取文件出现变量错误，此次更新已解决，可顺利封装各种精简系统。 &lt;BR&gt;改进了更改IDE的代码，以适应各种语言的系统（繁体、英文系统）。 &lt;BR&gt;卸载硬件更改到了封装之后，增加清除注册表intelppm及ide功能。 &lt;BR&gt;&lt;BR&gt;07/07/26&amp;nbsp;2.4&amp;nbsp; &lt;BR&gt;更改跳过安装的热键为F8，修正第一次进桌面删除文件夹无效的问题， &lt;BR&gt;改写删除autorun病毒的代码，程序将直接读取autorun.inf文件， &lt;BR&gt;根据inf文件内指定的自动运行的病毒进行针对性删除 &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;07/07/16&amp;nbsp;2.3&amp;nbsp; &lt;BR&gt;完善自动更改IDE功能及扩展接口设置，自动清除系统内的LOG、bak、 &lt;BR&gt;recent、IconCache缓存、回收站、系统事件，并隐藏驱动器及系统目录 &lt;BR&gt;&lt;BR&gt;07/07/14&amp;nbsp;2.2&amp;nbsp;发布稳定版本，增加跳过部署功能，修正已知&amp;nbsp; &lt;BR&gt;07/07/12&amp;nbsp;2.1&amp;nbsp;增加填写IP功能，增加手动运行sysprep选项&amp;nbsp; &lt;BR&gt;07/07/10&amp;nbsp;2.0&amp;nbsp;修正外部接口调用问题，增加漂亮的部署进度界面&amp;nbsp; &lt;BR&gt;07/07/07&amp;nbsp;1.0&amp;nbsp;发布第一个版本&amp;nbsp; &lt;BR&gt;&lt;BR&gt;============================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;如果您在使用中发现什么问题或有什么建议，欢迎及时向我们反馈。&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114132_609.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114135_171.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot;&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114137_498.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot;&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114141_952.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot;&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;IMG style=&quot;CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114148_978.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style=&quot;WIDTH: 500px; CURSOR: pointer&quot; onclick=javascript:window.open(this.src); src=&quot;/uploadfiles/2007-08-11/20070811_114151_906.jpg&quot; onload=&quot;javascript:if(this.width&gt;500){this.resized=true;this.style.width=500;}&quot; resized=&quot;true&quot;&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;</description>
       </item>
       <item>
           <title>[安装制作]修改GHOST系统注册表的方法</title>
           <link>http://www.jdxz.com//softinfo/1417.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-11 11:19:35</pubDate>
           <comments></comments>
           <description>提取windows\system32\config
&lt;br&gt;
&lt;br&gt;system文件对应HKEY_LOCAL_MACHINE\SYSTEM
&lt;br&gt;software对应HKEY_LOCAL_MACHINE\SOFTWARE
&lt;br&gt;
&lt;br&gt;在本机中打开注册表&amp;nbsp;定位于HKEY_LOCAL_MACHINE&amp;nbsp;（或root）
&lt;br&gt;
&lt;br&gt;点文件-加载配置单元，随便起个名字，比如“0451”，目的是与其他目录区别，别无意义
&lt;br&gt;
&lt;br&gt;因为你加载的注册表和本机注册表有相同的项，这样加载后就都在0451下
&lt;br&gt;
&lt;br&gt;加载后进行编辑，编辑完毕光标定位在0451
&lt;br&gt;
&lt;br&gt;点文件-卸载配置单元，系统提示是否上载，确定。
&lt;br&gt;
&lt;br&gt;然后将编辑好的注册表文件放回到GHO中。</description>
       </item>
       <item>
           <title>[安装制作]Ghost系统封装教程及封装工具原理</title>
           <link>http://www.jdxz.com//softinfo/1416.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-8-11 11:13:38</pubDate>
           <comments></comments>
           <description>本教程基于MCC硬件抽象HAL(电源模式)原理，系统以XP为例。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;这里将系统封装分为3步：做系统、封装、部署&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;一、做系统&amp;nbsp; &lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;平台不限，但不建议在虚拟机上制作。CPU及主板芯片没有限制，关于intelide和intelppm的不兼容问题，深度白金3in1并没有删除这些注册表，没有反馈因此在AMD机器上蓝屏的现象。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;1、选用免激活的版本安装盘，正常安装系统，打补丁，优化服务&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这里选用深度XP精简版5.7，安装大约需要15-20分钟。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;建议关闭系统还原及自定义通知，关闭远程，关闭共享，关闭休眠&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意声卡要驱动上，否则封装后的系统都不在任务栏显示音量。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行一次windows&amp;nbsp;meida&amp;nbsp;player，避免以后出现向导&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;安装输入法，并在“区域和语言选项”的“高级”中，应用于默认用户账户。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我的文档，如果有需要也可以移动到D盘。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outlook不能保存密码及SQL安装挂起的问题，也可以在这里清理一下相关注册表。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;2、安装需要的软件&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OFFICE安装时要将“第一次使用时安装”的项目完全安装上，否则会以后提示插入光盘。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不建议安装杀毒软件，特别是卡巴斯基，该软件会与某封装工具冲突。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不建议安装虚拟光驱及刻录软件，已知部分软件在封装后失效。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不建议删除windows\Installer下的安装文件，可能会造成部分程序无法卸载。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;3、封装准备&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行“gpedit.msc&quot;打开组策略&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“计算机配置\管理模板\系统”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启用“关闭&amp;nbsp;Windows&amp;nbsp;Update&amp;nbsp;设备驱动程序搜索”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“管理模板/系统/Internet&amp;nbsp;通信管理/Internet&amp;nbsp;通信设置”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启用“关闭&amp;nbsp;Windows&amp;nbsp;Update&amp;nbsp;设备驱动程序搜索”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“用户配置\管理模板\系统”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启用“配置驱动程序搜索位置”&amp;nbsp;（不搜索软盘，光驱，Windows&amp;nbsp;Update）&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“用户配置\管理模板\系统”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;忽略“设备驱动程序的代码签名”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;检查系统属性中的驱动签名是否为忽略，update是否为从不搜索。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;清理Documents&amp;nbsp;and&amp;nbsp;Settings目录，可以清理到10M以下。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\收藏夹，安装软件后经常有链接，清之~&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\SendTo，邮件接收，建议删除&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\Recent，历史记录，现在删了以后还得删&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\Local&amp;nbsp;Settings\Temp，临时文件，能删的全删&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\Local&amp;nbsp;Settings\Application&amp;nbsp;Data下的图标缓存IconCache.db，约5-10M&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前账户\桌面，建议将所有图标移动到All&amp;nbsp;Users\桌面&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;看下控制面板里的添加删除程序，有没有流氓软件，有就干掉，当然，除非你有特殊目的。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;二、封装&amp;nbsp; &lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;1、更改&amp;nbsp;IDE&amp;nbsp;控制器及电源&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在设备管理器中更新驱动&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从列表或指定位置安装&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不要搜索，我要自己选择要安装的驱动程序&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDE更改为“标准双通道&amp;nbsp;PCI&amp;nbsp;IDE&amp;nbsp;控制器”，电源更改为“Standard&amp;nbsp;PC”&amp;nbsp; &lt;BR&gt;&lt;BR&gt;2、提取检测电源需要的相关文件&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WIN2000在SP4.CAB／WINDOWS&amp;nbsp;XP&amp;nbsp;SP2在SP2.CAB／WINDOWS&amp;nbsp;2003在SP1.CAB中&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halacpi.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halapic.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halmps.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halaacpi.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;halmacpi.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hal.dll　　　　　→并更名为halstnd.dll&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ntkrnlmp.exe&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ntkrnlpa.exe&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ntkrpamp.exe&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ntoskrnl.exe　　&amp;nbsp;→并更名为ntkrnlup.exe&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将上述文件拷贝到系统SYSTEM32目录&amp;nbsp; &lt;BR&gt;&lt;BR&gt;3、添加inf文件&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将以下代码保存为dtecthal.inf并拷贝到\WINDOWS\INF\，2000为\WINNT\INF\&amp;nbsp; &lt;BR&gt;&lt;BR&gt;[Version]&amp;nbsp; &lt;BR&gt;signature=&quot;$Windows&amp;nbsp;NT$&quot;&amp;nbsp; &lt;BR&gt;DriverVer=07/01/2001&amp;nbsp; &lt;BR&gt;[hal]&amp;nbsp; &lt;BR&gt;MPS_MP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halmps.dll&amp;nbsp; &lt;BR&gt;MPS_UP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halapic.dll&amp;nbsp; &lt;BR&gt;E_ISA_UP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halstnd.dll&amp;nbsp; &lt;BR&gt;ACPIPIC_UP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halacpi.dll&amp;nbsp; &lt;BR&gt;ACPIAPIC_UP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halaacpi.dll&amp;nbsp; &lt;BR&gt;ACPIAPIC_MP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;halmacpi.dll&amp;nbsp; &lt;BR&gt;&lt;BR&gt;[ACPIOptions]&amp;nbsp; &lt;BR&gt;ACPIEnable&amp;nbsp;=&amp;nbsp;2&amp;nbsp; &lt;BR&gt;ACPIBiosDate&amp;nbsp;=&amp;nbsp;01,01,1999&amp;nbsp; &lt;BR&gt;&lt;BR&gt;4、引导&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;修改boot.ini，加上&amp;nbsp;/DETECTHAL参数，使系统启动时检测电源&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意将原boot.ini备份，并在部署后还原&amp;nbsp; &lt;BR&gt;&lt;BR&gt;[boot&amp;nbsp;loader]&amp;nbsp; &lt;BR&gt;timeout=3&amp;nbsp; &lt;BR&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&amp;nbsp; &lt;BR&gt;[operating&amp;nbsp;systems]&amp;nbsp; &lt;BR&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&quot;Microsoft&amp;nbsp;Windows&amp;nbsp;XP&amp;nbsp;Professional&quot;&amp;nbsp;/noexecute=optin&amp;nbsp;/fastdetect&amp;nbsp;/detecthal&amp;nbsp; &lt;BR&gt;C:\GHLDR=一键GHOST&amp;nbsp;v11.0&amp;nbsp;Build&amp;nbsp;070707&amp;nbsp; &lt;BR&gt;&lt;BR&gt;5、NTLDR&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引导文件，将LONGHORN版本的NTLDR放到C盘下&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意将原NTLDR备份，并在部署后还原&amp;nbsp; &lt;BR&gt;&lt;BR&gt;6、封装&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将sysprep.exe，setupcl.exe，及配置好的sysprep.inf放到c:\sysprep&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行sysprep，“使用最小化安装”、关机模式“退出”，点击“重新封装”&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;等待大约5-10秒，完成。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;7、删除注册表中本地连接、电源相关&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;搜索“本地连接”，删除上级节点，可避免安装到其他机器出现“本地连接2”&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;删除电源相关的注册表键：&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKLM\SYSTEM\CurrentControlSet\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKLM\SYSTEM\CurrentControlSet001\Enum\ACPI_HAL&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKLM\SYSTEM\CurrentControlSet001\Enum\Root\ACPI_HAL&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果有002和003也删除，删除时先右点权限，赋予完全控制权限，否则无法删除。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意删除电源的注册表必须在封装后操作，否则运行sysprep时会死机。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;另外封装后切勿运行windows优化大师，运行后死机。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;8、设置好部署需要调用的文件，如注册组件时运行的程序，可写在注册表runonce。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;系统启动菜单的时间是在注册组件前恢复为默认的30秒的&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所以也可以在这里更改回原来的boot.ini及ntldr&amp;nbsp; &lt;BR&gt;&lt;BR&gt;9、卸载驱动&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;很多文章讲求顺序，但是实际中并没发现不按顺序会怎样。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;卸载显示器、显卡、声卡、网卡、USB。都不卸载也不会有问题。&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所谓的“幽灵硬件”就是指系统中母机残留的硬件信息，不要紧的。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;10、最后的检查及清理&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;清除windows下的lastgood&amp;nbsp;（最后一次正确的配置）&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;清除windows下的Prefetch&amp;nbsp;（程序缓存）&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\Local&amp;nbsp;Settings\Application&amp;nbsp;Data\IconCache.db&amp;nbsp;看是不是又出来了，有就删除&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;windows及C盘，点左面的“隐藏此文件夹内容”，文件夹选项中恢复默认&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;任务栏属性，清除开始菜单及最近文档的列表&amp;nbsp; &lt;BR&gt;&lt;BR&gt;如果要备份DllCache，使用相关工具在任何时候运行都可以。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;以上是手动封装的过程，中间无需重启，如果是工具辅助封装，基本可做到完全自动化。&amp;nbsp; &lt;BR&gt;封装工具已知的有ASR、S&amp;amp;R&amp;amp;S，MSDP，YLMF，创辉，自由天空，PreTooler，&amp;nbsp; &lt;BR&gt;当然还有小兵的Dprep，另外于安的工具应该属于S&amp;amp;R&amp;amp;S辅助扩展。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;这里讲原理，不讲使用。以我自己的封装工具为例吧&amp;nbsp;：P&amp;nbsp; &lt;BR&gt;&lt;BR&gt;工具集成了sysprep.exe及配置好的自动应答文件，并根据当前系统XP/2K/03进行释放，&amp;nbsp; &lt;BR&gt;运行后使用devcon.exe来更新及卸载硬件驱动，从I386下提取判断电源需要的文件，&amp;nbsp; &lt;BR&gt;修改boot.ini并替换新的ntldr，调用sysprep完成封装，并在封装后清理系统及注册表。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;封装到此为止，可以重启制作GHO镜像了，注意现在boot菜单时间是0。&amp;nbsp; &lt;BR&gt;可以使用光盘引导，推荐一键GHOST，可选择最大压缩。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;三、部署&amp;nbsp; &lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;封装工具一般都在注册表cmdline处接入自己的部署界面，再间接调用setup&amp;nbsp; &lt;BR&gt;使用工具封装，扩展接口可以在部署前调用外部程序，如驱动选择工具及dllcache恢复。&amp;nbsp; &lt;BR&gt;开始安装的过程也是检测硬件的过程，所以驱动如果是压缩包，要在安装前释放完毕。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;封装工具调用的批处理，一般都是不显示窗口的，如果手动封装，可用VBS来调用批处理。&amp;nbsp; &lt;BR&gt;如果封装工具不支持恢复菜单选择时间，或是手动封装，可在注册组件处还原boot.ini及ntldr&amp;nbsp; &lt;BR&gt;&lt;BR&gt;进入桌面后，封装工具仍可以发挥作用，如填写IP，调用程序，删除文件，删除目录&amp;nbsp; &lt;BR&gt;对于手动封装，这些可以通过批处理来完成。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;另外恢复dllcache也可以在进入桌面后运行。 &lt;BR&gt;&lt;BR&gt;不建议在第一次进入桌面时调用太多的程序。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;================================&amp;nbsp; &lt;BR&gt;&lt;BR&gt;所有教程其实都大同小异，我这里只是详细提了些细节问题，算做给大家参考。 &lt;BR&gt;&lt;BR&gt;希望大家都能做出自己的封装作品，当然，选择一款好的封装工具也很重要：） &lt;BR&gt;&lt;BR&gt;封装过程并无死规矩，要灵活运用，我封装的时候经常是一边放音乐一边封装 &lt;BR&gt;&lt;BR&gt;直到声卡被卸载。。。&amp;nbsp;：（</description>
       </item>
       <item>
           <title>[安装制作]自己制作ghost版xp系统</title>
           <link>http://www.jdxz.com//softinfo/1286.html</link>
           <author>金电网</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-4-18 3:25:35</pubDate>
           <comments></comments>
           <description>自己制作ghost版xp系统&amp;nbsp; &lt;BR&gt;一、XP系统的安装优化&amp;nbsp; &lt;BR&gt;先在C盘中安装好XP系统并且安装常用软件到系统盘（c:\program&amp;nbsp;file\目录下，如OFFICE2003等，媒体播放程序，压缩软件等）,（一定要用C盘安装XP，不能安装到其他分区，除非你是整个硬盘GHOST）这时我们会发现，装好的系统盘即使不装任何的应用程序几乎就有近1.5G的空间，这时即使是GHOST最大克隆压缩，一个XP系统就有755M大小，一张光盘刻不下，这样实用性不大！因为XP系统装完之后系统里有许多我们根本用不到的东东，为了节约空间以利刻录，于是我们就要进行优化，（当然了，如果你每次给别人装系统都是带硬盘去，那就没不用优化文件节约空间了--推荐大家用硬盘刻隆）。优化时，我们主要删除一些备份文件和说明文件即可。我们先关闭电源管理的休眠功能！点桌面右键--属性--屏幕保护---电源--高级。这时在C盘根目录下的页面文件hiberfil.sys会自动删除，大小为你的内存容量，如果你是1G的内存，那这个文件大小就是1G！&amp;nbsp; &lt;BR&gt;接着关闭系统还原和自动在线更新功能，点我的电脑---属性---系统还原和自动更新。接着删除备用的动态链接库（dll文件）用SFC命令可以把c:\windows\system\dellcache目录内的文件予以删除以释放空间。删除全部文件的命&amp;nbsp; &lt;BR&gt;令是sfc.exe/purgecache(sfc.exe/?查看命令参数的意义)，&amp;nbsp;也可以手工删除！约300MB。至此，XP减肥大至完成。&amp;nbsp; &lt;BR&gt;（提示，减肥只是为了方便GHSOT的光盘刻录，一般如果是用硬盘克隆的用户则不用减肥，并特别注意，要在应用程序都安装完成之后再减肥，）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　&amp;nbsp; &lt;BR&gt;三.删除XP系统原有驱动，可以进行克隆！&amp;nbsp; &lt;BR&gt;万能克隆有两种方法，一种是删除驱动直接克隆，一种是完全重新封装！&amp;nbsp; &lt;BR&gt;目前网上流传的好几个版XP万能克隆都删除驱动直接克隆！，而完全重新封装，是在删除驱动重之后，再进行重新封装！（微软官方就是用完全重新封装法）&amp;nbsp; &lt;BR&gt;我们就一步步开始操作！&amp;nbsp; &lt;BR&gt;1.打开设备管理器（点我的电脑---属性---硬件--设备管理器）&amp;nbsp; &lt;BR&gt;我们先卸载和更改里面的驱动：注意是有顺序的！！&amp;nbsp; &lt;BR&gt;先卸载网络适配器，和通用串行总线控制器，和声音，视频游戏控制器，监视器，显示卡，卸载时按右键，点卸载就行了。系统提示你要重新启动，都按否，不启动！！（卸载显卡是为了防止GHOST到别的机上可能会出现的蓝屏现象）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;2.接下去，点Advanced&amp;nbsp;Configuration&amp;nbsp;Power&amp;nbsp;Interface(ACPI)右键，点更新驱动程序，弹出更新向导-----，点从列表或指定位置安装（高级）------点，不要搜索，我要自己选择要安装的程序，并更改成Standard&amp;nbsp;PC，点确定之后，电脑也会提示你重新启动，按否，不启动！（提示：现在大多数的电脑一般都是Advanced&amp;nbsp;Configuration&amp;nbsp; &lt;BR&gt;Power&amp;nbsp;Interface(ACPI)：（高级电源管理）&amp;nbsp;，则这一步其实可以不用做！更改的原因是：如果这里不更改，则新机中如果不是同类型的ACPI，（如现在的新主板显示为acpi&amp;nbsp;uniprocessor&amp;nbsp;pc！）则你新克隆的机上其他问题倒是没有，就是无法实现电脑软关机！&amp;nbsp; &lt;BR&gt;所以，在GHOST到新机上后，将Standard&amp;nbsp;PC重新改回你相应的电源管理模式就行了，这也是目前网上流传的XP万能GHSOT都会提醒你做这一步操作的说明”。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;3.最后，一定要更改&amp;nbsp;IDE&amp;nbsp;ATA/ATAPI控制器，&amp;nbsp;这一步就是XP系统万能GHOST的主要步骤所在！！这步不做，则GHOST到别的机器里根本无法启动，电脑会不断重启！！&amp;nbsp;因此为了适应现在各种不同的主板，（如Inter&amp;nbsp;主板，VIA主板，SIS主板）则必须将你本机的IDE&amp;nbsp;控制器改成&amp;nbsp;标准的双通道&amp;nbsp;PCI&amp;nbsp;IDE控制器！点(本机是Intel(r)82801AA&amp;nbsp;Bus&amp;nbsp;Master&amp;nbsp;IDE&amp;nbsp;Controller-各主板不同)右键，点更新驱动程序，弹出更新向导-----，点从列表或指定位置安装（高级）------点，不要搜索，我要自己选择要安装的程序，并更改成标准的双通道&amp;nbsp;PCI&amp;nbsp;IDE控制器，点确定之后，电脑也会提示你重新启动。这时候点确定之后直接关机！！&amp;nbsp; &lt;BR&gt;　&amp;nbsp; &lt;BR&gt;（注意，至此，删除驱动已完成，这时候如果要克隆已经可以，在电脑关机之后，将硬盘接到别的电脑，或者本机电脑用光盘开机之后，将C盘内容GHSOT&amp;nbsp;到其他分区就行了！！）&amp;nbsp; &lt;BR&gt;现在网上所流传的几个2000和XP的万能克隆一般都是这样做的！！&amp;nbsp; &lt;BR&gt;但是，大家也明显地看出来，虽然XP几乎支持目前所有的硬件！虽然XP系统在另一台机上开机之后会按另一台机的硬件自行安装驱动程序，但这样做法感觉怎么都有点勉強！！在第一台母机上所留下的一些驱动可能也在强迫工作着，于是系统不稳定，或蓝屏死机现象则可能发生！！&amp;nbsp; &lt;BR&gt;为了更稳定，更标准地让系统自行安装电脑硬件的驱动程序！这时候，我们想到了微软企业部署工具包里的Sysprep.exe--系统重新封装工具。我们就是希望系统在新克隆的电脑中自行完整地再装一次所需的驱动，而不是将就地用母机的驱动）（说白了，电脑系统的安装过程，就是让电脑找到并工作于当前硬件驱动的过程）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;四、创建自动应答文件，系统重新封装！&amp;nbsp; &lt;BR&gt;系统重新封装工具在Windows&amp;nbsp;xp&amp;nbsp;安装光盘中都已自带！位置是安装光盘的(X:\SUPPORT\TOOLS\DEPLOY.CAB)文件。接下去我们一步步开始使用这个工具；我们用先在&amp;nbsp;C:盘根目录下建议一个名为Sysprep&amp;nbsp;的文件夹,并将DEPLOY.CAB压缩包文件用Winrar&amp;nbsp;解压缩到&amp;nbsp;c:\sysprep&amp;nbsp;。&amp;nbsp; &lt;BR&gt;其实我们用到的只有3个文件，但多几个也没关系！！因为这个目录里和目录里的文件在系统第一次启动之后会自动删除，并不用我们操心！&amp;nbsp; &lt;BR&gt;1.&amp;nbsp;创建系统自动应答文件！&amp;nbsp; &lt;BR&gt;玩过系统无人安装的同志，我想这里都不陌生！！但新手也许会问“为何要创建这个文件！”其实，电脑系统无论是进行工厂模式安装，还是进行重新封装，都会要求用户输入一些必要的内容，如用户名，电脑名，安装序列号等，但是有一个很严重的问题，就是在新机GHOST克隆安装中，需要我们输入这些信息时，系统还未找到键盘鼠标的驱动，键盘鼠标假死，这时就必须让系统进行自动应答安装。否则安装肯定不成功！！&amp;nbsp; &lt;BR&gt;点击C:\sysprep\setupmgr.exe&amp;nbsp;文件，&amp;nbsp; &lt;BR&gt;点下一步创建新文件！&amp;nbsp; &lt;BR&gt;点下一步：选择Sysprep安装，&amp;nbsp; &lt;BR&gt;点下一步，这里根据不同系统选择，我们是&amp;nbsp;XP专业版，选第二个！（当然了，如果你要做Windows&amp;nbsp;2003系统，这里就根据你的系统选择）&amp;nbsp; &lt;BR&gt;点下一步，这里一定要选完全自动安装，否则吃亏的是自己！&amp;nbsp; &lt;BR&gt;点下一步，就来到这个安装管理界面！！一看就明白，这些内容就是我们安装XP需要填写的内容，自动安装的好处就是，我们先输入，安装的时候就不用输入了！！&amp;nbsp; &lt;BR&gt;这里我们，只要输入必要的几项内容需要输入，其他的全部直接按下一步就行了！产品密钥当然是需要的！计算机名也是需要的，不然自动产生的名字一般都很难看的！管理员密码可以不输，（当然最好是不输，别人需要的时候别人会去改的）。语言这里一定要选择简体中文。其他内容都不用输入，也不用选择，下一步就行了。&amp;nbsp; &lt;BR&gt;　&amp;nbsp; &lt;BR&gt;点确定和完成，就成功地创建了全自动安装的应答文件。（并且，这个文件的文件名一定要&amp;nbsp;sysprep.inf,所在目录一定要在c:\sysprep目录下）&amp;nbsp; &lt;BR&gt;&lt;BR&gt;特别提示：c:\sysprep&amp;nbsp;这个目录里不要放其他的东东，因为这个文件夹会在系统第一次启动应答安装完成之后，自动删除这个文件夹和这个文件夹里的所有的东东。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;2.系统重新封装&amp;nbsp; &lt;BR&gt;现在要做的就是最后的一步，系统封装，点击c:\sysprep\sysprep.exe，在出现的画面点“确定”，在出现的画面中，第一个按钮的（工厂）和第二个按钮的（审核）我们一般很少用，我们要用的就是重新封装！！在选项中，还有4个选项！！&amp;nbsp; &lt;BR&gt;其中，第一项（不重置激活的宽限期）和第三项的（不重新产生安全标识符）都是XP以上系统专用，也就是正版用户激活用的，如果你使用的是VOL版，于是这两项其实选与不选无所谓，对GHOST克隆后的系统在使用上都无影响！&amp;nbsp; &lt;BR&gt;第二项的（使用最小化安装）既所谓的&amp;nbsp;PNP&amp;nbsp;安装，好象也叫无残留驱动安装，这也正是我们需要的，因此这项一定要选上。&amp;nbsp; &lt;BR&gt;第四项的（检测非即插即用硬件），这一选项不用选上，因为即使有非即插即用的古董级硬件，我们在系统安装好之后再安装驱动也不迟！！&amp;nbsp; &lt;BR&gt;做了这么长时间的准备工作，我们终于可以重新封装系统了！点击&amp;nbsp;重新封装按钮，大约半分钟过后，电脑开始自动关机。&amp;nbsp; &lt;BR&gt;关机之后，你的C盘里的XP系统就是一个完全重新封装的干净的&amp;nbsp;Windows&amp;nbsp;XP“母系统&amp;nbsp;盘”此时，电脑切&amp;nbsp;不可重新启动，可以用工具光盘启动，或将你的硬盘拆下来之后，接到别的电脑里，用最新版的GHOST&amp;nbsp;8.0版，将你此硬盘C盘分区克隆成一个GHOST文件，&amp;nbsp; &lt;BR&gt;此GHO文件就是Windows&amp;nbsp;XP&amp;nbsp;的万能克隆。</description>
       </item>
       <item>
           <title>[安装制作]万能WinXP Ghost镜像制作指南</title>
           <link>http://www.jdxz.com//softinfo/1260.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>安装制作</category>
           <pubDate>2007-3-25 22:14:05</pubDate>
           <comments></comments>
           <description>重装系统可不是一件好玩的事情：首先得端坐在电脑桌前老老实实地回答windows安装程序提出的问题，安装好了呢，也不能闲着，还得安装驱动程序、应用程序……粗略佑计，没有半天拿不下来！可能有朋友会说，用Ghost，既快又方便，不出五分钟，系统就恢复了，不过那只是本机备份，如果拿到别人的机器上去恢复，肯定会“水土不服”，道理很简单：硬件、系统、网络的配置不可能都千篇一律……不过看完本文以后，你就可以轻松打造出一把万能钥匙了，随便什么机器，都可以轻松采用Ghost恢复安装的方法，10多分钟就能搞Windows&amp;nbsp;XP的安装！ &lt;BR&gt;&lt;BR&gt;　　一、做好准备工作 &lt;BR&gt;&lt;BR&gt;　　安装好Windows&amp;nbsp;XP并且利用Windows&amp;nbsp;Update升级最新的系统补丁（包括service&amp;nbsp;Pack&amp;nbsp;l和其他最新的Hot&amp;nbsp;fix），为了减少体积，NET&amp;nbsp;Framework可以不安装，这样可以节省20多m的空间。安装DirectX9.0b、wmp9.0、ms&amp;nbsp;java、GB18030支持等，最好重新启动一下系统。同时安装好所需的应用程序，不过不要贪多，因为将应用程序安装在&amp;nbsp;C&amp;nbsp;盘里并不是值得推荐的做法，同时会造成Ghost映像文件的容量过大。如果你为了携带方便想要把GHOST文件刻录在一张标准的700MCD-R上，那就需要你把C盘文件控制在1.3GB左右。不论你装多少软件，但必须是小于1.3GB。如果你有移动硬盘的话.................. &lt;BR&gt;&lt;BR&gt;　　二、安装常用软件 &lt;BR&gt;&lt;BR&gt;　　安装常用应用软件（裸版可以直接跳过这一步）,个人推荐以下软件: &lt;BR&gt;　　QQ2004艺风去广告显IP版。 &lt;BR&gt;　　Winamp5.X汉化版或foobar &lt;BR&gt;　　MSN&amp;nbsp;MESSENGER&amp;nbsp;去广告多用户补丁 &lt;BR&gt;　　WINRAR3.X最新汉化注册版 &lt;BR&gt;　　Flashget国际注册版 &lt;BR&gt;　　Flashfxp注册版 &lt;BR&gt;　　媒体播放器经典版最新版本或realone&amp;nbsp;plus版 &lt;BR&gt;　　MYIE2或其他外壳浏览器 &lt;BR&gt;　　常用输入法但不要太大空间有限啊 &lt;BR&gt;　　可升级的杀毒软件 &lt;BR&gt;　　比特精灵2.5版 &lt;BR&gt;　　注：不宜安装Daemon&amp;nbsp;tools，新的方法封装后会不能使用，因为它作为一个驱动会被删除。所以有驱动（硬件）性质的也不能安装。 &lt;BR&gt;　　另外还要对这些软件做些适当的调整，如flashget、bt等默认下载地址改为d:\download之类的，有时间最好运行一下，检查注册是否完成、并将注册方法放到安装目录，封装后可能变成未注册的就可以用上　　 &lt;BR&gt;&lt;BR&gt;　　三、为Windows&amp;nbsp;XP减肥 &lt;BR&gt;&lt;BR&gt;　　不管是否需要将最后产生的Ghost映像文件刻录到光盘上，都应该对Windows&amp;nbsp;XP进行减肥，以尽可能地减小Ghost映像文件的容量。可以删减的主要项目如下： &lt;BR&gt;&lt;BR&gt;　　1．系统文件保护缓存 &lt;BR&gt;&lt;BR&gt;　　它位于C:\WINDOWS\System32\Dllcache目录下，我们只需在命令提示符窗口中运行“sfe&amp;nbsp;.&amp;nbsp;exe/purgecache”即可将它删除。 &lt;BR&gt;&lt;BR&gt;　　2．清空页面文件 &lt;BR&gt;&lt;BR&gt;　　转移分页文件（虚拟内存），可移到d盘或禁用，反正封装后又会恢复。Ghost8.0会直接屏蔽这个大块头。 &lt;BR&gt;&lt;BR&gt;　　3．关闭系统还原功能 &lt;BR&gt;&lt;BR&gt;　　在打开的“系统属性”对话框中选择“系统还原”选项卡，选中“在所有驱动器上关闭系统还原”前的复选框即可。 &lt;BR&gt;&lt;BR&gt;　　4．禁用休眠，可以节省和内存一样大的空间。 &lt;BR&gt;&lt;BR&gt;　　5.&amp;nbsp;转移IE的临时文件夹（缓存），也放到d:\temp;OE的存储位置改为D:\My&amp;nbsp;Documents\oe； &lt;BR&gt;&lt;BR&gt;　　6.&amp;nbsp;转移我的文档的位置，推荐D:\My&amp;nbsp;Documents &lt;BR&gt;&lt;BR&gt;　　7.&amp;nbsp;可选卸载不需要的windows组件，在运行中输入“%systemroot%/inf/sysoc.inf”，&amp;nbsp;打开这个文件后在记事本的“编辑”菜单下点击“替换”，然后在“查找内容”中输入“hide”（不包括引号），然后点击右侧的“全部替换”按钮，之后保存文件并关闭。重新打开控制面板中的添加删除程序，然后点击“添加删除Windows组件”，现在可以直接卸载很多以前并不允许卸载的组件了。请大家谨慎使用; &lt;BR&gt;&lt;BR&gt;　　８.关闭内存转储。在“系统属性”对话框的“高级”选项卡下，点击“启动和故障恢复”按钮，然后在“写入调试信息”下拉菜单中选择“无”。并且你可以搜索所有的“*.dmp”文件并删除它们。 &lt;BR&gt;　　 &lt;BR&gt;　　９.在运行中输入“drwtsn32”并回车，打开华生医生工具，在这里取消对“转储全部线程上下文”、“附加到现有日志文件”和“创建故障转储文件”这三项的选择 &lt;BR&gt;&lt;BR&gt;　　１０.删除大的中文字体。一般保留宋体（含18030的那种）、黑体、仿宋体就可以了。 &lt;BR&gt;&lt;BR&gt;　　我们还可以采用其他的如删除帮助文档、删除不需要的输人法、字体文件等常规“减肥”方法来进一步减小Windows&amp;nbsp;XP所在分区的大小 &lt;BR&gt;&lt;BR&gt;　　11.&amp;nbsp;禁止windows文件保护。从注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&amp;nbsp;NTCurrent\Version\Winlogon，修改“SFCDisable”键值为“FFFFFF9D”，如果需要重新启用该功能，重新设置为“0”就可以了。 &lt;BR&gt;&lt;BR&gt;　　12.&amp;nbsp;删除帮助文件。直接删除Windows目录下的“Help”文件夹，不过有几个最好保留：agt0407.hlp这种数字格式的，不然封装后启动可能要源光盘，反正只有几k留着。建议水平一般的朋友还是不动为妙。 &lt;BR&gt;&lt;BR&gt;　　13.&amp;nbsp;多余的输入法。这个不能完全删除，不然封装后会提示插入源光盘！除了中文输入法，Windows&amp;nbsp;XP中还带有日文和韩文等输入法，这对我们当然没什么用处，也可以在“c:\windows\ime”文件夹下选择性删除除了“CHSIME”和“SHARED”之外的其他文件夹中的内容。结果如图： &lt;BR&gt;尤其imjp8_1和imkr6_1需要保留文件夹和部分dll文件，如果不是很大就尽量保留。删除ime后从80多m减少到2.36m就可以了。 &lt;BR&gt;　　C:\windows\ime保留文件列表. &lt;BR&gt;　　│&amp;nbsp;mscandui.dll &lt;BR&gt;　　│&amp;nbsp;SOFTKBD.DLL &lt;BR&gt;　　│&amp;nbsp;SPGRMR.dll &lt;BR&gt;　　│&amp;nbsp;SPTIP.dll &lt;BR&gt;　　│ &lt;BR&gt;　　├─CHSIME &lt;BR&gt;　　│&amp;nbsp;└─APPLETS &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PINTLCSA.DLL &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PINTLCSD.DIC &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PINTLCSD.DLL &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PINTLCSK.DIC &lt;BR&gt;　　│ &lt;BR&gt;　　├─CHTIME &lt;BR&gt;　　│&amp;nbsp;└─Applets &lt;BR&gt;　　├─imejp &lt;BR&gt;　　│&amp;nbsp;└─applets &lt;BR&gt;　　├─imejp98 &lt;BR&gt;　　├─IMJP8_1 &lt;BR&gt;　　│&amp;nbsp;└─APPLETS &lt;BR&gt;　　├─IMKR6_1 &lt;BR&gt;　　│&amp;nbsp;├─Applets &lt;BR&gt;　　│&amp;nbsp;└─Dicts &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hanja.lex &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hanjadic.dll &lt;BR&gt;　　│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imekr.lex &lt;BR&gt;　　│ &lt;BR&gt;　　└─SHARED &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　│&amp;nbsp;imepaden.hlp &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　│&amp;nbsp;imepadsm.dll &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　│&amp;nbsp;imepadsv.exe &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　│&amp;nbsp;imlang.dll &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　&amp;nbsp;│ &lt;BR&gt;&amp;nbsp;&amp;nbsp;　　└─RES &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;　　PADRS404.DLL &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padrs411.dll &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padrs412.dll &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padrs804.dll &lt;BR&gt;&lt;BR&gt;　　14.&amp;nbsp;可选删除Service&amp;nbsp;Pack备份文件。Service&amp;nbsp;Pack是Windows的大补丁文件，在安装Service&amp;nbsp;Pack后硬盘上会占用一部分空间保存备份出来的系统文件；可删除windows下“ServicePackFiles”文件夹。 &lt;BR&gt;&lt;BR&gt;　　15.&amp;nbsp;删除所有windows下$NtUninstallQ******$”（******是一个数字）文件； &lt;BR&gt;&lt;BR&gt;　　16.&amp;nbsp;可选删除Driver&amp;nbsp;Cache/i386”文件夹下的除了Driver.cab和sp1.cab外所有文件。千万别删除这两个，否这封装后的系统认识驱动会有问题。 &lt;BR&gt;&lt;BR&gt;　　17.&amp;nbsp;删除c:\windows\cursors\&amp;nbsp;，这个文件夹中包含了所有的鼠标指针； &lt;BR&gt;&lt;BR&gt;　　18.&amp;nbsp;删除c:\windows\srchasst&amp;nbsp;，这个文件夹中保存了Windows&amp;nbsp;XP的搜索助理，也就是你搜索文件时出现的小狗或者其他什么人物造型。你可以直接删除这个文件夹，这样你将会使用Windows&amp;nbsp;2000模式的经典搜索方式；建议删除！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　19.&amp;nbsp;可选清理C:\WINDOWS\Web\Wallpaper中的桌面，可以自己换个喜欢的。如果想更深入，就删除屏幕保护，C:\WINDOWS\system32\*.scr &lt;BR&gt;&lt;BR&gt;　　20.删除C:\windows\system32\oobe——适用企业版，零售版或者OEM版，那最好不要动它。 &lt;BR&gt;　　四、为Windows&amp;nbsp;XP做优化 &lt;BR&gt;&lt;BR&gt;　　WinXP的启动会有许多影响速度的功能，尽管ms说已经作最优化处理过，但对我们来说还是有许多可定制之处。我一般是这样来做的。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　1、修改注册表的run键，取消那几个不常用的东西，比如Windows&amp;nbsp;Messenger&amp;nbsp;。启用注册表管理器：开始→运行→Regedit→找到“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\MSMSGS”&amp;nbsp;/BACKGROUND&amp;nbsp;这个键值，右键→删除，世界清静多了，顺便把那几个什么cfmon的都干掉吧。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　2、修改注册表来减少预读取，减少进度条等待时间，效果是进度条跑一圈就进入登录画面了，开始→运行→regedit启动注册表编辑器，找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session&amp;nbsp;Manager\Memory&amp;nbsp;Management\PrefetchParameters，&amp;nbsp;有一个键EnablePrefetcher把它的数值改为“1”就可以了。另外不常更换硬件的朋友可以在系统属性中把总线设备上面的设备类型设置为none（无）。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　3、关闭系统属性中的特效，这可是简单有效的提速良方。点击开始→控制面板→系统→高级→性能→设置→在视觉效果中，设置为调整为最佳性能→确定即可。这样桌面就会和win2000很相似的，我还是挺喜欢XP的蓝色窗口，所以在“在窗口和按钮上使用视觉样式”打上勾，这样既能看到漂亮的蓝色界面，又可以加快速度。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　4、我用Windows&amp;nbsp;commadner＋Winrar来管理文件，Win&amp;nbsp;XP的ZIP支持对我而言连鸡肋也不如，因为不管我需不需要，开机系统就打开个zip支持，本来就闲少的系统资源又少了一分，点击开始→运行，敲入：“regsvr32&amp;nbsp;/u&amp;nbsp;zipfldr.dll”双引号中间的，然后回车确认即可，成功的标志是出现个提示窗口，内容大致为：zipfldr.dll中的Dll&amp;nbsp;UnrgisterServer成功。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　5、据说XP的一个系统服务Qos，这个调度要占用一定的网络带宽，像我这样的一毛不拔的人是无法忍受的，去掉方法是：开始菜单→运行→键入&amp;nbsp;gpedit.msc&amp;nbsp;，出现“组策略”窗口，&amp;nbsp;展开&amp;nbsp;&quot;管理模板”→“网络”&amp;nbsp;，&amp;nbsp;展开&amp;nbsp;&quot;QoS&amp;nbsp;数据包调度程序&quot;，&amp;nbsp;在右边窗右键单击“限制可保留带宽&quot;&amp;nbsp;，在属性中的“设置”中有“限制可保留带宽&quot;&amp;nbsp;，选择“已禁用”，确定即可。当上述修改完成并应用后，用户在网络连接的属性对话框内的一般属性标签栏中如果能够看到&quot;QoS&amp;nbsp;Packet&amp;nbsp;Scheduler（QoS&amp;nbsp;数据包调度程序）&quot;。说明修改成功，否则说明修改失败，顺便把网络属性中的那个Qos&amp;nbsp;协议也一起干掉（卸载）吧。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　6、快速浏览局域网络的共享&amp;nbsp; &lt;BR&gt;　　通常情况下，Windows&amp;nbsp;XP在连接其它计算机时，会全面检查对方机子上所有预定的任务，这个检查会让你等上30秒钟或更多时间。去掉的方法是开始→运行→Regedit→在注册表中找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current&amp;nbsp;Version\Explorer\RemoteComputer\NameSpace。在此键值下，会有个{D6277990-4C6A-11CF-8D87-00AA0060F5BF}键，把它删掉后，重新启动计算机，Windows&amp;nbsp;XP就不再检查预定任务了，hoho~~~&amp;nbsp;，速度明显提高啦！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　7、关掉调试器Dr.&amp;nbsp;Watson&amp;nbsp; &lt;BR&gt;　　我好像从win95年代开始一次也没用过这东西，可以这样取消：打开册表，找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&amp;nbsp;NT\CurrentVersion\AeDebug子键分支，双击在它下面的Auto键值名称，将其“数值数据”改为0，最后按F5刷新使设置生效，这样就取消它的运行了。沿用这个思路，我们可以把所有具备调试功能的选项取消，比如蓝屏时出现的memory.dmp，在“我的电脑→属性→高级→设置→写入调试信息→选择无”等等。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;　　8、被我终止的服务列表以及相关说明&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　1)alerter&amp;nbsp;错误警报&amp;nbsp; &lt;BR&gt;　　2)automatic&amp;nbsp;updates&amp;nbsp;windows&amp;nbsp;自动更新&amp;nbsp; &lt;BR&gt;　　3)background&amp;nbsp;intelligent&amp;nbsp;transfer&amp;nbsp;service&amp;nbsp;微软说使用空闲的网络带宽传数据&amp;nbsp; &lt;BR&gt;　　4)clipbook&amp;nbsp;与远程电脑来共享剪贴板内容，我看还是免了吧&amp;nbsp; &lt;BR&gt;　　5)Computer&amp;nbsp;browser　说什么要维护网络更新列表&amp;nbsp; &lt;BR&gt;　　6)DHCP&amp;nbsp;client&amp;nbsp;我不需要这东西&amp;nbsp; &lt;BR&gt;　　7)Distributed&amp;nbsp;link&amp;nbsp;tracking&amp;nbsp;client&amp;nbsp;保持局域网连接更新等信息，偶很少用局域网，这东西占用４M左右内存。&amp;nbsp; &lt;BR&gt;　　8)Distributed&amp;nbsp;Transaction&amp;nbsp;coordinator&amp;nbsp;协调xxx，和上面的差不多&amp;nbsp; &lt;BR&gt;　　9)DNS&amp;nbsp;Client&amp;nbsp;我不需要这东西&amp;nbsp; &lt;BR&gt;　　10)Error&amp;nbsp;reporting&amp;nbsp;service&amp;nbsp;错误报告&amp;nbsp; &lt;BR&gt;　　11)Event&amp;nbsp;Log&amp;nbsp;系统日志纪录&amp;nbsp; &lt;BR&gt;　　12)Fast&amp;nbsp;user&amp;nbsp;switching&amp;nbsp;compatibility&amp;nbsp;用户切换&amp;nbsp; &lt;BR&gt;　　13)help&amp;nbsp;and&amp;nbsp;support&amp;nbsp;帮助&amp;nbsp; &lt;BR&gt;　　14)Human&amp;nbsp;interface&amp;nbsp;device&amp;nbsp;access&amp;nbsp;据说是智能设备。。。&amp;nbsp; &lt;BR&gt;　　15)IMAPI&amp;nbsp;CD-burning&amp;nbsp;COM&amp;nbsp;service　偶不用这个刻碟&amp;nbsp; &lt;BR&gt;　　16)Indexing&amp;nbsp;service&amp;nbsp;索引，索引什么呢？&amp;nbsp; &lt;BR&gt;　　17)Internet&amp;nbsp;Connection&amp;nbsp;Firewall(ICF)&amp;nbsp;ICF防火墙&amp;nbsp; &lt;BR&gt;　　18)IPSEC&amp;nbsp;Services&amp;nbsp;这个我不懂，你想知道问Quack去&amp;nbsp; &lt;BR&gt;　　19)Logical&amp;nbsp;Disk&amp;nbsp;manager&amp;nbsp;administrative&amp;nbsp;service&amp;nbsp;配置磁盘&amp;nbsp; &lt;BR&gt;　　20)messenger&amp;nbsp;好像net&amp;nbsp;send&amp;nbsp;等东西用的就是这个功能&amp;nbsp; &lt;BR&gt;　　21)MS&amp;nbsp;software&amp;nbsp;shadow&amp;nbsp;copy&amp;nbsp;provider&amp;nbsp;卷复制备份的&amp;nbsp; &lt;BR&gt;　　22)Net&amp;nbsp;Logon&amp;nbsp;我可不想让黑客远程登录进来，关！&amp;nbsp; &lt;BR&gt;　　23)Netmeeting&amp;nbsp;remote&amp;nbsp;desktop&amp;nbsp;sharing&amp;nbsp;我不用netmeeting&amp;nbsp; &lt;BR&gt;　　24)Network&amp;nbsp;DDE　&amp;nbsp;动态数据交换传输&amp;nbsp; &lt;BR&gt;　　25)Network&amp;nbsp;DDE&amp;nbsp;DSDM　和上面差不多&amp;nbsp; &lt;BR&gt;　　26)Network&amp;nbsp;Location&amp;nbsp;Awareness&amp;nbsp;关，我的机子不作共享&amp;nbsp; &lt;BR&gt;　　27)NTLM&amp;nbsp;Security&amp;nbsp;support&amp;nbsp;provider－telnet　呵呵，关！&amp;nbsp; &lt;BR&gt;　　28)PerFORMance&amp;nbsp;logs&amp;nbsp;and&amp;nbsp;alert&amp;nbsp;将系统状态写日志或发警告&amp;nbsp; &lt;BR&gt;　　29)Portable&amp;nbsp;media&amp;nbsp;serial&amp;nbsp;number&amp;nbsp;关！&amp;nbsp; &lt;BR&gt;　　30)Print&amp;nbsp;Spooler&amp;nbsp;打印机，不幸的是我的机子不连接Print&amp;nbsp;~&amp;nbsp; &lt;BR&gt;　　31)&amp;nbsp;QoS&amp;nbsp;RSVP&amp;nbsp;关！&amp;nbsp; &lt;BR&gt;　　32)Remote&amp;nbsp;desktop&amp;nbsp;help&amp;nbsp;session&amp;nbsp;manager&amp;nbsp;远程帮助服务&amp;nbsp; &lt;BR&gt;　　33)remote&amp;nbsp;Procedure&amp;nbsp;Call&amp;nbsp;LOCATOR&amp;nbsp;管理RPC&amp;nbsp; &lt;BR&gt;　　34)remote&amp;nbsp;registry&amp;nbsp;远程管理注册表&amp;nbsp; &lt;BR&gt;　　35)removable&amp;nbsp;storage　&amp;nbsp; &lt;BR&gt;　　36)routing&amp;nbsp;and&amp;nbsp;remote&amp;nbsp;access&amp;nbsp;我干脆禁用了它&amp;nbsp; &lt;BR&gt;　　37)security&amp;nbsp;accounts&amp;nbsp;manager&amp;nbsp;我的系统只是一个客户系统，不用iis。&amp;nbsp; &lt;BR&gt;　　38)smart&amp;nbsp;card&amp;nbsp; &lt;BR&gt;　　39)smart&amp;nbsp;card&amp;nbsp;helper&amp;nbsp;关！！！&amp;nbsp; &lt;BR&gt;　　40)SSDP&amp;nbsp;Discovery&amp;nbsp;service&amp;nbsp;我用不到这个&amp;nbsp; &lt;BR&gt;　　41)system&amp;nbsp;event&amp;nbsp;notification&amp;nbsp;如果是服务器肯定要记录的&amp;nbsp; &lt;BR&gt;　　42)system&amp;nbsp;restore&amp;nbsp;service&amp;nbsp;系统还原服务&amp;nbsp; &lt;BR&gt;　　43)task&amp;nbsp;scheduler&amp;nbsp;windows&amp;nbsp;计划服务&amp;nbsp; &lt;BR&gt;　　44)Telephony&amp;nbsp;拨号服务，我不拨号还不行吗？&amp;nbsp; &lt;BR&gt;　　45)telnet&amp;nbsp; &lt;BR&gt;　　46)terminal&amp;nbsp;services&amp;nbsp;终端服务&amp;nbsp; &lt;BR&gt;　　47)uninterruptible&amp;nbsp;power&amp;nbsp;supply&amp;nbsp;UPS，我没有呀&amp;nbsp; &lt;BR&gt;　　48)universal&amp;nbsp;plug&amp;nbsp;and&amp;nbsp;play&amp;nbsp;device&amp;nbsp;host&amp;nbsp;太先进了点，用不到&amp;nbsp; &lt;BR&gt;　　49)upload&amp;nbsp;manager&amp;nbsp;关了也能传输文件的&amp;nbsp; &lt;BR&gt;　　50)volume&amp;nbsp;shadow&amp;nbsp;copy&amp;nbsp;又是备份，晕&amp;nbsp; &lt;BR&gt;　　51)webclient&amp;nbsp;没用过&amp;nbsp; &lt;BR&gt;　　52)Windows&amp;nbsp;Installer&amp;nbsp;ＭＳＩ服务，我一直关着。&amp;nbsp; &lt;BR&gt;　　53)windows&amp;nbsp;image&amp;nbsp;acquisition&amp;nbsp;(WIA)&amp;nbsp;数码设备用的&amp;nbsp; &lt;BR&gt;　　54)windows&amp;nbsp;management&amp;nbsp;instrumentation&amp;nbsp;driver&amp;nbsp;extensions&amp;nbsp;关了&amp;nbsp; &lt;BR&gt;　　55)windows&amp;nbsp;time&amp;nbsp;时间服务&amp;nbsp; &lt;BR&gt;　　56)wireless&amp;nbsp;zero&amp;nbsp;configuration&amp;nbsp;无线网络，偶用不到的&amp;nbsp; &lt;BR&gt;　　57)WMI&amp;nbsp;perfromance&amp;nbsp;adapter&amp;nbsp;关！&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　这里面的一些服务是刚开始就是关的，但我忘了，所以只好把现在系统中关闭的服务基本都列了出来。你根据自己的情况酌情处理吧。 &lt;BR&gt;&lt;BR&gt;　　9.关了错误报告，KAO&amp;nbsp;！这东西搞得我像个微软免费的测试员似的：点击控制面板----&amp;gt;系统----&amp;gt;高级----&amp;gt;右下角---&amp;gt;错误报告----&amp;gt;禁用错误汇报——&amp;gt;确定！ &lt;BR&gt;&lt;BR&gt;　　10.关闭计算机时自动结束不响应的任务，注册表：HKEY_CURRENT_USER\Control&amp;nbsp;Panel\Desktop&amp;nbsp;中的“AugoEndTasks”的键值改为“1” &lt;BR&gt;　　 &lt;BR&gt;　　11.关闭自动更新：右键单击“我的电脑”，点击属性，点击“自动更新”，在“通知设置”一栏选择“关闭自动更新。我将手动更新计算机”一项。&amp;nbsp; &lt;BR&gt;&lt;BR&gt;　　12.减少开机磁盘扫描等待时间，开始→运行，键入“chkntfs/t:0”　　五、对驱动程序做手术 &lt;BR&gt;&lt;BR&gt;　　由于我们要制作的是一个万能的Windows&amp;nbsp;XP&amp;nbsp;Ghost文件，目标计算机上的硬件配置和当前计算机的配置肯定不完全相同，因此我们要将当前计算机上的设备驱动程序删除。 &lt;BR&gt;&lt;BR&gt;　　1.&amp;nbsp;删除普通驱动程序 &lt;BR&gt;&lt;BR&gt;　　①&amp;nbsp;在“运行”对话框里输人“devmgrnt.rnsc”并回车，打开“设备管理器”控制台窗口。 &lt;BR&gt;&lt;BR&gt;　　②&amp;nbsp;找到网络适配器，鼠标右键单击其下的网卡设备名称，在弹出菜单上单击“卸载”菜单项。 &lt;BR&gt;&lt;BR&gt;　　③&amp;nbsp;再用类似的方法卸载通用串行总线控制器、视频游戏控制器、显卡、声卡等设备驱动程序。这里要注意的是，如果系统提示需要重新启动，一定不要重启机器，以免系统自作主张，重新安装驱动程序。 &lt;BR&gt;&lt;BR&gt;　　2.&amp;nbsp;更新ACPI属性 &lt;BR&gt;&lt;BR&gt;　　然后我们要把计算机的ACPI属性更改为Standard&amp;nbsp;PC，这是因为如果目标计算机中有不同类型的ACPI，则新克隆的目标计算机就无法实现电脑软关机，并且可能会在第一次启动后崩溃！更改步骤如下： &lt;BR&gt;&lt;BR&gt;　　①&amp;nbsp;在设备管理器控制台窗口用鼠标右键单击“计算机”→“ACPI&amp;nbsp;Uniprocessor&amp;nbsp;PC”，在弹出菜单上单击“更新驱动程序”菜单项； &lt;BR&gt;&lt;BR&gt;　　②&amp;nbsp;在打开的“硬件更新向导”对话框里选中“从列表或指定位置安装（高级）”选项，并单击“下一步”按钮； &lt;BR&gt;&lt;BR&gt;　　③&amp;nbsp;在接下来的页面里选中“不要搜索，我要自己选择要安装的驱动程序”选项，并单击“下一步”按钮； &lt;BR&gt;&lt;BR&gt;　　④&amp;nbsp;然后选择“Standsrd&amp;nbsp;PC”选项，并根据屏幕提示一路Next,&amp;nbsp;只是最后提示是否重新启动时，一定不要重启！ &lt;BR&gt;&lt;BR&gt;　　3.&amp;nbsp;更新IDE控制器属性 &lt;BR&gt;&lt;BR&gt;　　对设备驱动程序的最后一步手术是更改IDE&amp;nbsp;ATA&amp;nbsp;/&amp;nbsp;ATAPI&amp;nbsp;控制器。这一步非常重要，因为大家知道，不同的主板，例如Intel、Nforce&amp;nbsp;2、VIA等主板，其IDE&amp;nbsp;ATA&amp;nbsp;/&amp;nbsp;ATAPI控制器的驱动程序有很大的差别，根本无法通用！ &lt;BR&gt;&lt;BR&gt;　　①&amp;nbsp;在设备管理器控制台窗口用鼠标右键单击IDE&amp;nbsp;ATA&amp;nbsp;/&amp;nbsp;ATAPI控制器、Intel&amp;nbsp;(r)&amp;nbsp;82371&amp;nbsp;AB&amp;nbsp;/&amp;nbsp;EB&amp;nbsp;Bus&amp;nbsp;Master&amp;nbsp;IDE&amp;nbsp;Controller，在弹出菜单上单击“更新驱动程序”菜单项； &lt;BR&gt;&lt;BR&gt;　　②&amp;nbsp;在打开的“硬件更新向导”对话框里选中“从列表或指定位置安装（高级）”选项，并单击“下一步”按钮； &lt;BR&gt;&lt;BR&gt;　　③&amp;nbsp;在接下来的页面里选中“不要搜索，我自己选择要安装的驱动程序”选项，并单击“下一步”按钮； &lt;BR&gt;&lt;BR&gt;　　④&amp;nbsp;然后选择“标准的双通道PCI&amp;nbsp;IDE控制器”选项，并根据屏幕提示一路Next，只是最后提示是否重新启动时，一定不要重启 &lt;BR&gt;&lt;BR&gt;　　六、准备主映像文件 &lt;BR&gt;&lt;BR&gt;　　删除了“母机”上的驱动程序，还不能说已经马到成功。这是因为每一台计算机都有一个惟一的安全标识符(SID:&amp;nbsp;security&amp;nbsp;identifier)，如果直接把磁盘映像复制到其他计算机上，那么其他计算机都有会具有同样的SID，所以需要用Sysprep工具去除“母机”的SID，从而强迫目标计算机产生新的SID。 &lt;BR&gt;&lt;BR&gt;　　1.&amp;nbsp;自动应答文件 &lt;BR&gt;&lt;BR&gt;　　在目标计算机恢复克隆备份时，系统会开始一个Mini-Setup向导过程，该向导会提示我们输人特定的计算机变量，例如管理员密码、计算机名等等。但是由于在克隆备份里去除了驱动程序，所以在这个阶段无法使用键盘、鼠标进行交互。不过我们可以创建一个自动安装应答文件，让这个应答文件自动回复安装程序提出的问题。 &lt;BR&gt;&lt;BR&gt;　　①&amp;nbsp;把Windows&amp;nbsp;XP安装光盘插人光驱，将\SUPPORT\TOOLS\目录下的DEPLOY.CAB文件释放到C:\Sysprep目录； &lt;BR&gt;&lt;BR&gt;　　②&amp;nbsp;然后运行其中的setupmgr.exe文件，在出现选择安装类型界面中选择“Sysprep安装”选项； &lt;BR&gt;&lt;BR&gt;　　③&amp;nbsp;根据屏幕提示填入必要的信息，一直单击“Next”按钮，直至最后进人保存配置文件的对话框，一定要确保最后的安装脚本路径是C:\Sysprep\sysprep.inf。 &lt;BR&gt;&lt;BR&gt;　　2．重新封装 &lt;BR&gt;&lt;BR&gt;　　现在可以利用Sysprep工具去除“母机”的SID，很简单：运行C:\Sysprep目录下的Sysprep.exe程序，然后在打开的窗口中单击“重新封装”按钮。接下来会提示下一次启动时将重新生成SID，单击“确定”按钮，稍等片刻，计算机将会自动关闭。 &lt;BR&gt;&lt;BR&gt;　　七、克隆主映像文件 &lt;BR&gt;&lt;BR&gt;　　计算机关闭之后，我们就可以用Ghost8.0制作GHOST映像了（注：千万不要在XP运行前制作），在设置Ghost映像文件的路径和文件名后选择高级压缩，开始备份。备份结束后，我们就拥有了一个万能的Windows&amp;nbsp;XP映像文件了。</description>
       </item>
</channel>
</rss>


