﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-备忘录-文章分类-其它</title><link>http://www.blogjava.net/103335460/category/34519.html</link><description>记录学习过、研究过、使用过和总结过的内容，以备不时之需</description><language>zh-cn</language><lastBuildDate>Thu, 07 Feb 2013 15:50:37 GMT</lastBuildDate><pubDate>Thu, 07 Feb 2013 15:50:37 GMT</pubDate><ttl>60</ttl><item><title>（原创）RHEL 6.3安装NVIDIA官方驱动</title><link>http://www.blogjava.net/103335460/articles/395197.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Wed, 06 Feb 2013 17:25:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/395197.html</guid><wfw:comment>http://www.blogjava.net/103335460/comments/395197.html</wfw:comment><comments>http://www.blogjava.net/103335460/articles/395197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/103335460/comments/commentRss/395197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/103335460/services/trackbacks/395197.html</trackback:ping><description><![CDATA[一、本地环境：<br /><div>1、显卡：ASUS ENGTX460<br />GPU品牌：NVIDIA<br /><div><div>GPU型号：nVIDIA GeForce GTX 460</div><br />2、显示器：Samsung S24A350H<br /><div>最佳分辨率：1920*1080</div><div>水平刷新率：30 kHz ~ 82 kHz<div>垂直刷新率：55 到 75 赫兹</div></div><br />3、操作系统：Red Hat Enterprise Linux 6.3 (x86)<br /><br />二、安装步骤<br />1、安装Linux系统<br />下载RHEL6.3的ISO文件，刻录成系统光盘后，进行安装，具体安装过程略。<br /><br />2、Linux系统的相关包<br />安装驱动，需要kernel相关包，和一些编译源码的工具包：<br />kernel、kernel-devel、kernel-doc、kernel-headers、gcc\*、glibc\*、glibc-\*<br /><br />3、下载NVIDIA官方驱动<br />登录NVIDIA官方网站http://www.nvidia.com，下载对应的显卡驱动NVIDIA-Linux-x86-310.32.run，<br />本人的情况是：GeForce --&gt; GeForce 400 Series --&gt; GeForce GTX 460 --&gt; Linux 32-bit --&gt; English(US)，当前最新版本是310.32<br /><br />4、关闭Linux的自带驱动<br />REHL6.3默认安装了第三方开源nvidia驱动nouveau，需要通过加入黑名单将其禁用掉，<br />使用vi打开/etc/modprobe.d/blacklist.conf，在内容末尾增加一行：blacklist nouveau<br />保存并退出<br /><br />5、Linux系统initramfs重建<br /><div>使用dracut重新建立initramfs image file:<br /> # mv /boot/initramfs-$(uname -r).img&nbsp; /boot/initramfs-$(uname -r).img.bak<br /> 重新建立 the initramfs file:<br /> # dracut -v /boot/initramfs-$(uname -r).img $(uname -r)<br /><br />6、调整启动模式<br /><div>用vi打开/etc/inittab，修改启动模式为3(文本模式)：id:3:initdefault:<br />修改完毕后保存退出，使用reboot重启</div></div><br />7、安装NVIDIA官方驱动文件：<br /><div>使用root帐号登录（重启后的文本模式）系统，进行/tmp目录（我的NVIDIA-Linux-x86-310.32.run存放在/tmp目录里），执行命令：<br /><div>[root@RHEL-6 tmp]# chmod +x NVIDIA-Linux-x86-310.32.run<br />[root@RHEL-6 tmp]# ./NVIDIA-Linux-x86-310.32.run</div>安装过程中，选择&#8220;Accept&#8221;和&#8220;YES&#8221;后，即可。<br /><br /><div>8、调整启动模式<br /> <div>用vi打开/etc/inittab，修改启动模式为5(X模式)：id:5:initdefault:<br /> 修改完毕后保存退出，使用reboot重启<br /><br />9、判断驱动安装是否成功<br />Linux重启后，登录系统，进入X-window界面，&#8220;系统&#8220;的&#8221;首选项&#8221;中出现&#8220;NVIDIA X Server Settings&#8221;，并且<div>&#8220;系统&#8220;的&#8221;首选项&#8221;中&#8220;桌面效果&#8221;可设置3D加速，表明NVIDIA官方驱动安装成功</div><br /> </div> </div>10、调整分辨率<br /><div>驱动安装成功后，但是（我的）桌面的分辨率极差，并且（在&#8220;首选项&#8221;中的&#8221;NVIDIA X Server Settings&#8220;或&#8220;桌面&#8221;都）不可调。<br />此时，我手动修改/etc/X11/xorg.conf文件，修改后的内容如下：（红色处表示修改）<br />----------------------------------------------------------xorg.conf文件内容开始-----------------------------------------------------<br /><div># nvidia-xconfig: X configuration file generated by nvidia-xconfig<br /># nvidia-xconfig:&nbsp; version 310.32&nbsp; (buildmeister@swio-display-x86-rhel47-09)&nbsp; Mon Jan 14 15:46:49 PST 2013<br /><br />Section "ServerLayout"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Layout0"<br />&nbsp;&nbsp;&nbsp; Screen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; "Screen0"<br />&nbsp;&nbsp;&nbsp; InputDevice&nbsp;&nbsp;&nbsp; "Keyboard0" "CoreKeyboard"<br />&nbsp;&nbsp;&nbsp; InputDevice&nbsp;&nbsp;&nbsp; "Mouse0" "CorePointer"<br />EndSection<br /><br />Section "Files"<br />&nbsp;&nbsp;&nbsp; FontPath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "/usr/share/fonts/default/Type1"<br />EndSection<br /><br />Section "InputDevice"<br />&nbsp;&nbsp;&nbsp; # generated from default<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Mouse0"<br />&nbsp;&nbsp;&nbsp; Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mouse"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Protocol" "auto"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Device" "/dev/input/mice"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Emulate3Buttons" "no"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ZAxisMapping" "4 5"<br />EndSection<br /><br />Section "InputDevice"<br />&nbsp;&nbsp;&nbsp; # generated from data in "/etc/sysconfig/keyboard"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Keyboard0"<br />&nbsp;&nbsp;&nbsp; Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "kbd"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "XkbLayout" "us"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "XkbModel" "pc105"<br />EndSection<br /><br />Section "Monitor"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Monitor0"<br />&nbsp;&nbsp;&nbsp; VendorName&nbsp;&nbsp;&nbsp;&nbsp; "<span style="color: red;">Samsung"</span><br />&nbsp;&nbsp;&nbsp; ModelName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "<span style="color: red;">S24A350H"</span><br />&nbsp;&nbsp;&nbsp; HorizSync&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">30.0 - 82.0</span><br />&nbsp;&nbsp;&nbsp; VertRefresh&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">55.0 - 75.0</span><br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "DPMS"<br />&nbsp;&nbsp;&nbsp; <span style="color: red;">UseModes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Modes0"</span><br />EndSection<br /><br /><span style="color: red;">Section "Modes"</span><br /><span style="color: red;">&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Modes0"&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><br /><span style="color: red;">&nbsp;&nbsp;&nbsp; Modeline&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "1920x1080_60.00"&nbsp; 172.80&nbsp; 1920 2040 2248 2576&nbsp; 1080 1081 1084 1118&nbsp; -HSync +Vsync</span><br /><span style="color: red;">EndSection</span><br /><br />Section "Device"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Device0"<br />&nbsp;&nbsp;&nbsp; Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "nvidia"<br />&nbsp;&nbsp;&nbsp; VendorName&nbsp;&nbsp;&nbsp;&nbsp; "NVIDIA Corporation"<br />EndSection<br /><br />Section "Screen"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp; "Screen0"<br />&nbsp;&nbsp;&nbsp; Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Device0"<br />&nbsp;&nbsp;&nbsp; Monitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Monitor0"<br />&nbsp;&nbsp;&nbsp; DefaultDepth&nbsp;&nbsp;&nbsp; 24<br />&nbsp;&nbsp;&nbsp; SubSection&nbsp;&nbsp;&nbsp;&nbsp; "Display"<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">Viewport 0 0</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Depth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">Modes&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; "1920x1080_60.00"</span><br />&nbsp;&nbsp;&nbsp; EndSubSection<br />EndSection</div><div>----------------------------------------------------------xorg.conf文件内容截止-----------------------------------------------------</div><br />说明：<br />a、Section "Monitor"中，VendorName表示显示器生产商，ModelName表示显示器型号，HorizSync表示水平刷新率，VertRefresh表示垂直刷新率<br /><br /><span>b、</span><span>Section "Modes"</span><span>中的</span><span>Modeline来源于下面这个命令：</span><br /><div>[root@RHEL-6 桌面]# gtf 1920 1080 60</div>这个命令的执行结果如下：<br style="color: #000080;" /><div><span style="color: #000080;">&nbsp; # 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz</span><br style="color: #000080;" /><span style="color: #000080;">&nbsp; Modeline "1920x1080_60.00"&nbsp; 172.80&nbsp; 1920 2040 2248 2576&nbsp; 1080 1081 1084 1118&nbsp; -HSync +Vsync</span><br style="color: #000080;" /><br />gtf具体是什么，可以自己去查查资料</div><span><br />c、Section "Screen"中的</span><span>("1920x1080_60.00"</span><span>)要与上面</span><span>Section "Modes"</span><span>中的</span><span>Modeline</span><span>保持一致。<br /></span><span></span><div></div></div></div><div><br />11、保存文件并重启，待登录后，系统界面已经是1920*1080_60了。</div></div></div><img src ="http://www.blogjava.net/103335460/aggbug/395197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2013-02-07 01:25 <a href="http://www.blogjava.net/103335460/articles/395197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Red Hat Enterprise Linux Server5.5安装VirtualBox(原创)</title><link>http://www.blogjava.net/103335460/articles/346608.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Sat, 19 Mar 2011 12:02:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/346608.html</guid><wfw:comment>http://www.blogjava.net/103335460/comments/346608.html</wfw:comment><comments>http://www.blogjava.net/103335460/articles/346608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/103335460/comments/commentRss/346608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/103335460/services/trackbacks/346608.html</trackback:ping><description><![CDATA[本人Red Hat Enterprise Linux Server5.5系统，安装VirtualBox如下：<br />
<br />
<strong>1、下载VirtualBox</strong><br />
地址：http://www.virtualbox.org/wiki/Linux_Downloads，<br />
下载到应的VirtualBox版本: VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm<br />
<br />
<strong>2、安装gcc</strong><br />
安装顺序如下：<br />
&nbsp;&nbsp;&nbsp; rpm -ivh kernel-headers-2.6.18-164.el5.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-glibc-headers-2.3.4-2.26.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-glibc-2.3.4-2.26.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-libstdc++-33-3.2.3-61.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-libf2c-34-3.4.6-4.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-libgcc-296-2.96-138.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh cpp-4.1.2-46.el5.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh glibc-headers-2.5-42.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh glibc-devel-2.5-42.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh libgomp-4.4.0-6.el5.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh libstdc++-devel-4.1.2-46.el5.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh gcc-4.1.2-46.el5.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-gcc-34-3.4.6-4.i386.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh compat-gcc-34-c++-3.4.6-4.i386.rpm<br />
(Linux系统安装盘里都有)<br />
<br />
<strong>3、安装kernel</strong><br />
确定系统已经安装如下软件包，缺少的则补上<br />
kernel-2.6.18-194.el5.i686.rpm<br />
kernel-debug-2.6.18-194.el5.i686.rpm<br />
kernel-debug-devel-2.6.18-194.el5.i686.rpm<br />
kernel-devel-2.6.18-194.el5.i686.rpm<br />
kernel-doc-2.6.18-194.el5.noarch.rpm<br />
kernel-headers-2.6.18-194.el5.i386.rpm<br />
kernel-PAE-2.6.18-194.el5.i686.rpm<br />
kernel-PAE-devel-2.6.18-194.el5.i686.rpm<br />
kernel-xen-2.6.18-194.el5.i686.rpm<br />
kernel-xen-devel-2.6.18-194.el5.i686.rpm<br />
<br />
<strong>4、安装DKMS</strong><br />
从网络上下载DKMS，对应的版本为dkms-2.0.17.5-1.noarch.rpm，或高点版本。<br />
&nbsp;&nbsp;&nbsp; rpm -ivh --test dkms-2.0.17.5-1.noarch.rpm<br />
&nbsp;&nbsp;&nbsp; rpm -ivh dkms-2.0.17.5-1.noarch.rpm<br />
<br />
<strong>5、安装VirtualBox</strong><br />
执行命令：<br />
&nbsp;&nbsp;&nbsp; rpm -ivh --force VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm <br />
(因为先前kernel和dkms相关软件包不全，安装失败)<br />
执行情况如下：<br />
[root@******** download]# rpm -ivh --force --test VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm <br />
warning: VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm: Header V4 DSA signature: NOKEY, key ID 98ab5139<br />
Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br />
[root@******** download]# rpm -ivh --force VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm <br />
warning: VirtualBox-4.0-4.0.4_70112_rhel5-1.i386.rpm: Header V4 DSA signature: NOKEY, key ID 98ab5139<br />
Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br />
&nbsp;&nbsp; 1:VirtualBox-4.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br />
<br />
Creating group 'vboxusers'. VM users must be member of that group!<br />
<br />
No precompiled module for this kernel found -- trying to build one. Messages<br />
emitted during module compilation will be logged to /var/log/vbox-install.log.<br />
<br />
Stopping VirtualBox kernel modules [确定]<br />
Uninstalling old VirtualBox DKMS kernel modules [确定]<br />
Trying to register the VirtualBox kernel modules using DKMS [确定]<br />
Starting VirtualBox kernel modules [确定]<br />
[root@******** download]#<br />
<br />
<strong>6、使用VirtualBox</strong><br />
略<br />
<br />
<strong>其他</strong><br />
<br />
<strong>1、安装NTFS</strong><br />
RHEL默认只识别win下的vfat，不识别ntfs格式的。如果想要在linux中挂载nffs格式的硬盘方法如下：<br />
(1)下载源码包： http://tuxera.com/opensource/ntfs-3g-2010.10.2.tgz<br />
(2)安装:<br />
&nbsp;&nbsp;&nbsp; tar -zxf ntfs-3g-2010.10.2.tgz<br />
&nbsp;&nbsp;&nbsp; cd ntfs-3g-2010.10.2<br />
&nbsp;&nbsp; ./configure<br />
&nbsp;&nbsp;&nbsp; make &amp;&amp; make install<br />
(3)安装成功，手动挂载ntfs格式硬盘：<br />
&nbsp;&nbsp; mount -t ntfs-3g /dev/sdb1 /mnt/windows<br />
&nbsp;&nbsp; mount.ntfs-3g /dev/sdb1 /mnt/windows<br />
(4)开机自动挂载ntfs格式硬盘：<br />
&nbsp; /dev/sdb1 /mnt/windows ntfs-3g defaults 0 0<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/103335460/aggbug/346608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2011-03-19 20:02 <a href="http://www.blogjava.net/103335460/articles/346608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XP和Linux双系统安装说明</title><link>http://www.blogjava.net/103335460/articles/327900.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Wed, 04 Aug 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/327900.html</guid><description><![CDATA[1. 如Partition Magic(PQMAGIC) 工具等,分配一个主分区(如C盘),其余的均为逻辑分区,细分为D\E\F\G盘.<br />
注意: 主分区C盘,要作为引导分区.<br />
<br />
2.在C盘上全新安装Window XP系统,最好不要使用ghost安装,因为先前安装过双系统,则因为可能因为grup的存在,导致无法进入xp系统.<br />
<br />
3.使用Red hat Linux5.5系统光盘,进行安装时, 在选择分区时,使用自定义分区, 删除D盘, 使用其空间创建三个挂载点: /, /boot, swap.<br />
其中swap大小为(物理内存&lt;=2)&nbsp; ? &nbsp;(物理内存* 2) &nbsp;:&nbsp; ((物理内存-2G) * 1 + 2G * 2).<br />
/boot大小为100-512MB即可,不需设置"强制为主分区"<br />
/的大小为余下空间.<br />
<br />
4.在安装grup时,命名window xp.<br />
<br />
<img src ="http://www.blogjava.net/103335460/aggbug/327900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2010-08-04 10:01 <a href="http://www.blogjava.net/103335460/articles/327900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Install Shield安装程序制作图解（转）</title><link>http://www.blogjava.net/103335460/articles/227901.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Tue, 09 Sep 2008 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/227901.html</guid><wfw:comment>http://www.blogjava.net/103335460/comments/227901.html</wfw:comment><comments>http://www.blogjava.net/103335460/articles/227901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/103335460/comments/commentRss/227901.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/103335460/services/trackbacks/227901.html</trackback:ping><description><![CDATA[<div class="cnt" id="blog_text">
<p><strong>摘要： 本文介绍了利用Install Shield制作应用程序安装软件的方法。在文中作者除了对常用的一些技术进行介绍外，还对安装过程位图的显示、标题和背景的定制等高级技术作了简要的阐述，本文所述方法能够满足大多数安装软件的制作需求。<br />
<br />
　　关键字： 安装软件制作；Install Shield<br />
<br />
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="1">
    <tbody>
        <tr>
            <td colspan="3">
            <div align="center"><font color="#ff0000">阅读导航</font></div>
            </td>
        </tr>
        <tr>
            <td width="21%" rowspan="4">
            <div align="left">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_1.shtml" target="_blank"><font color="#000000">程序框架的建立</font></a></div>
            </td>
            <td width="46%" height="18">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_1.shtml" target="_blank"><font color="#000000">1、建立安装程序工程</font></a></td>
            <td width="33%" rowspan="4">
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161967.gif" align="center" vspace="1" border="1"  alt="" /></div>
            </td>
        </tr>
        <tr>
            <td height="18">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_2.shtml" target="_blank"><font color="#000000">2、工作区中的选项卡的功能</font></a></td>
        </tr>
        <tr>
            <td height="18">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_3.shtml" target="_blank"><font color="#000000">3、当前属性的修改</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_4.shtml" target="_blank"><font color="#000000">4、脚本代码分析</font></a></td>
        </tr>
        <tr>
            <td width="21%" rowspan="3">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_5.shtml" target="_blank"><font color="#000000">必要的完善</font></a></td>
            <td width="46%">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_5.shtml" target="_blank"><font color="#000000">1、添加程序文件</font></a></td>
            <td width="33%" rowspan="3">
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161968.gif" align="center" vspace="1" border="1"  alt="" /></div>
            </td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_6.shtml" target="_blank"><font color="#000000">2、创建快捷方式</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_7.shtml" target="_blank"><font color="#000000">3、编写脚本代码</font></a></td>
        </tr>
        <tr>
            <td width="21%" rowspan="4">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_8.shtml" target="_blank"><font color="#000000">安装程序的发布</font></a></td>
            <td width="46%">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_8.shtml"><font color="#000000">1、发布媒介向导对话框</font></a></td>
            <td width="33%" rowspan="4">
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161969.gif" align="center" vspace="1" border="1"  alt="" /></div>
            </td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_9.shtml" target="_blank"><font color="#000000">2、Builder Type向导页</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_9.shtml" target="_blank"><font color="#000000">3、Tag File向导页</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_10.shtml" target="_blank"><font color="#000000">4、Platform向导页</font></a></td>
        </tr>
        <tr>
            <td width="21%" rowspan="4">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_11.shtml" target="_blank"><font color="#000000">界面设计</font></a></td>
            <td width="46%" height="23">　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_11.shtml" target="_blank"><font color="#000000">1、修改启动画面</font></a></td>
            <td width="33%" rowspan="4">
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161970.gif" align="center" vspace="1" border="1"  alt="" /></div>
            </td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_11.shtml" target="_blank"><font color="#000000">2、定制标题</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_12.shtml" target="_blank"><font color="#000000">3、定制背景颜色</font></a></td>
        </tr>
        <tr>
            <td>　<a href="http://soft.yesky.com/SoftChannel/72342371928702976/20040816/1842885_13.shtml" target="_blank"><font color="#000000">4、显示位图</font></a></td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>前言</strong><br />
<br />
　　InstallShield是一种非常成功的应用软件安装程序制作工具，以其功能强大、灵活性好、容易扩展和强大的网络支持而著称，并因此成为目前最为流行的安装程序专业制作工具之一。该软件不仅提供了灵活方便的向导支持，也允许用户通过其内建的脚本语言InstallScript来对整个安装过程在代码级上进行修改，可以象VC等高级语言一样对安装过程进行精确控制。InstallShield也是Visual C++附带的一个安装程序制作工具，在VC安装结束前将会询问用户是否安装Install Shiled工具，如果当时没有安装，也可以在使用时单独从VC安装盘进行安装。本文将结合一个具体的实例来对InstallShield的使用做一个较为全面的介绍，使读者能够初步掌握使用InstallShield制作专业水准的安装程序。<br />
</strong></p>
<p><strong>程序框架的建立<br />
<br />
</strong>　　运行InstallShield将会出现如图1所示的程序界面，与使用其他高级语言开发程序一样，首先要建立一个工程。<br />
<br />
　　1、建立安装程序工程<br />
<br />
　　双击Project Wizard图标，将弹出图2所示的向导对话框，从中可以根据用户的需求创建安装工程并自动生成相应的脚本代码。首先出现的是Welcome向导页，要求输入安装的应用程序的名称、开发公司的名称、程序的开发环境、应用程序类型、版本号以及可执行文件等信息。这里输入的内容在向导建立了工程后也可以通过工作区窗口对其进行修改和添加。<br />
<br />
</p>
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161911.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图1 InstallShield程序界面<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　输入完相关信息后点击下一步，将弹出图3所示的Choose Dialogs向导页。该向导页用来让用户从列表中选择将要在安装过程中出现的对话框。在选中某对话框列表项时，在向导页的左下角将会显示出经过缩小的对话框界面，单击Preview按钮将可以按正常比例预览该对话框。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161912.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图2 设置欢迎页面<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161913.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图3 选择显示的对话框<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　通常使用缺省设置即可，在点击下一步后，将进入到图4所示的Choose Target Platforms向导页。该向导页让用户选择一个或多个操作系统平台，以决定将可以在哪些操作系统中进行安装。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161914.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图4 选择目标平台<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　向导的下一步是如图5所示的Specify Languages向导页。该向导页指出了安装程序所支持的语系。在这里只有English语系一种，可以在建立工程后通过工作区再添加对其他语系的支持。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161915.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图5 指定语言<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　下一步将要在图6所示的Specify Setup Types向导页中设置一个或多个应用程序的安装类型，常用的有Compact紧凑型、Typical典型和Custom自定义类型等几种安装类型。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161916.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图6 指定安装类型<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　接下来将要出现如图7所示的Specify Components向导页和如图8所示的Specify File Groups向导页，分别用来设置安装工程中的组件和文件组。可以通过Add/Delete按钮添加/删除组件或文件组。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161917.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图7 指定组件<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161918.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图8 指定文件组<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　最后一步将出现如图9所示的Summary向导页，该向导页显示了用户在前面的向导过程中所选定的信息摘要。如果在该列表中发现其中某项设置不合适，可以通过上一步回到相应的向导页对选项进行更改。最后点击完成将创建安装项目并根据用户的输入信息生成相应的脚本代码。向导以要安装的应用程序名作为安装工程名，创建的工程都被存放在缺省的C:\My Installations\目录下，并用以工程名命名的文件夹管理该工程的所有相关文件。如果创建的多个工程具有相同的名称，向导将自动为其添加&#8220;-1&#8221;、&#8220;-2&#8221;等后缀以示区别。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161919.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图9 完成向导</div>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>2、工作区中的选项卡的功能<br />
<br />
　　创建了工程的InstallShield界面如图10所示，框架左侧为工程工作区，由7个选项卡构成。右侧显示的视图与工作区中当前选中的选项卡有关。下方则是信息输出区。下面主要对工作区中的选项卡进行介绍：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161920.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图10 InstallShield工程开发界面<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>Scripts页</strong>：该选项卡页面用来管理安装程序的脚本文件，存在于该页面中的各项脚本文件均以树型结构进行组织显示。展开顶层目录项的各子项，双击以.rul为扩展名的脚本文件项，将在右侧文档窗口中显示出该脚本文件的内容。可以在该文档窗口中通过修改代码来控制安装程序在安装过程中的动作。<br />
<br />
　　<strong>Components页</strong>：管理安装程序的各组件项。缺省的组件项包括Program Files（程序文件）、Example Files（示例文件）、Help Files（帮助文件）和Shared DLLs（共享DLL文件）等。双击某组件的目录项，将在右侧窗口显示相关属性的完整列表并可对其进行编辑。<br />
<br />
　　<strong>Setup Types页</strong>：用来管理提供给用户的安装类型。缺省设置为Typical（典型）、 Compact（紧凑）和Custom（自定义）等三种安装类型。在双击某安装类型后，右侧视图将显示与该安装类型相关的组件。可以选择或取消组件中文件组前面图标中的&#8220;&#8730;&#8221;图标来为不同类型组件指定相应的文件组。<br />
<br />
　　<strong>Setup Files页</strong>：该页面用来管理在安装过程中将要用到的安装文件。通常包含Splash Screen、Language Independent、English和Advanced Files等内容。Splash Screen对启动画面进行管理，可以为不同的语系设置不同的启动位图，但如果将启动画面设置在Language Independent项，则不管操作系统是何种语系，均以此位图作为安装程序的启动画面。Language Independent允许用户为各种操作系统指定相应的安装文件，不管是何种语系，安装程序都会根据相应的操作系统来选取相应的文件。而English（或其他语系）项则要求安装程序根据相应的语系及语系下的操作系统来选取相应的文件。Advanced Files将在使用具体的媒介发布时，允许用户放置一些非压缩文件。<br />
<br />
　　<strong>File Groups页</strong>：负责管理安装工程所需要的文件组。缺省设置为Example Files（示例文件组）、Help Files（帮助文件组）、Program DLLs（应用程序所需的DLL文件组）、Program Executable Files（应用程序文件组）以及Shared DLLs（共享DLL文件组）共五个文件组。双击某个文件组，将可在右侧视图对显示的文件组相关属性进行编辑修改。<br />
<br />
　　<strong>Resources页</strong>：用来管理安装工程所需要的安装资源。缺省设置为String Table、Registry Entries和Shell Objects共三种资源。String Table中定义了工程中用到的一些字符串常量。Registry Entries设置了注册表入口。Shell Objects资源则是经常用到的，通过该资源可以在指定位置（桌面、开始菜单等）为安装的应用程序创建文件夹或快捷方式。<br />
<br />
　　<strong>Media页</strong>：用来管理安装程序的发布媒介。该页面包含有Media Build Wizard向导、缺省的媒介以及用户新创建的媒介等项。可以通过Media Build Wizard向导创建新的媒介项。</p>
</div>
3、当前属性的修改<br />
<br />
　　点击View菜单下的Projects菜单项将显示包含有新创建工程的视图，在刚才创建的工程的图标上点击鼠标右键，并选中弹出菜单的Properties菜单项。这将弹出图11所示的对话框，通过其属性页可以对工程的当前属性进行更改。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161921.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图11 工程属性对话框<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　由于在用向导创建工程时只支持英语，因此可以在这里增添其他语系的支持。通过Add按钮将弹出图12所示的语系添加对话框，在取消对Show only available language的选择后从列表框显示的语系中添加需要的即可。<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161923.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图12 添加语系<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
　4、脚本代码分析<br />
<br />
　　下面对向导生成的脚本代码进行分析，在Scripts页中双击Setup.rul项即可在右侧编辑视图察看如下结构的脚本代码：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td bordercolor="#ffcc66" bgcolor="#e6e4dd">#include "sdlang.h"<br />
            #include "sddialog.h"<br />
            &#8230;&#8230;<br />
            // 函数声明<br />
            prototype ShowDialogs();<br />
            &#8230;&#8230;<br />
            // 全局变量声明<br />
            BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup;<br />
            &#8230;&#8230;<br />
            // 主程序<br />
            program<br />
            &#8230;&#8230;<br />
            endprogram<br />
            // 调用函数<br />
            &#8230;&#8230;<br />
            #include "sddialog.rul"</td>
        </tr>
    </tbody>
</table>
<br />
　　代码开始的这两个包含语句引入了预定义语言标识的头文件和Sd对话框的头文件。其中Sd对话框是一种脚本对话框（Script Dialog），是按InstallScript特定的机制来创建的，调用Sd对话框的函数均以Sd开头。除了在开始添加上述包含语句外，还要在endprogram语句后添加#include "sddialog.rul"语句，以将Sd对话框的实现脚本文件包含进来。随后由prototype关键字在program之前定义了函数的原型声明，其函数实现则要在endprogram之后才能给出。按照InstallScript的规定，在函数体内不允许声明变量，只能在全局声明变量或是在函数名后、函数体前声明局部变量，而且在声明变量时不允许同时为变量设置初始值。program和endprogram这两个关键字定义了主程序的开始与结束，其内代码即是对全部安装过程的描述：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>program<br />
            Disable( BACKGROUND );<br />
            CheckRequirements();<br />
            SetupInstall();<br />
            SetupScreen();<br />
            if (ShowDialogs()&lt;0) goto end_install;<br />
            if (ProcessBeforeDataMove()&lt;0) goto end_install;<br />
            if (MoveFileData()&lt;0) goto end_install;<br />
            if (ProcessAfterDataMove()&lt;0) goto end_install;<br />
            if (SetupRegistry()&lt;0) goto end_install;<br />
            if (SetupFolders()&lt;0) goto end_install;<br />
            end_install:<br />
            CleanUpInstall();<br />
            // If an unrecoverable error occurred, clean up the partial installation.<br />
            // Otherwise, exit normally.<br />
            if (bInstallAborted) then<br />
            abort;<br />
            endif;<br />
            endprogram<br />
            </td>
        </tr>
    </tbody>
</table>
<br />
　　上述代码首先通过Disable（）函数指定安装过程不使用背景色，然后调用CheckRequirements（）检查当前系统是否能够满足被安装程序正常运行所需要的最低要求，并通过SetupInstall（）和SetupScreen（）来建立安装界面的初始化。随后的这一系列if条件判断语句即是开始执行各个安装步骤，如果某一安装步骤出现错误，则通过goto语句跳转到end_install标签处，在通过CleanUpInstall（）清除已经安装的文件后退出安装。其中，ShowDialogs（）函数负责显示诸如用户信息、选择安装路径等对话框，由ProcessBeforeDataMove（）、MoveFileData（）和ProcessAfterDataMove（）负责处理数据的复制事宜。最后通过SetupRegistry（）完成注册，通过SetupFolders（）在桌面或开始菜单创建相应的快捷方式。这些函数的具体实现过程可以在endprogram后面的函数体实现中找到，并可按自己的需要对向导生成的缺省代码进行修改。<br />
<br />
　　对于此向导创建的程序框架，可通过Build菜单下的Compile和Run Setup菜单项来编译和运行。由于这时创建的只是一个空的程序框架，因此整个安装过程将不进行任何实质性工作，即不进行数据文件的复制和对安装的注册。<br />
<br />
<strong>必要的完善<br />
<br />
</strong>　　为了使向导生成的框架工程能够真正安装应用程序，还需要通过InstallShield开发环境提供的各种向导对工程作进一步的设置，甚至还需要直接修改或添加部分脚本代码，以使安装程序能够完成数据文件的复制、安装的注册以及在桌面或开始菜单创建必要的快捷方式等功能。<br />
<br />
　　1、添加程序文件<br />
<br />
　　首先向文件组添加要安装的程序文件。在File Groups选项卡中展开各文件组，并用鼠标右键点击各文件组下的Links项，选择弹出菜单的Insert Files菜单项以将待安装软件中的各文件添加到相应的文件组。对于没有用到的文件组，可以在该文件组上鼠标右键弹出菜单并通过Delete菜单项删除该文件组项。接下来切换到Components选项卡，在选中某组件项后，右侧列表视图将显示该组件项的相关属性，双击Include File Groups项将弹出图13所示的对话框，点击Add按钮并从弹出的对话框中添加与该组件项相关的文件组即可。在将所有的文件组添加到组件项后，将未用到的组件项删除。删除方法与删除文件组一样。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161926.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图13 添加相关的文件组<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　另外，组件项的Overwrite属性也是比较关键的，它决定了在安装文件时的覆盖属性。缺省设置ALWAYSOVERWRITE将始终用安装文件去覆盖安装目录中已存在的文件。这样将有可能出现用老版本的文件去覆盖新版本文件的情况。通常需要更改此属性设置以对版本进行区分。如果是Shared DLLs组件项，强烈建议更改该属性，否则将有可能影响系统其他软件的运行。双击该属性将弹出如图14所示的对话框，从组合框的下拉列表可以完成此设置。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161925.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图14 更改文件覆盖条件<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
　2、创建快捷方式<br />
<br />
　　为了在桌面或开始菜单创建快捷方式，还应在Resources选项卡添加相关的Shell对象。在该选项卡中展开各项目（如图15所示）。<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161927.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图15 Resources选项卡<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　其中的Desktop、Start Menu、Programs和Startup项分别对应于操作系统的桌面、开始菜单、程序和启动。可以在相应的项目下添加相应的文件夹或快捷方式。添加方法为，在要添加文件夹或快捷方式的图标项上点击鼠标右键，从弹出菜单的New菜单项下选择Folder或Shortcut项即可。图16为添加了文件夹和相关快捷方式后的Resource选项卡设置。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161928.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图16 插入文件夹和快捷方式后的Resource选项卡<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　在点击添加的快捷方式，在右侧窗口将显示快捷方式的属性，双击属性列表将弹出图17所示的快捷方式属性对话框。在Shortcut栏输入快捷方式的文本字符或是通过右边的&#8220;&gt;&gt;&#8221;按钮弹出对话框并从中选用预定义的字符串资源。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161929.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图A2-17 设置快捷方式属性<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　Target栏为快捷方式的链接路径，&lt;TARGETDIR&gt;\为用户在安装时所选择的路径，可以在此基础上指定具体的应用程序路径。至于字符串资源的添加，只需在String Table（见图16）中的相应语系所对应的字符串资源列表中点击鼠标右键，并从弹出的菜单中选择New菜单项，将弹出图18所示的对话框，从可以添加字符串的标识、内容以及注释：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161930.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图18 字符串资源的添加<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
　3、编写脚本代码<br />
<br />
　　通过上述属性设置已经可以对程序进行安装，如果软件还需要使用序列号进行保护或是其他一些向导所没有提供的功能，也可以通过在Scripts页编写脚本代码来加以实现。例如，向导生成的脚本代码中虽然提供了用来处理用户在安装过程输入的序列号的DialogShowSdRegisterUserEx（）函数，但并未对输入的序列号进行认证，下面给出添加了序列号认证的相关代码：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>function DialogShowSdRegisterUserEx()<br />
            　NUMBER nResult;<br />
            　STRING szTitle, szMsg;<br />
            　begin<br />
            　　svName = "";<br />
            　　svCompany = "";<br />
            　　szTitle = "";<br />
            　　szMsg = "";<br />
            　　Dlg_Register:<br />
            　　// 输入注册序列号<br />
            　　nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial );<br />
            　　if (nResult = NEXT) then<br />
            　　　// 对序列号进行认证<br />
            　　　if (StrCompare( svSerial , "ABCDEFG-HIJKLMN-OPQRST-UVWXYZ") != 0) then<br />
            　　　　MessageBox ( "输入的序列号 "+svSerial+" 不正确！" , WARNING );<br />
            　　　　// 如果序列号输入错误则重新输入序列号<br />
            　　　　goto Dlg_Register;<br />
            　　　endif;<br />
            　　endif;<br />
            　　return nResult;<br />
            end; </td>
        </tr>
    </tbody>
</table>
<p><br />
　　这时再运行安装程序，将真正把待安装的程序和数据进行复制，并在桌面和开始菜单创建快捷方式。如果添加了上述序列号认证代码，将只有输入正确序列号的用户才能够顺利安装程序。</p>
<p><strong>安装程序的发布<br />
<br />
</strong>　　在脚本代码没有错误，安装程序能够正常运行可情况下可以对其进行发布。这主要是通过Media属性页中的Media Build Wizard向导来完成的。<br />
<br />
　　1、发布媒介向导对话框<br />
<br />
　　双击Media Build Wizard项，将弹出如图19所示的发布媒介向导对话框。Existing Media列表框中列举了当前已经存在的发布媒介，可以选择缺省的Default媒介，也可以在Media Name中输入媒介名以建立一个新的媒介。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161932.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图19 设置媒介名称<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　点击下一步将出现如图20所示的Disk Type向导页，列表框中给出了可以使用的发布介质，比较常用的是3.5&#8217;&#8217; Diskette &#8211; 1.44 Mbytes和CD-ROM Default Size 650 Mbytes这两项，分别为1.44MB容量的3存软盘发布和650MB容量的CD-ROM光盘发布。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161933.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图20 设置存储介质类型<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
</p>
2、Builder Type向导页<br />
<br />
　　接下来是如图21所示的Build Type向导页，Full Build选项将全部创建所需要的文件数据，包括压缩应用程序的所有文件、创建CAB文件及Setup.exe程序等；Quick Build选项则只是测试、检查安装程序能够按预期的方式进行。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161934.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图21 设置建立类型<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　Advanced按钮将弹出图22所示的高级属性对话框，可以在其中设置口令、文件的时间/日期、媒介创建的目标位置等高级属性。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161935.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图22 建立类型的属性页<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　3、Tag File向导页<br />
<br />
　　在下一步的Tag File向导页（图23）中将输入诸如公司名称以及其他一些与应用程序相关的信息，这些信息将被保存到Data.tag文件中。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161937.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图23 设置标签文件 <br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
　4、Platform向导页<br />
<br />
　　继续向导，在图24所示的Platform向导页中选择可以使用的平台后，将完成对媒介发布向导的设置并出现如图25所示的简表。该简表对前面的向导设置进行了汇总，如果发现有设置错误，可以通过上一步回到相应的向导页面对其进行更正。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161938.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图24 设置平台<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161939.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图25 查看汇总信息<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　点击完成按钮将开始根据上述设置来创建发布媒介（见图26）。<br />
<br />
　　最后，在发布媒介创建完成后，点击图26所示对话框的Finish按钮完成发布媒介的创建。此时的Media选项卡将包含刚才创建的发布媒介（见图27）。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161940.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图26 根据设置创建发布媒介<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161941.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图27 新创建的发布媒介<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　新创建的发布媒介中的Disk Images项给出了创建的发布媒介的磁盘映像，其下的Disk1、Disk2等项对应于发布该安装程序的每一张磁盘/光盘的映像，在选中某磁盘项目时，右侧列表视图将显示该磁盘映像项目所包含的安装文件列表。Log Files项则是用来对发布媒介日志记录的管理。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161942.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图28 选择媒介文件的复制类型<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　最后，在完成创建的媒介文件到发布磁盘或相应的文件夹的复制后即完成了一个基本安装盘的制作。可以在新创建的媒介项目上点击鼠标右键，并从弹出菜单中选择Send Media To菜单项，将弹出如图28所示的发送媒介向导对话框，可以在该向导页中指定媒介文件是复制到硬盘中的某个文件夹还是直接复制到发布软盘。在随后的向导中，只需指定相应的路径并进行数据复制即可。运行发布媒介中的Setup.exe文件即可进行应用程序的安装。<br />
<br />
<strong>界面的设计<br />
<br />
</strong>　　前面介绍的方法固然能够制作出一个具有基本安装功能的程序，但由于没有对界面进行任何处理，而直接使用向导缺省设置下的安装界面。为了使制作的安装程序不落俗套，避免缺省设置下的单调界面，通常都需要根据被安装软件的性质而对界面进行重新设计。安装界面的设计通常主要针对标题、启动画面和安装程序背景等进行。<br />
<br />
　　1、修改启动画面<br />
<br />
　　首先对安装程序的启动画面进行更改，此前应先准备好要使用的素材图象，画面不宜过大。如果是其他格式的图象应先将其保存为bmp格式的位图，并将文件名改为Setup.bmp。安装程序将在开始运行时自动显示以该文件名命名的图象。在工作区的Setup Files页面，将可以看到Splash Screen项，在该项目下有Language Independent和各支持的语系项，点击各项目，将在右侧列表视图中显示当前使用的缺省的启动画面Setup.bmp，选中后将其删除。接下来将要添加新的启动画面，如果对于各个语系均使用相同的启动画面，那么就在Language Independent项中添加，如果对于不同的语系有相应的启动画面，那么就在各个语系项中添加与之相对应的启动画面。具体添加办法是在选中要添加的项目后，在右侧列表视图中点击鼠标右键，从中选取Insert File菜单项即可。需要注意的是，在完成上述设置后，编译运行安装程序并没有使用新的启动画面，应在Media选项页中通过向导重新建立发布媒介后，新更改的启动画面才能够生效。<br />
<br />
　　2、定制标题<br />
<br />
　　接下来对安装程序的标题进行定制，在向导生成的SetupScreen（）函数中通过SetTitle（）函数来完成主标题的显示，缺省设置参数为24点大小的白色字符，使用缺省字体。可以在使用SetTitle（）之前调用SetFont（）来使用指定的字体。SetFont（）函数原型为：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>SetFont (nItemID, nFontStyle, szFontName);</td>
        </tr>
    </tbody>
</table>
<br />
　　其参数nItemID为要设置的字体项目，目前只能设置为FONT_TITLE，即只能对主标题进行设置。nFontStyle为字体风格，允许的设置为STYLE_NORMAL、STYLE_BOLD、STYLE_ITALIC、STYLE_SHADOW和STYLE_UNDERLINE，分别表示正常、加粗、斜体、阴影和下划线风格的字体，除了STYLE_NORMAL风格外，其他几种风格都允许组合使用。使用的字体由szFontName来指定，如果执行安装程序的系统中没有安装该字体，那么将仍使用缺省的字体。例如，下面这段代码将显示带阴影效果的、加粗的、使用&#8220;华文彩云&#8221;字体的32点大小的主标题：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>// 设置字体<br />
            SetFont ( FONT_TITLE , STYLE_BOLD | STYLE_SHADOW , "华文彩云" );<br />
            // 使用32点大小的字体<br />
            SetTitle( @TITLE_MAIN, 32, WHITE );</td>
        </tr>
    </tbody>
</table>
<br />
　3、定制背景颜色<br />
<br />
　　目前，安装程序的背景界面为单一的暗青色，InstallShield脚本程序允许用户设置一个预定义的或是自定义的背景颜色，而且还可以指定为颜色渐变。具体由SetColor（）函数完成，该函数共包含两个参数，第一个参数通过BACKGROUND或STATUSBAR来指出是为背景指定颜色还是为进度条指定颜色。第二个参数即为设定的颜色值及颜色模式（是否渐变）。预定义的颜色值有：<br />
<br />
　　BK_BLUE 渐变的蓝背景色<br />
　　BK_GREEN 渐变的绿背景色<br />
　　BK_MAGENTA 渐变的紫背景色<br />
　　BK_RED 渐变的红背景色<br />
　　BK_YELLOW 渐变的黄背景色<br />
　　BK_SOLIDBLUE 蓝色（用于背景）<br />
　　BK_SOLIDGREEN 绿色（用于背景）<br />
　　BK_SOLIDMAGENTA紫色（用于背景）<br />
　　BK_SOLIDRED 红色（用于背景）<br />
　　BK_SOLIDYELLOW 黄色（用于背景）<br />
　　BK_SMOOTH 与自定义颜色组合为渐变的背景色。<br />
　　GREEN 绿色（用于进度条）<br />
　　RED 红色（用于进度条）<br />
　　BLUE 蓝色（用于进度条）<br />
　　MAGENTA 紫色（用于进度条）<br />
　　YELLOW 黄色（用于进度条）<br />
<br />
　　除了可以直接使用上述预定义的颜色外，也可以使用RGB（）定义的自定义颜色，如果需要使用自定义的渐变色可以将其与BK_SMOOTH共同使用即可。例如：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>nColor = RGB(0, 0, 255);<br />
            SetColor (BACKGROUND, BK_SMOOTH | nColor);</td>
        </tr>
    </tbody>
</table>
<br />
　　和<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>SetColor(BACKGROUND, BK_BLUE)</td>
        </tr>
    </tbody>
</table>
<br />
　　都可以产生蓝色渐变的背景色。需要说明的是，在指定背景颜色时，应当保证背景是可以设置的，因此上述更改背景色的代码应当在Enable(BACKGROUND)语句后进行。<br />
<br />
4、显示位图<br />
<br />
　　最后，再来介绍一下安装过程中对位图的显示。在安装过程中所能够显示的位图只有BMP和WMF这两种格式的位图。首先准备好素材位图并将其转换为可使用的位图格式，然后在Setup Files属性页中将这些文件添加到相应的项目中，这里所说的&#8220;相应&#8221;是指将要显示的图片与语系、操作系统相对应起来。例如，要添加的位图是用于英文Windows NT下的，那么就在Setup Files属性页中先找到语系&#8220;English&#8221;，然后再在该语系下找到相应的操作系统。具体的添加办法与添加启动位图一样。<br />
<br />
　　在将位图添加到安装文件后，就可以通过PlaceBitmap（）函数在指定的位置显示位图了。PlaceBitmap（）函数原型如下：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>PlaceBitmap (szName, nID_BITMAP, nDx, nDy, nDrawOp); </td>
        </tr>
    </tbody>
</table>
<br />
　　参数szName为要显示的位图，nID_BITMAP为位图的ID号，参数nDrawOp为图片在窗口中的放置位置，可以根据情况使用下述选项之一：<br />
<br />
　　TILED 平铺位图<br />
　　FULLSCREENSIZE 拉伸至全屏<br />
　　CENTERED 居中显示<br />
　　LOWER_LEFT 在左下角显示位图<br />
　　LOWER_RIGHT 在右下角显示位图<br />
　　UPPER_LEFT 在左上角显示位图<br />
　　UPPER_RIGHT 在右上角显示位图<br />
　　REMOVE 清除以前放置的位图<br />
<br />
　　参数nDx,和nDy则表示在当前方式方式下的图象放置坐标<br />
<br />
　　在同一窗口界面下将不能同时显示两幅位图。因此，在显示下一幅位图之前需要通过REMOVE操作符将第一幅位图清除，然后才能显示下一幅位图。另外，在设置图像文件路径时，由于安装程序是在其他用户的计算机中运行，因此不能使用位图在本地计算机的绝对路径，而应从刚才添加过位图的Setup Files属性页中获取。下面这段代码给出了陆续显示两幅位图的过程：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>// 在新位置显示新位图<br />
            PlaceBitmap ( SUPPORTDIR ^"step4.bmp" , 4 , 10, 100, UPPER_LEFT );<br />
            &#8230;&#8230;<br />
            // 删除上一幅位图<br />
            PlaceBitmap ( "" , 4 , 0, 0, REMOVE );<br />
            // 在新位置显示新位图<br />
            PlaceBitmap ( SUPPORTDIR ^"step5.bmp" , 5 , 10, 10, LOWER_RIGHT );</td>
        </tr>
    </tbody>
</table>
<br />
　　这里在使用REMOVE操作之前，为PlaceBitmap （）的nID_BITMAP参数指定了一个位图ID号，这样再用PlaceBitmap（）执行REMOVE操作时就不用再次指定相应的图像文件名了。<br />
<br />
　　除了上述提到的一些用户界面函数外，还有许多其他用途的用户界面函数，InstallShield为所有API函数的使用提供了一个向导（见图29），其中就包含有用户界面函数。点击工具条上的Function Wizard按钮将可以启动该向导，左侧列表框给出了API函数的分类。在选中User Interface项后，右侧列表框将显示所有可用的用户界面函数，在选中某API函数后，将可以通过向导很简单的实现对参数的设置。<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img hspace="3" src="http://www.yesky.com/image20010518/161943.jpg" align="center" vspace="1" border="1"  alt="" /><br />
            图29 使用函数向导<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>结论</strong><br />
<br />
　　本文以Install Shield 6.0为工具制作了一个可以安装待发布软件的安装程序。多用在商业或较正式软件的发布等场合，而这一类的软件通常都会有升级、更新的问题，使用Install Shield 6.0开发的安装工程可以很方便的解决这一问题，只需在File Grops页中以新版本的文件去替换旧版本的相应文件，并重新编译、发布即可，而不必为每一个版本的软件去开发一套与之相应的安装程序。<br />
<img src ="http://www.blogjava.net/103335460/aggbug/227901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2008-09-09 11:37 <a href="http://www.blogjava.net/103335460/articles/227901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Install Shield打包应用程序（转）</title><link>http://www.blogjava.net/103335460/articles/227900.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Tue, 09 Sep 2008 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/227900.html</guid><wfw:comment>http://www.blogjava.net/103335460/comments/227900.html</wfw:comment><comments>http://www.blogjava.net/103335460/articles/227900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/103335460/comments/commentRss/227900.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/103335460/services/trackbacks/227900.html</trackback:ping><description><![CDATA[<h2 style="margin: 13pt 0cm 13pt 10.5pt">摘要：本文介绍使用<font face="Cambria">Install Shield</font>对应用程序打包的初级应用，包括打包操作中基本的文件包含，组件分析，多语言版本的解决方法，驱动的安装方法等应用。</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">本文不涉及到<font face="Calibri">Install Shield</font>的高级应用，如果您急需用<font face="Calibri">Install Shield</font>对您的应用程序打包，并且对<font face="Calibri">Install Shield</font>几乎没有使用过，对生成的安装包的要求不是很高，那么本文非常适合您。</p>
<h2 style="margin: 13pt 0cm 13pt 10.5pt">准备工作</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">首先准备安装好的<font face="Calibri">Install Shield</font>，这里以<font face="Calibri">Install Shield12</font>为例说明。使用最新版软件的好处就是更新的功能和更少的<font face="Calibri">bug</font>，所以只求最新，呵呵。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">其次是我们的应用程序，非常推荐采用静态编译的<font face="Calibri">Release</font>版本作为要打包的程序（本文以<font face="Calibri">VC6</font>的一个应用进行举例）。确保我们的应用程序能够独立运行，确定我们的应用程序所要用到的文件都存在。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">再次：确认我们的软件是否需要多语言版的安装方式。如果是，那么只是在安装包的制作上多了几个步骤而已。</p>
<h2 style="margin: 13pt 0cm 13pt 10.5pt">开始创建一个框架</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">打开<font face="Calibri">Install Shield</font>，<font face="Calibri">File-</font>〉<font face="Calibri">New</font>，打开<font face="Calibri">New Project</font>对话框，选择<font face="Calibri">Windows Installer</font>中的<font face="Calibri">InstallScript MSI Project</font>，并为我们的安装包命名，选定目录。然后<font face="Calibri">OK</font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><font face="Calibri">OK</font>之后，<font face="Calibri">Install Shield</font>创建一个框架，我们只要把相应的部分填充一下就可以了。在<font face="Calibri">Project Assistant</font>选项页，共有很多步骤，一个一个来：</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Application Information</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">这一页要求输入应用程序的一些信息，值得注意的是<font face="Calibri">Web address</font>这一项，它会根据我们输入的公司名称改变，所以要注意它的内容。其余的选择使用默认值。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Installation Requirements</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">本页选择保持默认值。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Installation Architecture</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">本页选择保持默认值。会在以后有些改动。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Application Files</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">总是保持默认值会让人昏昏欲睡，并且容易错过重点，那么我们开始做点不是默认的操作：添加文件。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">在这一页，<font face="Calibri">Install Shield</font>会在<font face="Calibri">[ProgramFilesFolder]</font>下面创建一个公司名称的目录，在其下，会有一个<font face="Calibri">My Product Name</font>的文件夹。我们可以根据需要对它改名，或者改变位置。</p>
<p style="margin: 0cm 0cm 0pt">选择我们要添加文件的文件夹，在右边的可以选择添加文件，或是文件夹。值得注意的是：在添加文件夹的时候，会给出一个提示，具体内容记不得了（如果选择恰当的话，只出现了一次）。要看清楚，选择好，否则添加的内容会有不妥。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">如果需要向系统的<font face="Calibri">Windows</font>目录或者<font face="Calibri">System32</font>目录添加文件，那么在<font face="Calibri">Destination Computer-</font>〉<font face="Calibri">Show Predefined Folder</font>，选择<font face="Calibri">Windows Folder</font>即是<font face="Calibri">Windows</font>目录，选择<font face="Calibri">System Folder</font>即是<font face="Calibri">System32</font>目录。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">再如果需要向以上两个目录的文件夹中添加文件，那么就在<font face="Calibri">Windows Folder</font>或者<font face="Calibri">System Folder</font>下创建文件夹，名称和系统文件夹的一样，比如<font face="Calibri">Windows Folder/inf</font>，<font face="Calibri">System Folder/drivers</font>。文件就会添加到目标机器中的制定目录。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Application Shortcuts</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">如果在前面添加了一个可执行文件，那么在这里就会有一个指向它的快捷方式。选择这个快捷方式，右边还有可选项让我们决定是否在桌面上创建快捷方式。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">那么卸载的快捷方式呢？看左边的<font face="Calibri">More Options-</font>〉<font face="Calibri">Create an uninstallation shortcut</font>，就是这么简单。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Application Registry</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">注册表操作，本着绿色的精神（其实是怕麻烦），我们继续默认。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Installation Localization</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">之所以不使用更加简单的<font face="Calibri">Basic MSI Project</font>来创建安装包，就是为了这一步骤的多语言支持。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">在语言列表中选择要支持的语言。在我们选择了的语言中，有一种上面有一个红色的勾选标记，代表默认的语言，怎样改变它呢？切换到<font face="Calibri">Installation Designer</font>页面，定位于：左边：<font face="Calibri">Installation Information-</font>〉<font face="Calibri">General Information</font>。中间：<font face="Calibri">General Information-</font>〉<font face="Calibri">String Tables</font>，选择语言，右键设置为默认。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt"><font face="Cambria">Build Installation</font></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">很显然，现在还不能打包，有些地方还需要定制一下，除非我们的要求就这么多。那我们就可以选择其中一种或几种安装文件类型，然后<font face="Calibri">Build Installations</font>。</p>
<h2 style="margin: 13pt 0cm 13pt 10.5pt">定制安装包</h2>
<h2 style="margin: 13pt 0cm 13pt 21pt">组件分析</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">打包好了，发布出去，马上就有反馈：应用程序不能使用，怎么回事？</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">这是因为应用程序需要一些组件来运行，这些组件在我们装有开发工具的机器上是存在的，但是不能保证一个干净的刚刚装好的操作系统里面有这些组件。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">怎么办呢？<font face="Calibri">Install Shield</font>提供了工具，可以分析我们的应用程序需要哪些组件，并把它们加入到安装包中。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">在<font face="Calibri">Project</font>菜单，运行<font face="Calibri">Perform Static Scan</font>。（相应的，还有一个<font face="Calibri">Perform Dynamic Scan</font>，会让我们运行一下程序，动态的跟踪分析，但是觉得不如<font face="Calibri">Static Scan</font>来得简单彻底）</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">在<font face="Calibri">Static Scanning Wizard</font>中默认下一步操作，会给出一个检测的结果。列出哪些添加的文件用到了组件，通常情况，我们要把这些组件全都选择上，加入到我们的工程中，这样，我们的安装包部署之后，就可以很好的运行了。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt">多语言版本的解决方法</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">这里的多语言版本仅仅是指安装包的多语言版本，应用程序的多语言版本是另外的话题了。实际上前面的<font face="Calibri">Installation Localization</font>那一节已经完成了大部分的功能，并且已经可以使用了，但是如果我们想要加一个<font face="Calibri">EULA</font>（<font face="Calibri">End User License Agreement</font>），并且每种语言要显示该语言的<font face="Calibri">EULA</font>，那么就对我们的安装包工程稍稍进行一点改造吧。</p>
<p style="margin: 0cm 0cm 0pt 21pt">在<font face="Calibri">Installation Designer</font>页中（美好的助手已经帮助完我们了，剩下的我们要自己动手了），定位到<font face="Calibri">Organization-</font>〉<font face="Calibri">Components</font>，在中间的<font face="Calibri">Components-</font>〉右键<font face="Calibri">-</font>〉<font face="Calibri">Component Wizard</font>。</p>
<p style="margin: 0cm 0cm 0pt">在<font face="Calibri">Component Wizard</font>对话框，第一页<font face="Calibri">Next</font>，第二页选择安装的位置，在下拉列表中要安装的位置，一般来说，主程序文件夹在列表的最后一项。第三页，选择文件，我们选择第一种语言的<font face="Calibri">EULA</font>文件，然后<font face="Calibri">Next</font>，最后一页<font face="Calibri">Finish</font>。另一种语言的<font face="Calibri">EULA</font>也如法炮制。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">我们将会在<font face="Calibri">Components</font>看到两个新的<font face="Calibri">Components</font>，但是其中的一个有一个红色的叹号，让人不爽。我们可以把它们重命名一下。然后切换到<font face="Calibri">Organization-</font>〉<font face="Calibri">Setup Design</font>，在中间的<font face="Calibri">Setup Design</font>下面的任意一个<font face="Calibri">Feature</font>（通常是<font face="Calibri">Default Feature</font>）<font face="Calibri">-</font>〉右键<font face="Calibri">-</font>〉<font face="Calibri">Associate Components</font>，将列出的<font face="Calibri">Components</font>并入<font face="Calibri">Feature</font>。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">回到<font face="Calibri">Organization-</font>〉<font face="Calibri">Components</font>，在中间选择第一种语言的<font face="Calibri">EULA</font>的<font face="Calibri">Components</font>，在右边的属性列表中查找<font face="Calibri">Languages</font>，选择相应的语言，默认的选择是<font face="Calibri">Language Independent</font>（语言无关）。类似的，如果我们需要加入一些语言相关的文件，那么就在相应的组件设置语言的相关性。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">再来到：<font face="Calibri">Installation Information-</font>〉<font face="Calibri">General Information-</font>〉<font face="Calibri">String Tables</font>，这里面应该有我们选择的语言，每种语言对应一个<font face="Calibri">Tables</font>，在最后加一项：<font face="Calibri">LICENSE_PATH</font>，值为我们的相应语言版本的<font face="Calibri">EULA</font>的文件名，例如：<font face="Calibri">End User Agreement.txt</font>（注意，不是我不想用<font face="Calibri">rtf</font>格式的<font face="Calibri">EULA</font>，这种打包方式只支持<font face="Calibri">txt</font>的文件）。每种语言都要添加。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">再来到：<font face="Calibri">Behavior and Logic-</font>〉<font face="Calibri">InstallScript-</font>〉<font face="Calibri">Files-</font>〉<font face="Calibri">Setup.Rul</font>，在右边的窗口，第一个下拉列表中选择<font face="Calibri">Before Move Data</font>，在第二个列表中选择<font face="Calibri">OnBegin</font>。<font face="Calibri">InstallShield</font>会创建一个函数<font face="Calibri">function OnBegin()</font>，在其中添加这样几句：</p>
<p style="margin: 0cm 0cm 0pt"><font face="Calibri">&nbsp;&nbsp; // Disable the Back button in setup dialogs.</font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Calibri">&nbsp;&nbsp; Disable (BACKBUTTON);</font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Calibri">&nbsp;&nbsp; // Display the SdLicense2 dialog box.</font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Calibri">&nbsp;&nbsp; if (SdLicense2 ("", "", "", @LICENSE_PATH, FALSE) = NEXT) then</font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //MessageBox ("Continue with the installation.", INFORMATION);</font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 20.25pt"><font face="Calibri">endif;</font></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 20.25pt">第一句是把上一步的按钮禁用，第二句就是显示<font face="Calibri">License</font>对话框，<font face="Calibri">then</font>后面注释掉的一行只是表明一个执行的路线。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 20.25pt">至此，多语言版本搞定。</p>
<h2 style="margin: 13pt 0cm 13pt 21pt">驱动的安装方法</h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">如果我们的应用程序涉及到硬件，需要安装一个驱动，那么使用<font face="Calibri">InstallShield</font>的内建功能，这将是一件非常简单的事情。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">首先要确保驱动文件的存在以及完整性。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">然后定位到：<font face="Calibri">Organization-</font>〉<font face="Calibri">Setup Design</font>，打开菜单项<font face="Calibri">Project-</font>〉<font face="Calibri">Device Driver Wizard</font>，在<font face="Calibri">Device Driver Wizard</font>对话框中，第一页选择<font face="Calibri">Next</font>；第二页选取驱动的<font face="Calibri">.inf</font>文件，第三页列出了<font face="Calibri">inf</font>文件涉及到的驱动文件，<font face="Calibri">Next</font>；第三页的<font face="Calibri">Runtime Options using DIFx 2.01</font>中的几项都很重要，根据需要进行选择，通常可以选择第<font face="Calibri">1</font>，<font face="Calibri">3</font>，<font face="Calibri">5</font>项，<font face="Calibri">Next</font>；第四页中选择上<font face="Calibri">Include all localized installation runtime dialogs</font>，下面的单选根据我们的驱动选择目标机器，<font face="Calibri">Next</font>；最后一页<font face="Calibri">Finish</font>。在<font face="Calibri">Setup Design</font>下面的<font face="Calibri">Feature</font>中会增加驱动文件的节点。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">非常重要的是：如果我们的驱动<font face="Calibri">inf</font>文件选取之后，第三页没有列出全部涉及到的驱动文件，比如<font face="Calibri">.cat</font>文件，那么需要在相应的驱动<font face="Calibri">Feature</font>中添加涉及到的文件。做法：<font face="Calibri">Setup Design-</font>〉驱动<font face="Calibri">Feature-</font>〉驱动组件<font face="Calibri">-</font>〉<font face="Calibri">Files</font>，右边的文件列表中，右键<font face="Calibri">-</font>〉<font face="Calibri">Add</font>，加入缺少的驱动文件。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">至此，大功告成。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">我们可以<font face="Calibri">Build Installations</font>了。</p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt">如果想要美观一点，可以在<font face="Calibri">User Interface-</font>〉<font face="Calibri">Dialogs-</font>〉<font face="Calibri">Skins</font>中选择皮肤。可以立即作出不错的外观。<br />
</p>
<img src ="http://www.blogjava.net/103335460/aggbug/227900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2008-09-09 11:34 <a href="http://www.blogjava.net/103335460/articles/227900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>