InstallShield有个功能是运行外部程序,叫LuanchApp,用他来运行你自己的是设置程序就可以了
下面是我转的资料
…………………………………………………………………………………………
用InstallShield制作专业Windows安装软件
作者:苏贵洋
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
InstallShield可以说是软件安装的最好制作工具。其简单的操作、完全可视化的界面、方便的调试功能、多平台
(Windows3.1, Windows95, WindowsNT3.5, Windows NT4.0 )语言(中文、各种西文)的支持使它几乎成为了安装制
作的标准。难怪微软在它的拳头产品Visual C++4.X中开始,就以捆绑的形式包括了InstallShield3。而今,随着日月的
推移,InstallShield更是羽翼丰满,又陆续推出了InstallShield Professional 5.X(包括East Edition,West Edition)
和InstallShield 6.0,功能更为强大,操作更为简便。对于Shareware软件的制作者,包装上一个漂亮的安装程序,实
在是非常必要。本文简要探讨一下用InstallShield制作安装软件的方法,希望对感兴趣的朋友有所帮助。
在InstallShield的各种最新版本中,其专门制作的East Edition,可应用于汉语(GB、BIG5)、英语、印度尼西亚语、日
语、韩语、俄语、土耳其语、泰国语等多语种。本文便以InstallShield East Edition 5.1为探讨对象进行讨论。
InstallShield的其它语种版本的操作和East Edition几乎完全相同。
进入InstallShield East Edition 5.1后便是两个“向导”面对你。
习惯用VB的朋友可以用VB5 Project Wizard,它需要你的系统中安装了VB5。
更为常用的是Project Wizard,它可以定制更为普便适用的安装程序。进入Project Wizard后如图1:在第一栏中写入
你的程序的名字,第二栏中写入公司的名字,在第三栏中选择开发程序使用的根据,第四栏中选择程序的种类,最后一栏
中填入程序的可执行文件的完整路径和名字。单击下一步,进入选择定制对话框:安装自己的喜好选择希望安装过程进行
时出现的对话框,按Priview键可以预览一下相应对话框的效果。接下来是选择要安装目标平台。也即程序将被运行在什么
平台之上。InstallShield共提供了四种平台供选择(Win31, win95, WinNT3.5, Windows NT4.0 )。然后是多语种支持,
也就是安装时可以提供的语言支持。再向下依次是安装类型选择、指定构成成份、指定文件组,最后是所有选项的概括。
完成选择后便可得到你自己定做的Project,进入InstallShield的可视化编程环境。
下面让我们一步一步地完成我们的制作。
整个InstallShield的可视化程度很高。支持鼠标右键的操作,在各个位置的鼠标右键可激活各种功能;编译、调试
方便,简直是VC++这种大型程序的简写本,却又比VC++方便了许多。
一、在左面的选项中选择Scripts。
这是全部制作的核心部分,也是我们所最应集中精力攻克的小小关口。当然不更改Scripts中的源程序也能制作一个
标准的安装程序,但如果能够控制Scripts的编程,整个安装程序的制作水准就可以达到一个新的高度,这也许是您与普通
制作者区别的开始吧。其实InstallShield的Scripts非常类似于C和C++的程序编写,相信对大多数程序员来说是非常
容易掌握的。而对于没有什么C和C++的基础的朋友来讲,看完这篇文章后,相信你也能很好地去制作自己的Scripts,
因为它具有相当程度的重复性,更容易被“依葫芦画瓢”。
Scripts的布局同C语言非常类似。首先是头文件的包含,紧接着是字符串的定义、函数原形的说明、全局变量的说
明。你可以做的是在此加上你的函数说明、全局变量的说明。
Scripts中遵循C的规则,同样有局部变量和定义。遵循C++的注释规则,可以用// 注释内容来进行单行注释,也
可以用/* 注释内容 */来注释一块语句。所有的关键字、宏定义都以不同颜色的字体标出,非常直观。Scripts 的编程
遵循结构化编程的思想,提供了大量类似Windows API的函数库供调用,每个宏定义都有详细的说明,每个函数除了详细
地说明,解释每个变量的意义外,还都附有相应的例子,参考这些说明和例子,可以让新手在非常短的时间内上路。对
用VC++开发过Windows程序的朋友来讲,简直就是一种6=2×3的转变而已,可以非常轻松地掌握。
在程序的最前段,是program…………………endprogram,它相当于C中的main() {……}主函数。后面是一个个子函
数体的程序,排列顺序是按调用顺序排列。全部函数都非常简单易懂,并且一般不需太大改动。下面将几个常用、经常改
动的函数加以说明。
(1) function SetupFolders()
function SetupFolders()
NUMBER nResult;
STRING szFolderDir;
begin
szProgramFolder = FOLDER_PROGRAMS^
SHELL_OBJECT_FOLDER;
//建立程序组或快捷方式的位置
szItemName = "眼部图象多功能处理系统";
//应用程序名称
szProgram = TARGETDIR^'eye95.exe';
//可执行文件名
szParam = "";
LongPathToQuote (szProgram, TRUE);//合并路径
LongPathToShortPath (szParam);//转为短路径,专为Win31和WinNT3.5而用
szCommandLine = szProgram + "
"
+ szParam;
//生成命令行
szWorkingDir = TARGETDIR;//工作路径
szIconPath = "";
nIcon = 0;
szShortCutKey = "";
nFlag = REPLACE;
AddFolderIcon (szProgramFolder, szItemName,
szCommandLine,
szWorkingDir, szIconPath, nIcon,
szShortCutKey, nFlag);
szProgramFolder = FOLDER_DESKTOP;
LongPathToQuote(szCommandLine, TRUE);
if(SprintfBox( OK|CANCEL,"请选择:","%s","你想在桌面上创建快捷方式吗?"
==6)
then
AddFolderIcon(szProgramFolder,szItemName,szCommand
Line,
szWorkingDir,szIconPath,nIcon,szShortCutKey,
nFlag);
endif;
szProgramFolder = FOLDER_PROGRAMS^ SHELL_OBJECT_FOLDER;
szItemName="readme";
szProgram = WINDIR ^ "notepad.exe";
szParam = TARGETDIR^"readme.txt";
LongPathToQuote (szProgram, TRUE);
LongPathToShortPath (szParam);
szCommandLine = szProgram + "
"
+ szParam;
AddFolderIcon(szProgramFolder,szItemName,
szCommandLine ,
szWorkingDir, szIconPath, 0,
szShortCutKey,nFlag );
nResult = CreateShellObjects( ""
);
return nResult;
end;
其实这段程序说白了是对AddFolderIcon的一个应用而已。应用AddFolderIcon来在开始选单中添加程序组、程序项或在桌
面桌面添加快捷方式等等。所以首先读一下AddFolderIcon的说明非常必要。它共有八个入口参数。第一个参数szProgramFolder
是确定要在Win95中添加选单的位置(路径),例如
"C://WINDOWS//STARTMENU//PROGRAMS//ACCESSORIES//GAMES"。
而在Windows95和WinNT4.0中,还可以用系统的宏定义:FOLDER_DESKTOP(添加在桌面上)、FOLDER_DESKTOP(添加在开
始选单中)、FOLDER_PROGRAMS(添加在开始-〉程序选单中)等。第二个参数为szItemName,即添加的图标的名称(应用程
序的名称)。第三个参数szCommandLine相对繁琐一些。它为了指定可执行程序和它的命令行,或者在子目录下的全路径(仅
适用于Windows95&winNT4.0)。szWorkingDir为工作路径,可为空:“”,或为TARGETDIR(目标路径)。szIconPath为图标
路径,一般设为空:“”。nIcon为图标序数,即若应用程序有若干个图标,想显示那个,依次为0,1,2……。
szShortCutKey用来定义快捷键。nFlag用来指定图标的外观。如果在路径中包含长路径名,则必需用‘’或“”来包含,
然后用LongPathToQuote函数来合并。当用于16位的Win31和WinNT3.5时,还应再调用一下LongPathToShortPath进行转换。如
此便可创建程序组、程序项或快捷方式了。太麻烦了?没关系,如果您认为这一段操作实在麻烦,您完全可以略过,到Resource
中去完成,详情请往后看。
(2)function SetupScreen()
begin
Enable( FULLWINDOWMODE );
Enable( INDVFILESTATUS );
SetTitle( "眼科多功能处理系统安装程序", 28,YELLOW );//修改字体和颜色
SetTitle( "眼科多功能处理系统", 0, BACKGROUNDCAPTION );
// 标题行的字体和颜色
Enable( BACKGROUND );
Delay( 1 );
end;
这儿主要是SetTitle (szString, nPointSize, nColor)函数的应用。
三个参数分别代表了所写字符串的内容、字体大小、文字颜色。
(3)function DialogShowSdWelcome()
NUMBER nResult;
STRING szTitle, szMsg;
begin
szTitle = "欢迎";
szMsg = "欢迎您光临 眼科多功能处理系统 安装程序!";
nResult = SdWelcome( szTitle, szMsg );
return nResult;
end;
在这个函数里写入您想制作程序的标题。
(4)function SetupRegistry()
NUMBER nResult;
STRING szKey, szNumName, szNumValue, svNumValue;
NUMBER nType, nSize;
begin
szKey="Robert//RobertSoftware//Spirit//Version";//自己的主键
szNumName = "TestValue";//键名
szNumValue = "12345";//键值
nType = REGDB_NUMBER;//类型
nSize = -1;//指定大小
RegDBSetKeyValueEx(szKey, szNumName, nType, szNumValue,nSize) ;//创建
nResult = CreateRegistrySet( ""
);
return nResult;
end;
通过这种方法修改注册表,再辅以一些算法,可以投入很小但起到很好的加密程序的作用,您不妨一试! ?
(5)function DialogShowSdFinishReboot()
NUMBER nResult, nDefOptions;
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
NUMBER bOpt1, bOpt2;
begin
if (!BATCH_INSTALL) then
bOpt1 = FALSE;//不选
bOpt2 = FALSE;//不选
szMsg1 = "%P 安装结束!/n";//%P代表安装程序名字。
szMsg2 = "按结束键结束 %p 安装。";//提示信息
szOption1 = "我想看自述文件。";
szOption2 = "我想现在就运行程序。";
nResult = SdFinish( szTitle, szMsg1, szMsg2,
szOption1, szOption2, bOpt1, bOpt2 );
if(bOpt1) then
LaunchAppAndWait(WINDIR^"Notepad.exe",TARGETDIR^"readme.txt",WAIT);//如果选中,调用Windows的笔记本载入自述文件。
endif;
if(bOpt2) then
LaunchApp(TARGETDIR^'eye95.exe',""
;//如选中,立刻执行应用程序
endif;
return 0;
endif;
nDefOptions = SYS_BOOTMACHINE;
szTitle = "";
szMsg1 = "";
szMsg2 = "";
nResult = SdFinishReboot( szTitle, szMsg1,
nDefOptions, szMsg2, 0 );//由此控制决定是否重新启动计算机。
return nResult;
end;
这一段程序便是安装到最后,可以提示用户是否看自述文件、是否立刻启动程序运行、是否重新启动计算机。
Scripts最需要改动的地方可能就是这五个地方。其它则根据制作者自己的需要来做相应修改。
二、修改File Groups
双击相应的Examples Files、Help Files、Program DLLs、Program Executable Files、Shared Dlls,在相应的Links中,
单击右键,可以插入一组文件、一个文件夹或一个文件。而在Examples Files、Help Files、Program DLLs、Program Executable Files、
Shared Dlls中分别加入文件是为了在程序安装时的选项安装。更为简便的方法是在Tools中启动Launch Explorer,然后把所需的文
件或文件夹拖拉到右面空白处即可。
三、修改Components
单击Program Files、Example Files、Help Files或Shared Dlls,在右面的表格中双击Include File Groups,在弹出的属性对话
框里单击Add…,加入相应的文件组。
四、修改Setup Types
单击Compact、Typical或Custom,在右面的表格中选择各自包括的组成成份。
注:有了二、三、四项的操作,才能完成安装时的“典型安装、简洁安装和定制安装”的选择。
五、修改Setup Files
在Splash Screen-〉Language Independent中你会发现一个Setup.bmp文件,这个是系统提供给你的安装开始时的闪烁画面。你可
以用你的封面替代这个setup.bmp。在Language Independent-〉Operating System Independent中,你会发现license.txt和
infolist.txt。你可以将你的应用程序的说明、版权信息写入相应文件。
六、修改Resource
在Register Entires中,你可以添加你的键值。对Register Entires单击鼠标右键,单击New Entry,便可在右面的
Register Set中加入自己的键值。
在Shell Objects中,有Explorer Shell和Program Manager Shell两个分类,分别是为了windows95、WinNT4.0和
win31、winNT3.5设计的。在Explorer Shell中,又有Desktop、Start Menu、Programs、Startup的层次之分。你可以
在任一层单击右键,插入您所需要加的快捷方式或文件夹。
单击快捷方式或文件夹,双击右面的表格选项,依次填入空白项,那么在您理想的目的地的文件夹或快捷方式便
建好了。不要着急去按下Run Setup工具按钮,否则您会发现您运行后得到的并不完全是您所设计的!这是因为您少了:
七、运行Media Wizard
在Media栏,单击Media Build Wizard,按照提示一步一步执行,直至结束(而实际上您仅需连续按“下一步”按
钮)。您完全可以再此基础上加上更多的更精彩的小花招,如:加密、安装拷贝时的不同的背景变换、
制成一个自解包的安装文件、做一个带时间限制的试用版安装等等,InstallShield都可以满足您的需要。但这些小花
招,基本都需要您对Scripts的熟练掌握,这些都是用简洁方式所不能控制的。
好了,您可以Run Setup了。怎么样?够不够专业?酷不酷?可不要把嘴乐歪了!