找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10854|回复: 9

==InstallShield中文教程专题==

[复制链接]

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
发表于 2006-4-25 10:55:00 | 显示全部楼层 |阅读模式
<STRONG>用InstallShield制作安装程序的步骤是怎么样的?</STRONG>
<DIV style="ADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" twffan="done" onload="this&#46;style&#46;overflowX='auto';">
<>1 建立工程文件 </P>
<>打开InstallShield 相关应用程序,双击“Project Wizard”,按照向导提示输入工程的相关信息。当然这里输入的是给相关变量赋值,在编译之前可以对其进行修改,打开资源Resources,对其相关属性的变量进行重新赋值即可;另外,还需对菜单项“Project”中的产品名称进行更改。 </P>
<>2 文件组配置 </P>
<>打开文件组File Groups工作区,展开树,给相应的文件组链接对应文件,对应文件会显示在相应的区域。单击相应文件组,对其其属性进行设置,重要的有: [Shared]指定当前文件组中的文件是否为共享文件,即该文件是否被多个应用程序共同使用,若设为共享文件InstallShield在应用程序安装过程中会自动处理这些文件的注册;[Self Registered]设置当前文件组中的文件是否自注册,这个功能能够将相关文件在安装过程中进行注册,卸载时也会自动将这些注册信息删除; [Compressed]指定当前文件组中的文件在建立媒体库时是否被压缩,这里的设置在安装媒体向导的磁盘类型中不选择[Data as files]复选框是有效的,否则不管如何设置应用程序即不存储在电缆文件中也不被压缩;[Overwrite]指定当前文件组中文件覆盖终端用户计算机系统中已存在同名文件的条件;[Destination]指定当前文件组在安装过程中被传输的目标位置。 </P>
<>3 组件设置 </P>
<>打开组件“Components”工作区,可以新建组件,组件的重要属性有:“Status Text”是标志在复制对话的进度条上看到的文本;“Display Name”是给定当前组件显示给终端用户的文本;“File Need”是指定组件的级别,【Critical】对于安装程序不允许终端用户不选择该组件,【Recommended】是建议终端用户应该选择安装该组件,【Standard】如果终端用户没有选择该组件,不会显示任何信息;“Include in Build”是表示是否将该组件包含到发行媒体中,暂时将本特征不包含到发行媒体给这个组件留下位置,以便以后升级。“Required Components”是将此组件必需的其它组件链接在一起;“Included File Groups”可以为当前组件增加和删除与之相关的文件组;其它属性默认即可。 </P>
<>4 在Setup&#46;rul底稿文件中添加代码 </P>
<>充分利用InstallShield资源可以省去不少代码编写,特别是InstallShield提供的一些内部函数,可以实现丰富的功能,需要特别注意的是大小写是严格区分的。 </P>
<>5 编译工程 </P>
<P>从【Build】菜单中选择【Compile】选项对脚本进行编译;编译通过后选择【File】菜单中的【Save】选项进行脚本修改的保存。 </P>
<P>6 定制MEDIA(安装媒体) </P>
<P>从【Build】菜单中选择【Media Wizard】选项启动媒体制作向导,按照提示一步一步进行,最后出现所设置的总信息,不妥后退进行修改,最后确认后按【完成】后定制媒体。 </P>
<P>7 测试 </P>
<P>文件安装媒体制作完成之后,就可以进行测试,从【Build】菜单中选择【Run Setup】运行,安装完成后可以通过【开始】菜单的【程序】中的快捷方式运行安装的应用程序。最后运行卸载程序将应用程序从系统中删除 。 </P>
<P>三、安装程序初始化 </P>
<P>在函数OnFirstUIBefore()中输入如下脚本代码进行初始化程序。 </P>
<P>1 安装背景设置 </P>
<P>SetFont(FONT_TITLE,STYLE_BOLD|STYLE_SHADOW, "Arial");//设置字体 </P>
<P>SetTitle(@TITLE_CAPTIONBAR,0, BACKGROUNDCAPTION );//设置标题 </P>
<P>SetTitle( @TITLE_MAIN, 24, WHITE ); //设置对话框主题字体和颜色 </P>
<P>Enable( FULLWINDOWMODE ); //允许全屏显示 </P>
<P>Enable( BACKGROUND ); //允许背景设置有效 </P>
<P>SetColor(BACKGROUND,RGB (0, 128, 128)); //设置背景颜色 </P>
<P>2 加载图片 </P>
<P>在任何时候都可以加载图片以装饰安装程序,方法如下: </P>
<P>svPicName = SUPPORTDIR ^ "pic6&#46;bmp"; //定义图片路径 </P>
<P>DialogSetInfo(DLG_INFO_ALTIMAGE,svPicName,TRUE);//在对话框中显示 </P>
<P>svPicName = SUPPORTDIR ^ "pic2&#46;bmp"; </P>
<P>PlaceBitmap(svPicName,13,0,0,FULLSCREENSIZE);//全屏显示图片作为背景 </P>
<P>在加载下一幅图片的时候要先移去上一幅已加载的图片,方法如下: </P>
<P>PlaceBitmap ("",13,0,0,REMOVE); </P>
<P>3 系统变量的设置 </P>
<P>nSetupType = TYPICAL; //预设默认安装类型 </P>
<P>TARGETDIR = "D:\\"<A href="mailto:^@PRODUCT_NAME" target=_blank>^@PRODUCT_NAME</A>; //设置默认安装路径 </P>
<P>svName = "Name"; //用户默认名 </P>
<P>svCompany = "Company"; //公司默认名 </P>
<P>svSerial = "123-EDC-532-386"; //序列号 </P>
<P>四、定制程序组(项) </P>
<P>function SetupFolders() </P>
<P>NUMBER nResult,nIcon, nFlag; </P>
<P>STRING szProgramFolder,szItemName,szCommandLine,szWorkingDir,szIconPath; </P>
<P>STRING szShortCutKey, szProgram, szParam,svTmp; </P>
<P>begin </P>
<P>szProgramFolder = @PRODUCT_NAME; </P>
<P>if (CreateProgramFolder(szProgramFolder) &lt; 0) then </P>
<P>return -1; </P>
<P>endif; </P>
<P>//设置快捷方式的工作环境 </P>
<P>nIcon = 0; </P>
<P>szShortCutKey = ""; </P>
<P>nFlag = REPLACE; </P>
<P>szWorkingDir = TARGETDIR; </P>
<P>szIconPath = TARGETDIR+"<A>\\"+@PRODUCT_KEY</A>; //图标选择 </P>
<P>szItemName = @PRODUCT_NAME; </P>
<P>szProgram = szIconPath; </P>
<P>LongPathToQuote(szProgram, TRUE); </P>
<P>szCommandLine = szProgram; </P>
<P>if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir, </P>
<P>szIconPath,nIcon,szShortCutKey,nFlag)&lt; 0) then </P>
<P>return -1; //在开始菜单的程序组中增加启动该应用程序的快捷方式 </P>
<P>endif; </P>
<P>if(AddFolderIcon(FOLDER_DESKTOP, szItemName, szCommandLine, </P>
<P>szWorkingDir,szIconPath,nIcon,szShortCutKey, nFlag) &lt; 0)then </P>
<P>return -1; //在桌面上增加启动该应用程序的快捷方式 </P>
<P>endif; </P>
<P>//卸载的设置 </P>
<P>szWorkingDir = WINDIR; </P>
<P>szIconPath = SUPPORTDIR+"<A>\\IsUninst&#46;exe</A>"; </P>
<P>szItemName = "卸载"<A href="mailto:+@PRODUCT_NAME" target=_blank>+@PRODUCT_NAME</A>; </P>
<P>svTmp=PROGRAMFILES+"InstallShieldInstallationInformation\\"+PRODUCT_GUID+"<A>\\setup&#46;exe</A>"; </P>
<P>LongPathToQuote(svTmp, TRUE); </P>
<P>szParam = svTmp; </P>
<P>LongPathToShortPath(szParam); </P>
<P>svTmp=COMMONFILES+"InstallShield\\engine\\6\\Intel32\\ctor&#46;dll"; </P>
<P>LongPathToShortPath(svTmp); </P>
<P>szProgram = "RunDll32"+" "+ svTmp+",LaunchSetup"; </P>
<P>szCommandLine = szProgram + " " + szParam; </P>
<P>if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir, </P>
<P>szIconPath, nIcon,szShortCutKey,nFlag)&lt; 0) then // 在开始菜单中设置卸载快捷方式 </P>
<P>return -1; </P>
<P>endif; </P>
<P>end; </P>
<P>五、对象嵌入技术 </P>
<P>使用InstallShield对象,我们可以很方便地安装关键的Windows技术,包括ODBC、Access、ADO、DAO、RDO、OLE DB、DirectX以及其它技术,只要按照InstallShield嵌入对象向导操作即可,这里以嵌入ODBC为例子详细说明: </P>
<P>首先利用 Windows控制面板中的ODBC数据源建立数据配置文件,需要与所建的数据库文件联系起来,这里是DOT&#46;MDB文件,数据源名设置为DOT,退出后可以看到刚才建立的数据源。在Components工作区右击相应的组件,从弹出菜单中选择【Insert InstallShield Object】,打开对象浏览树,选中“NEW ODBC 3&#46;51”,单击【Add Object】按钮将会把该对象加入到Resources工作区中的InstallShield Objects文件夹中以及刚才的组件中,然后就会有向导启动(嵌入其它对象时,没有向导说明已经完成,关闭对象浏览器即可),按照向导提示完成ODBC对象嵌入,在安装过程中会自行注册。大多数对象都是直接嵌入即可。 </P>
<P>六、控件注册 </P>
<P>方法一:用户手工注册,利用VC++自带的DOS命令REGSVR32&#46;EXE(在\bin目录下)或者直接用下列方法:点击“开始”→“运行”;输入以下命令进行注册: </P>
<P>regsvr32 &lt; 文 件 名 &gt; 注册一个控件 </P>
<P>regsvr32 /u&lt; 文 件 名 &gt; 解除某控件的注册 </P>
<P>方法二:利用InstallShield的自注册功能,在文件组里新建一个文件组,这里取名为“BatchAPC 环境变量”,然后在这个新建文件组里链接需要注册的文件,这里是两个ActiveX控件MSCHRT20&#46;OCX和MSCOMM32&#46;OCX,将属性中的“Self-Registered” 设置为“Yes”,一般默认为“No”,这样就不需要编写代码来进行注册了。 </P></DIV>
回复

使用道具 举报

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
 楼主| 发表于 2006-4-25 11:01:33 | 显示全部楼层
<>Installshield安装制作杂记</P>
<><STRONG><FONT color=#ff0000>Scripts页面<BR><BR></FONT></STRONG>  项目工作区窗口的Scripts页面用来管理安装程序的脚本文件,在该页面中各项脚本文件均以树状列表的型式显示出来的。每个目录项前都有一个图标,且顶层目录项前还有一个套在方框中的符号\"+\"。双击顶层目录项或单击最前面的\"+\",则直接打开并显示该目录项的所有子项,此时顶层目录项前的\"+\"变成\"-\"号;再双击顶层目录项或单击最前面的\"-\",则该项目的所有子项被收缩,只显示顶层目录项内容,此时顶层项目前的\"-\"又变成了原来的\"+\"号。<BR><BR>  展开顶层目录项的所有子项,双击以&#46;rul为扩展名的脚本文件项,则在开发环境的右边的文档窗口中显示出该脚本文件的内容。为了增强安装程序代码的可读性,脚本文件的源代码内容往往是以不同颜色来显示的,各种颜色所代表的含义如下所示:<BR><BR>  白底黑字 一般文本<BR><BR>  黑底白字 被选定的文本<BR><BR>  青色底黑色字 文本的行标记<BR><BR>  白底红字 InstallShield的函数<BR><BR>  白底蓝字 InstallScript脚本语言的关键字<BR><BR>  白色底品红色字 常数<BR><BR>  白色底紫红色字 用\"\"符号括起来的文本内容<BR><BR>  白底绿字 注释<BR></P>
<><FONT color=#000000><FONT color=#ff0000><B>Components页面</B></FONT><B><BR></B><BR>  项目工作区窗口的Components页面用来管理安装程序的各项组件。缺省时,一个安装项目通常有程序文件(Program Files)、示例文件(Example Files)、帮助文件(Help Files)以及共享的DLL文件(Shared DLLs)共四个组件。双击某个组件目录项,则在主界面的右边窗口中显示出该组件相关属性的完整列表,这些属性都可以方便地进行相应的修改。<BR><BR><FONT color=#ff0000><B>Setup Types页面</B></FONT> <BR><BR>  项目工作区窗口的Setup Types页面用来管理提供给用户的安装类型。缺省时,一个安装项目通常有Typical(典型)、 Compact(紧凑)和Custom(定制)共三种安装类型。双击某种安装类型,则在主界面的右边窗口中显示出该安装类型相关的组件。<BR><BR>  在组件中,凡是文件组前面有一个带钩号(√)的图标,表示该文件组已被选入相应的安装类型中。反复双击文件组前面的图标可在\"选入\"和\"不选\"之间进行切换。<BR><BR><B><FONT color=#ff0000>Setup Files页面</FONT></B> <BR><BR>  项目工作区窗口的Setup Files页面用来管理在安装过程中所需要的安装文件,它通常有含有下面一些内容。</FONT></P>
<><FONT color=#000000><BR><B><FONT color=#ff0000>Support Files/Billboards页面</FONT></B> </FONT><FONT color=#000000><BR><BR><B>(1) Splash Screen(启动画面)<BR></B><BR>  InstallShield用Setup&#46;bmp作为安装程序的启动画面。若在不同的语系(中文、English)中放置各自的位图文件,则安装程序将根据安装环境的不同语系选用相应的Setup&#46;bmp;若将该文件放置在Language Independent(与语系无关)目录项中,则不管操作系统是何种语系,都将以此位图文件作为程序安装的启动画面。<BR><BR><B>(2) Language Independent(与语系无关)</B><BR><BR>  它允许用户为各种操作系统或专门为Windows 95/98/NT操作系统指定相应的安装文件,这样不管怎样的语系,安装程序都会根据相应的操作系统来拣选相应的文件。</FONT></P>
<><FONT color=#000000><STRONG>(3) 其他语系相关的文件<BR><BR></STRONG>  它允许用户为各种操作系统或专门为Windows 95/98/NT操作系统指定相应的安装文件,这样安装程序会根据相应的语系和语系下的操作系统来拣选相应的文件。<BR><BR><B>(4) Advanced Files(高级文件)<BR></B><BR>  在用具体的媒介发布时,允许用户在相应的媒介中放置一些非压缩文件。<BR><BR><B><FONT color=#ff0000>File Groups页面</FONT></B> <BR><BR>  项目工作区窗口的File Groups页面用来管理安装项目所需要的文件组。缺省时,安装程序项目通常有Example Files(示例文件组)、Help Files(帮助文件组)、Program DLLs(应用程序所需的DLL文件组)、Program Executable Files(应用程序文件组)以及Shared DLLs(共享DLL文件组)共五个文件组。<BR><BR>  双击某个文件组,则在主界面的右边窗口中显示出该文件组的相关属性,用户可以方便地进行修改。<BR><BR><B><FONT color=#ff0000>System configuartion页面 <BR></FONT></B><BR>  用来管理安装项目所需要的安装资源。缺省时,一个安装项目通常有String Table(字符串表)、Registry Entries(注册项)等<BR><BR><B><FONT color=#ff0000>Media页面<BR></FONT></B><BR>  项目工作区窗口的Media页面用来管理程序发布时的媒介。在该页面中包含Media Build Wizard(媒介创建向导)、缺省的媒介以及用户新创建的媒介等项,单击\"Media Build Wizard\"将开始媒介创建向导,用来创建新的媒介。<BR><BR>  需要说明的是:在各个页面中,右击鼠标时都会弹出相应的快捷菜单,它包含当前状态下的一些常用操作。<BR></P></FONT>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
 楼主| 发表于 2006-4-25 11:05:05 | 显示全部楼层
对话框修改

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
 楼主| 发表于 2006-4-25 11:05:30 | 显示全部楼层

Installscript工程脚本实例

<DIV style=\"LINE-HEIGHT: 22px; HEIGHT: 22px\" twffan=\"done\">
<DIV style=\"FLOAT: left\" twffan=\"done\"><IMG alt=发贴心情 src=\"http://installshield&#46;jaron&#46;cn/forum/skins/Default/topicface/face1&#46;gif\" twffan=\"done\"></DIV><B>Installscript工程脚本实例</B></DIV>
<DIV style=\"ADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word\" twffan=\"done\" onload=\"this&#46;style&#46;overflowX=\'auto\';\">
<>                                                                                      <BR>////////////////////////////////////////////////////////////////////////////////<BR>//                                                                            <BR>//  IIIIIII SSSSSS                                                            <BR>//    II    SS                          InstallShield (R)                     <BR>//    II    SSSSSS      (c) 1996-2000, InstallShield Software Corporation     <BR>//    II        SS      (c) 1990-1996, InstallShield Corporation              <BR>//  IIIIIII SSSSSS                     All Rights Reserved&#46;                   <BR>//                                                                            <BR>//                                                                            <BR>//  This code is generated as a starting setup template&#46;  You should   <BR>//  modify it to provide all necessary steps for your setup&#46;<BR>//                                                                            <BR>//                                                                            <BR>//    File Name:  Setup&#46;rul                                                   <BR>//                                                                            <BR>//  Description:  InstallShield script                                        <BR>//                                                                            <BR>//     Comments:  This template script performs a basic setup&#46; With minor           <BR>//                modifications, this template can be adapted to create       <BR>//                new, customized setups&#46;<BR>//<BR>////////////////////////////////////////////////////////////////////////////////</P>
<><BR>// Include header files<BR>//#define TITLE \"RegDBSetKeyValueEx &amp; RegDBGetKeyValueEx\"   <BR>#include \"ifx&#46;h\" //DO NOT REMOVE<BR>    <BR>////////////////////// string defines ////////////////////////////</P>
<>//////////////////// installation declarations ///////////////////</P>
<>// ----- DLL function prototypes -----<BR>#define SERIALNUM \"123456\"<BR>#define RES_DIALOG_ID     12027   // ID of Dialog itself  <BR>    // your DLL function prototypes</P>
<><BR>// ---- script function prototypes -----</P>
<><BR>    // your script function prototypes<BR>      prototype DialogShowSdFinishReboot();<BR>    prototype SetupRegistry();</P>
<>    // your global variables</P>
<>  </P>
<>//////////////////////////////////////////////////////////////////////////////<BR>//                                                                           <BR>//  FUNCTION:   OnFirstUIBefore                                            <BR>//                                                                           <BR>//  EVENT:      FirstUIBefore event is sent when installation is run for the first<BR>//              time on given machine&#46; In the handler installation usually displays<BR>//              UI allowing end user to specify installation parameters&#46; After this<BR>//              function returns, ComponentTransferData is called to perform file<BR>//              transfer&#46;<BR>//                                                                           <BR>///////////////////////////////////////////////////////////////////////////////<BR>function OnFirstUIBefore()<BR>    NUMBER  nResult,nSetupType;<BR>    STRING  szTitle, szMsg;<BR>    STRING  szLicenseFile, szQuestion;<BR>    STRING  svName, svCompany, svSerial;<BR>    STRING  szDir;<BR>    STRING  szfolder;<BR>    STRING  szComponents, szTargetdir;<BR>    NUMBER  nLevel; <BR>    HWND   hFont1;  <BR>    STRING  szDialogName,szName,szCompany,szSerial,svSearchPath;<BR>begin <BR>    // TO DO: if you want to enable background, window title, and caption bar title                                                                     <BR>    // SetTitle( @TITLE_MAIN, 24, WHITE );                                        <BR>    // SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION );                     <BR>    // Enable( FULLWINDOWMODE );         <BR>    // Enable( BACKGROUND );         <BR>    // SetColor(BACKGROUND,RGB (0, 128, 128));        <BR>   <BR>    TARGETDIR = PROGRAMFILES <A href=\"mailto:^@COMPANY_NAME\" target=_blank>^@COMPANY_NAME</A> <A href=\"mailto:^@PRODUCT_NAME\" target=_blank>^@PRODUCT_NAME</A>; <BR>    szDir = TARGETDIR;<BR>    SHELL_OBJECT_FOLDER = @FOLDER_NAME;<BR>    svName    = \"\";<BR>    svCompany = \"\";<BR>    svSerial = \"\";</P>
<P><BR>Dlg_Start:<BR>    // beginning of dialogs label</P>
<P>Dlg_SdWelcome:<BR>    szDialogName = \"First_Dialog\";  <BR>    EzDefineDialog (szDialogName, \"\", \"\", RES_DIALOG_ID);<BR>    hFont1 = GetFont(\"宋体\", 9, STYLE_BOLD);</P>
<P>    Enable( BACKGROUND );<BR>    Enable ( FULLWINDOWMODE );<BR>    PlaceBitmap ( SUPPORTDIR ^ \"setup2&#46;bmp\" , 0 , 0 , 0 , FULLSCREEN ); <BR>    <BR>    szTitle = \"欢迎使用*****软件安装程序\"; <BR>    SetFont (FONT_TITLE, STYLE_BOLD, szTitle);<BR>    <BR>    szMsg   = \"  接下来将把*****软件安装到您的计算机上。\\n\\n  强烈建议在继续安装之前关闭其他正在运行的应用程序,这样会有助于在安装过程中避免任何冲突。\\n单击下一步继续,或取消退出安装。\";<BR>    nResult = SdWelcome( szTitle, szMsg );<BR>    <BR>    if (nResult = BACK) goto Dlg_Start;<BR>    DialogSetInfo(DLG_INFO_ALTIMAGE , SUPPORTDIR^\"Myinstall1&#46;bmp\" , TRUE );<BR>    if (nResult = BACK) goto Dlg_Start;</P>
<P>Dlg_SdLicense:<BR>    nSetupType = TYPICAL; <BR>    TARGETDIR = PROGRAMFILES <A href=\"mailto:^@COMPANY_NAME\" target=_blank>^@COMPANY_NAME</A> <A href=\"mailto:^@PRODUCT_NAME\" target=_blank>^@PRODUCT_NAME</A>; <BR>    szDir = TARGETDIR;<BR>    <BR>    SHELL_OBJECT_FOLDER = @FOLDER_NAME;<BR>    szLicenseFile = SUPPORTDIR ^ \"license&#46;txt\";<BR>    szTitle    = \"许可协议\\n  请仔细阅读下面的重要信息,然后继续。\";<BR>    szMsg      = \"  请仔细阅读以下的许可协议,使用滚动条或Page Down键阅读协议的其余部分。\";<BR>    szQuestion = \"  您接受上面协议所述的全部条款吗?如果您选择否,安装程序将会关闭。要继续安装*****软件,您必须接受这个协议。\";<BR>    nResult    = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile );<BR>    if (nResult = BACK) goto Dlg_SdWelcome; <BR>  <BR>  //必须填入注册码的安装界面<BR>/*Dlg_SdRegisterUserEx:<BR>    szName    = \"\";<BR>    szCompany = \"\";<BR>    szSerial = \"\";<BR>    szMsg   = \"  您必须输入*****提供的*****软件产品序列号和正确的信息才能完成*****软件的安装。\";<BR>    szTitle = \"使用者信息\"; <BR>    nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );     */<BR>    <BR>    <BR>                        //不用填入注册码的安装界面<BR>                       Dlg_SdRegisterUser:<BR>    szName    = \"\";<BR>    szCompany = \"\";<BR>    szSerial = SERIALNUM;<BR>    //szMsg   = \"  您必须输入*****提供的*****软件产品序列号和正确的信息才能完成*****软件的安装。\";<BR>    szMsg =\"\";<BR>    szTitle = \"使用者信息\"; <BR>    nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany);    <BR>  <BR>  //注册表中写入用户名称和公司名称,以供其他程序使用 <BR>   RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );<BR>   RegDBSetKeyValueEx( \"SoftWare\\\\AA\\\\BB\\\\用户信息\",<BR>    \"用户名称\", REGDB_STRING,szName,-1);<BR>    <BR>   //if( nResult != BACK &amp;&amp; szSerial != SERIALNUM ) then<BR>    //MessageBox(\"序列号错误!请重新输入\",WARNING);<BR>    //goto Dlg_SdRegisterUser; <BR>    //nResult = 2;<BR>    //endif;<BR>    if (nResult = BACK) goto Dlg_SdLicense;   </P>
<P>Dlg_SdAskDestPath:<BR>    szTitle = \"选择目标文件夹\\n  准备把*****软件安装到哪里?\";<BR>    szMsg   = \"  请选择安装*****软件的文件夹,然后单击下一步继续。\";<BR>    nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );<BR>    TARGETDIR = szDir;  <BR>    RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );<BR>    RegDBSetKeyValueEx( \"SoftWare\\\\AA\\\\BB\\\\用户信息\",<BR>    \"Installpath\", REGDB_STRING,TARGETDIR,-1);<BR>    if (nResult = BACK) goto Dlg_SdRegisterUser; <BR>         <BR>    <BR>Dlg_ObjDialogs:<BR>    nResult = ShowObjWizardPages(nResult);<BR>    if (nResult = BACK) goto Dlg_SdAskDestPath; <BR>    <BR>Dlg_SdSelectFolder:<BR>    szfolder = SHELL_OBJECT_FOLDER; <BR>    szTitle    = \"选择开始菜单文件夹\\n  程序快捷方式建立在哪里?\";<BR>    szMsg      = \"  选择开始菜单的一个文件夹,用来建立程序快捷方式,然后单击下一步继续。\";    <BR>    nResult    = SdSelectFolder( szTitle, szMsg, szfolder );<BR>    SHELL_OBJECT_FOLDER = szfolder;<BR>    if (nResult = BACK) goto Dlg_ObjDialogs;<BR>   <BR>    // setup default status<BR>    SetStatusWindow(0, \"复制到&#46;&#46;&#46;\");     <BR>    Enable(STATUSDLG);<BR>    PlaceWindow ( STATUSDLG , 350 , 200 , LOWER_RIGHT ); <BR>    StatusUpdate(ON, 100);  </P>
<P>    return 0;<BR>end;</P>
<P>///////////////////////////////////////////////////////////////////////////////<BR>//<BR>//  FUNCTION:   OnMoving<BR>//<BR>//  EVENT:      Moving event is sent when file transfer is started as a result of<BR>//              ComponentTransferData call, before any file transfer operations <BR>//              are performed&#46;<BR>//<BR>///////////////////////////////////////////////////////////////////////////////<BR>function OnMoving()<BR>    string szAppPath;<BR>    <BR>begin<BR>    // Set LOGO Compliance Application Path <BR>    // TO DO : if your application &#46;exe is in a subfolder of TARGETDIR then add subfolder <BR>    szAppPath = TARGETDIR;<BR>    RegDBSetItem(REGDB_APPPATH, szAppPath);<BR>    RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY); <BR>    <BR>    <BR>end;   </P>
<P>///////////////////////////////////////////////////////////////////////////////////<BR>//<BR>//  FUNCTION:   OnFirstUIAfter()<BR>//                                                                                                                                     <BR>//              <BR>//              <BR>//<BR>///////////////////////////////////////////////////////////////////////////////<BR>function OnFirstUIAfter()<BR><BR>string szCmdLine;<BR>string szComponent;<BR>STRING  svInfo, szInfo;<BR>   NUMBER nReturn;<BR>   STRING szTemp;<BR>   NUMBER  nvInfo, nInfo, nResult;  <BR>   string szMediaLibrary,svSearchPath;<BR>   //STRING szKey, szPath, szRefDir;     <BR>   </P>
<P>   <BR>   STRING szKey, szNumName, szNumValue, svNumValue;<BR>   NUMBER nType, nSize; <BR></P>
<P><BR>begin  <BR>   </P>
<P>szCmdLine = \"\";  </P>
<P><BR>//////////////////////////////////////////////////////////////////////////////////////////////</P>
<P>//注册ExcelAddin下的文件<BR>//ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\ExcelAddin\\\\</A>\");   <BR>//szCmdLine=\"-s ExcelAddin&#46;dll\";<BR>//LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT);  <BR><BR>    <BR><BR>//注册iRTDB下的文件                         <BR>ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iRTDB\\\\</A>\"); <BR>LaunchAppAndWait(\"regsvr2&#46;bat\",\"\",WAIT);<BR>  <BR>  //050421添加,检测APC-Suite是不是已经安装过,如安装过,则不注册日志组件了<BR>  RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);<BR>  szKey=\"SOFTWARE\\\\SUPCON\\\\APC-Suite\\\\用户信息\";<BR>  szNumName  = \"installed\";<BR>  szNumValue = \"1\";<BR>  nType      = REGDB_NUMBER;<BR>  nSize      = -1;<BR>  if (RegDBGetKeyValueEx (szKey, szNumName, nType, szNumValue,nSize) &lt; 0) then<BR>     ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iRTDB\\\\</A>\");   <BR>     szCmdLine=\"-s AdconLogMgtT&#46;dll\";<BR>     LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT); <BR>     //ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iRTDB\\\\</A>\");   <BR>     szCmdLine=\"-s AdconLogMgtpsT&#46;dll\";<BR>     LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT); <BR>  <BR>  endif;<BR><BR>//注册iMonitor下的文件<BR>ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iMonitor\\\\</A>\");   <BR>szCmdLine=\"-Service\";<BR>LaunchAppAndWait(\"MonitSer&#46;exe\",szCmdLine,WAIT);<BR><BR>LaunchAppAndWait(\"start&#46;bat\",\"\",WAIT);<BR>   <BR>//注册iServer下的文件 <BR>ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iServer\\\\</A>\"); <BR>szCmdLine=\" -s OPCProxy&#46;dll\";<BR>LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT);<BR><BR>szCmdLine=\" -RegServer\";<BR>LaunchAppAndWait(\"MQServer&#46;exe\",szCmdLine,WAIT);   <BR><BR>szCmdLine=\" -RegServer\";<BR>LaunchAppAndWait(\"MQWS&#46;exe\",szCmdLine,WAIT);  <BR><BR>szCmdLine=\" -RegServer\";<BR>LaunchAppAndWait(\"ADT&#46;exe\",szCmdLine,WAIT);   <BR><BR>//注册common下的文件 <BR>ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\common\\\\</A>\"); <BR>szCmdLine=\"-s UserDll&#46;dll\";<BR>LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT);<BR><BR>szCmdLine=\"-s iTrend&#46;ocx\";<BR>LaunchAppAndWait(\"regsvr32&#46;exe\",szCmdLine,WAIT);</P>
<P>                        <BR>//设置环境变量和DCOM设置                                                  <BR>  ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iRTDB\\\\</A>\");  <BR>  szTemp=TARGETDIR + \"<A>\\\\ExecFiles\\\\common\\\\</A>\";;<BR>  szCmdLine=\" -s \" + \'\"\' + szTemp + \'\"\';<BR>  LaunchAppAndWait(\"RegVariable&#46;exe\", szCmdLine, WAIT);</P>
<P>  szCmdLine=\" -InterUsr CTransfer&#46;EXE\";<BR>  LaunchAppAndWait(\"RegVariable&#46;exe\", szCmdLine, WAIT);   <BR>    <BR>   DialogShowSdFinishReboot();  <BR>  end; <BR><BR>// --- include script file section ---</P>
<P><BR>///////////////////////////////////////////////////////////////////////////////<BR>//<BR>//  FUNCTION:   DialogShowSdFinishReboot()<BR>//                                                                                                                                     <BR>//              <BR>// //结束对话框           <BR>//<BR>///////////////////////////////////////////////////////////////////////////////</P>
<P>function DialogShowSdFinishReboot()<BR>NUMBER nResult, nDefOptions;  <BR>STRING szMsg;<BR>STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;<BR>NUMBER bOpt1, bOpt2;<BR>begin<BR><BR>DialogSetInfo(DLG_INFO_ALTIMAGE , SUPPORTDIR^\"00install3&#46;bmp\" , TRUE );<BR>        szTitle = \"安装结束\";<BR>        szMsg      = \"安装结束!\";</P>
<P>if (!BATCH_INSTALL) then<BR>bOpt1 = FALSE;//不选<BR>bOpt2 = FALSE;//不选<BR>szTitle = \"安装完成\";<BR>szMsg1 = \"按完成键结束*****软件的安装。\";//%P代表安装程序名字。<BR>szMsg2 = \" \";//提示信息<BR>szOption2 = \"重新启动计算机。 \";<BR>nResult = SdFinishReboot( szTitle, szMsg1,nDefOptions, szMsg2, 0 );</P>
<P>return 0;<BR>endif;</P>
<P>nDefOptions = SYS_BOOTMACHINE;<BR>szTitle = \"\";<BR>szMsg1 = \"\";<BR>szMsg2 = \"\";<BR>nResult = SdFinishReboot( szTitle, szMsg1,nDefOptions, szMsg2, 0 );<BR>//由此控制决定是否重新启动计算机。</P>
<P>return nResult;<BR>end;</P>
<P><BR>//////////////////////////////////////////////////////////////////////////////<BR>//<BR>//  FUNCTION:   OnUninstallingFile<BR>//<BR>//  EVENT:      Uninstalling File event is sent before a file that is being uninstalled<BR>//<BR>//  ARGUMENTS:  File - full path of file being uninstalled<BR>//<BR>///////////////////////////////////////////////////////////////////////////////<BR>export prototype RTDB_UnInstalling();<BR>function RTDB_UnInstalling()           <BR>string szTemp, szCmdLine,szKey,szKey1;<BR>begin<BR>  ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iRTDB\\\\</A>\");<BR>  LaunchAppAndWait(\"unregsvr2&#46;bat\",\"\",WAIT);<BR><BR><BR>  <BR>  szTemp=TARGETDIR + \"<A>\\\\ExecFiles\\\\common\\\\</A>\";;<BR>  szCmdLine=\" -u \" + \'\"\' + szTemp + \'\"\';<BR>  LaunchAppAndWait(\"RegVariable&#46;exe\", szCmdLine, WAIT);  </P>
<P>  ChangeDirectory(TARGETDIR^\"<A>\\\\ExecFiles\\\\iMonitor\\\\</A>\");  <BR>  LaunchAppAndWait(\"Stop&#46;bat\",\"\",WAIT); <BR>  LaunchAppAndWait(\"unreg&#46;bat\",\"\",WAIT);<BR>  <BR>  TARGETDIR = WINDIR;<BR>  DeleteFile (\"Advplant&#46;ini\");<BR><BR>  <BR>end;</P></DIV>
回复

使用道具 举报

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
 楼主| 发表于 2006-4-25 11:05:58 | 显示全部楼层
<STRONG>获得安装目标盘剩余空间</STRONG>
<DIV style=\"ADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word\" twffan=\"done\" onload=\"this&#46;style&#46;overflowX=\'auto\';\">//用prototype关键字声明函数<BR>prototype CheckDiskSpace();  <BR>//常量定义:其中#define是宏定义命令,它的作用是将TARGETDISK用DISK_DRIVE来代替;DISK_DRIVE称为宏名<BR>#define DISK_DRIVE TARGETDISK<BR>  <BR>function CheckDiskSpace() <BR><BR>//变量申明<BR><FONT color=#333333>    STRING szDrive,svString;<BR>    NUMBER nSpace,nResult;</FONT> <BR><BR>begin<BR><BR><FONT color=#444444><FONT color=#222222>    szDrive=DISK_DRIVE;<BR>    nSpace=GetDiskSpaceEx ( szDrive,MBYTES ); //使用GetDiskSpaceEx 函数获得目标盘剩余空间大小<BR><BR>    nResult=NumToStr(svString,nSpace);<BR>    if(nResult&lt;0) then<BR>        MessageBox(\"从数字型转换到字符型时发生错误&#46;\",SEVERE);<BR>        abort;<BR>    endif;<BR><BR>    SprintfBox(INFORMATION,\"磁盘可用空间\",szDrive+\"盘可用空间:%s MB\",svString);</FONT>   <BR><BR></FONT>end;<BR><BR><FONT color=#3300ff>小知识:</FONT>可以在script编辑界面按下Ctrl+I键打开函数向导对话框。<BR>            函数的函数体由begin和end之间的若干条语句组成,用于实现这个函数执行的动作。\"函数名\"必须和声明时的函数相同,\"形参\"应与声明时的形参类型一一对应,但\"形参名\"可以任意的有效InstallScript标识符。如果需要在函数中使用其他变量,则这些变量应在begin前进行定义。<BR>            函数名要是一个有效的InstallScript标识符(注意命名规则),函数名后面必须跟一对圆括号\"( )\",以区别于变量名及其他用户定义的标识名。函数的形式参数写在括号内,参数表中参数个数可以是0,表示没有参数,但圆括号不能省略,也可以是一个或多个参数,但多个参数间要用逗号分隔。<BR>           使用GetDiskSpaceEx 函数获得目标盘剩余空间的准确大小,而GetDiskSpace函数只能返回小于2G的剩余空间。<BR>           TARGETDISK-installshield的系统变量:包含了安装目标盘符的名称。会随TARGETDIR(包含了安装程序在硬盘上的目标文件夹的完整路径)的改变自动更新。<BR></DIV>
回复

使用道具 举报

0

主题

3

回帖

0

积分

待审核会员

积分
0
发表于 2008-9-19 09:50:20 | 显示全部楼层
你好,我这里有几个问题想请教你一下,望高手指点指点
我用C++做了一个程序,是3DES加密解密算法的,现在想把这个程序用InstallShield做成一个安装程序,求高手指点具体怎么做,越详细越好,小弟不胜感激。还有就是用这个InstallShield软件能作一个类似于杀毒软件那样的一个升级程序吗?也就是说以后我想把我的这个3des程序更新。

我研究了一下,可是弄了半天好像一直没有把这个程序封装到安装包里面,不知道怎么回事,求高手帮助,最好能给我详细的制作步骤,这样更好 谢谢各位高手~!
还有,我制作的安装包生成之后不知道在哪了。。。
我用的版本是InstallShield 2009
回复

使用道具 举报

0

主题

3

回帖

0

积分

待审核会员

积分
0
发表于 2008-9-22 08:54:07 | 显示全部楼层
楼主,帮帮忙啊,非常感谢~
回复

使用道具 举报

2074

主题

6459

回帖

45万

积分

管理员

夏天啊·····

积分
452930

王子的皇冠大富翁大众宠儿外太空使者社区居民

QQ
 楼主| 发表于 2008-9-25 23:28:03 | 显示全部楼层
不能做成升级程序哦。。升级程序你可以单独写。。。。
或者你后面再制作一个安装包,直接覆盖前面的安装文件。

至于如何制作成安装程序。。你可以根据向导来。。很简单的。
回复

使用道具 举报

0

主题

3

回帖

0

积分

待审核会员

积分
0
发表于 2008-10-6 09:02:19 | 显示全部楼层
谢谢LZ~
回复

使用道具 举报

0

主题

2

回帖

0

积分

待审核会员

积分
0
发表于 2008-10-29 11:19:15 | 显示全部楼层
楼主强人啊
本人最近也在琢磨 installshield
非常希望能加楼主为好友
我qq:413469075
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Enjoy Game

GMT+8, 2024-12-27 13:37 , Processed in 0.114965 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表