MFC 程序打包

MFC 程序打包

2023年7月17日发(作者:)

用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^''; //可执行文件名

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 ^ "";

szParam = TARGETDIR^"";

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:WINDOWSSTARTMENUPROGRAMSACCESSORIESGAMES"。

而在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)函数的应用。

三个参数分别代表了所写字符串的内容、字体大小、文字颜色。

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="RobertRobertSoftwareSpiritVersion";//自己的主键

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^"",TARGETDIR^"",WAIT);//如果选中,调用Windows的笔记本载入自述文件。

endif; if(bOpt2) then

LaunchApp(TARGETDIR^'',"");//如选中,立刻执行应用程序

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中你会发现一个文件,这个是系统提供给你的安装开始时的闪烁画面。你可以用你的封面替代这个。在Language Independent-〉Operating System Independent中,你会发现和。你可以将你的应用程序的说明、版权信息写入相应文件。

六、修改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了。怎么样?够不够专业?酷不酷?可不要把嘴乐歪了!

----InstallShield for Microsoft Visual C++ 6 是一个非常好的制作安装程序的软件。从它的名称可以看出它是为Visual C++ 6定制的软件,但这并不说明它只能用于Visual C++ 6的安装程序制作。其他应用程序同样可以用它制作安装程序,只不过这时需要单独启动InstallShield for Microsoft Visual C++ 6,且需要人工加入一些代码。

一、在Visual C++ 6集成开发环境中使用它

----通常在Visual C++ 6集成开发环境中完成一项工程后,选择Tools菜单中的InstallShield Wizard 即可启动InstallShield Visual C++向导,主要按照向导的步骤依次执行就可以顺利完成安装程序的制作。

----第一步选择工程的名称,通常有一个预置的工程,它是你最近工作过的工程,可以通过Browse按纽改变它,点击“下一步”,进入第二步(见图1);第二步填写应用程序的有关信息,它包括应用名称(Applicaion Name)、公司名称 (Company Name)、开发环境(Development)、应用类型(Application)、版本(Application Version)、应用程序执行文件(Application Executable),点击“下一步”,进入最后一步(见图2);最后一步生成一个摘要。显示生成两个文件组:可执行文件组和动态连接库组。点击“完成”按纽,就可以启动InstallShield for Microsoft Visual C++ 6,这时在 InstallShield for

Microsoft Visual C++ 6集成环境中选择Build菜单下的Compile 项,进行编译成功,安装程序就制作完毕。

----为了能够在操作系统的开始菜单中生成快捷方式,还必须进行一定的修改才行。一般的习惯是在开始-->程序菜单中生成应用程序的文件夹,在此文件夹中包含应用程序的快捷方式和其他一些快捷方式,比如ReadMe文件和帮助文件。在InstallShield for

Microsoft Visual C++ 6中选择Resource标签,展开Shell Object,再依次展开Explore Shell、Desk、StartMenu,在Programs上单击右键,选择New-->Folder, 就可以生成该应用程序的文件夹,你可以给它取一个适当的名字。接下来要生成应用程序的快捷方式,在新建的文件夹上单击右键,选择New-->Shortcut,在左侧的Shortcut对话框的表上双击后单击右键选择“属性”,对Shortcut的相关属性进行编辑,关键在Target 项中填上*.exe,*.exe代表该快捷方式所指向的应用程序,用具体的应用程序来替换它,至于其他几项可以不做修改(见图3)。这样就可以生成快捷方式。

----如果要生成Readme文件,可按以下步骤。先用记事本编辑readme文件并存盘。然后,在InstallShield for Microsoft Visual C++ 6中选择File Groups标签,展开Program Executables,双击Links,在右边相应的对话框中单击右键,在弹出菜单中选择Insert ,将刚才编辑的Readme文件插入其中。再次编译,生成新的安装程序,最后为了生成安装盘,还要继续下面的操作。切换到Media标签,利用向导建立磁盘映像,制作安装媒体,向导默认生成光盘的磁盘映像,你自己还可以选择生成其他安装媒体的磁盘映像,如3.5寸软盘,该步完成之后就会在Media标签中出现安装媒体标识,这时它存在硬盘上,要把它放到可移动媒体(如光盘和软盘)上,还要将它发送到您想要存放的媒体上。在安装媒体标识上单击右键,从弹出菜单中选择Send Media To, 将其发送到某种媒体上。到此,这个过程结束。需要注意的是,制作过程中,每次进行修改后,必须编译并重新生成安装媒体的磁盘映像,否则你的磁盘映像依然是上一次的结果。

二、为一般的非VC6应用程序制作安装程序

----首先单独启动InstallShield for Microsoft Visual C ++ 6,在初始界面中选择Project Wizard,你就可以根据向导一步一步生成一项工程,最后对代码做一定的修改,并编译成功,剩下的工作和上面的方法一样。

----具体做法如下:第一步填写你的应用程序的有关信息(同图2);第二步选择你的安装程序需要提供给用户的那些对话框(见图4);第三步选择你的应用程序运行的目标平台的操作系统版本,包括Windows 3.11、Windows 95、Windows NT等;第四步选择安装语言版本;第五步提供给最终用户的安装类型,常见的安装类型有典型、定制、压缩等;第六步选择安装中定义的组件,常见的组件有程序文件、帮助文件、示例文件、共享文件(见图5);第七步选择文件组(注意组件和文件组的区别,组件是安装文件传输的基础单位,组件由文件组组成);第八步生成工程摘要,向导工作完成。选择 Finish按钮,InstallShield会创建你的安装计划,并打开Project安装计划工作编辑区。

----如果只是为一个简单应用程序,可以删除一些不必要的组件和文件组。例如在Components标签中Example Files、 Help Files、 Shared DLLs,只保留Program

Files,在File Groups标签中,可以删去Example Files、Help Files、 Program

DLLs 、Shared DLLs,保留Program Executable Files。最后是最关键的工作,因为这时要你手工修改安装程序的脚本代码。首先你必须把你的可执行文件加入到Program

Executable Files中,再把Program Executable Files加到Program Files中,做法是在 Program Files属性框中选择Include File Groups栏,点击按纽,加入Program Executable Files。选择Scripts标签,切换到窗口,准备对代码进行修改。在代码的变量声明部分加入STRING svPath,再把svPath = TARGETDIR ^

“*.exe";加入TODO comment block注释块的下面(*.exe用具体的应用程序名代替),换行后,单击右键,在弹出菜单中选择函数向导Function .,在函数类框中选择“Long filename",然后在函数名框中选择LongPathToQuote函数,点击“下一步”,点击完成,向导自动加入相应代码;再换一行,重新启动函数向导Function ,选择Shell中的 AddFolderIcon函数,点击下一步,对函数进行编辑,对szProgramFolder、szWorkingDir、 szIconPath、szShortCutKey均填入“",对szItemName填入程序名,注意要加引号,对 szCommandLine填入svPath,对nIcon填入0,对nFlag填入REPLACE,点击完成按纽,向导自动加入相应代码。保存修改,并编译工程,生成安装程序,剩下的工作同第一种情况。

----以上就是制作安装程序的两种不同情况,当然为了使它更加美观,你还可以对它进行进一步的修改,比如你可以用自己的安装程序启动图片替换缺省的初始画面,只要选择Setup

files标签,删除 ,再插入自己的图片,注意必须命名为 。如果你掌握了安装脚本语言InstallScript Language,你就能制作出更好的安装程序。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689608364a270267.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信