IS制作Oracle 静默安装包.docx
- 文档编号:9462109
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:4.97MB
IS制作Oracle 静默安装包.docx
《IS制作Oracle 静默安装包.docx》由会员分享,可在线阅读,更多相关《IS制作Oracle 静默安装包.docx(28页珍藏版)》请在冰豆网上搜索。
IS制作Oracle静默安装包
IS制作Oracle静默安装包
第一部分:
前言
目标需求
实现ESL——嵌入式软件许可
在安装过程中,需要安装我们的软件产品,并且安装Oracle数据库。
安装数据库之后
需要导入基础数据,创建指定的库,创建用户和表空间。
在安装Oracle数据时,必须实现
静默安装,不能出现GUI界面,也不能暴露出安装参数。
所有安装过程一次完成,无需用
户干预。
环境说明
操作系统——WindowsXPSP3
安装工具——InstallShield2009—PremierEdition
数据库——Oracle10G-R2
第二部分:
配置Oracle
此过程需要对Oracle进行相关的配置,包括录制Response文件、制作带数据的模板、
调整安装脚本、解锁用户脚本,设置环境变量等操作。
录制response文件
1.运行CMD,在命令行窗口进入Oracle所在路径,这里路径为D:
\Orac\database,
Oracle10gserver.rsp是要保存的文件名。
2.运行此命令后,Oracle安装界面被打开。
3.去掉创建启动数据库
4.在汇总信息出现时,退出安装界面,不进行安装。
5.此时发现在D:
\Orac\database目录中出现了Oracle10gserver.rsp文件,说明录制成功。
该
文件存放的路径,我们后续将会在Install.bat中用到。
创建用户、表空间、导入基础数据
1.在已有的同版本数据库中创建用户、表空间、导入基础数据
2.使用SQL系统账号登陆,并执行CreateDB.sql脚本。
注意:
脚本中的路径应该以实际的
数据路径为准。
3.导入文件zgisexp.dmp和zproexp.dmp。
把此脚本存为CMD文件,直接执行即可。
注意:
脚本中的路径应该为实际dmp文件存放的路径。
另外此脚本为本单位的数据信息,
可不作为参考!
创建用户、表空间脚本:
制作带基础数据的模板
有了以上的数据,我们就开始制作数据的模板,以便建库的时候使用。
1.创建数据库模板
2.创建好后,我们会在
文件。
temp_10g.dbctemp_10.dfb
此处两个文件的作用是,按照数据库模板的形式创建数据库,无需在导入表,创建
用户和导入基础数据。
这一步,先在已有的Oracle环境下完成。
我们拷贝这两个文
件即可。
3.修改temp_10g.dbc
安装脚本描述
在进行Oracle安装过程中,需要安装程序调用以下的脚本,以实现Oracle的安装过程。
1.Install.cmd安装Oracle软件脚本
执行此脚本时,需要带以上的参数,具体参数后边会有说明。
2.copynetca.cmd拷贝监听文件和模板文件,并创建监听服务脚本。
Ø脚本中存在两个接收的变量,这个是从IS中传出来的路径参数,必须存在。
另外,模
板文件必须拷贝到指定的路径下,
3.createDB.cmd创建带模板数据的数据库脚本。
此脚本用于根据数据模板创建数据库,命令带如下的参数:
4.unlock.bat用户解锁脚本
安装模板生成的数据库,其用户状态为锁定,需要执行解锁脚本。
其中change.sql为:
集合Oracle安装脚本
以上的4个脚本是安装过程必备的4个脚本,我们现在整理为一个批处理文件install.bat,
以便我们在制作安装包的时候调用该批处理。
根据上述脚本的参数类型,我们把参数补完整。
Ø脚本中存在一个接收的环境变量%DATABASEDIR%,这是由IS运行此程序带出来的参
数,此参数为安装的目标路径。
Ø%SOURPATH%这个参数虽然没有在BAT文件中有任何的接收说明,但是在执行安装
过程中,IS会创建该参数在BAT文件头端,该参数为目标源路径地址。
如何在IS中自
动创建该变量,在第三部份中说明。
Ø以上的脚本分别调用了上边的4个脚本,他们后边均带有参数。
Ok,现在已经完成了Oracle方面的设置,我们需要保留的文件为1+4个批处理文件、1个.SQL
文件和两个模板文件。
这些文件将会在IS或安装中被调用。
卸载脚本描述
1.deinstall.cmd卸载oracle软件,该脚本的参数如下:
2.completeClean.cmd清除相关文件和设置,该脚本的相关参数如下:
集合卸载脚本
Ø以上两个脚本为卸载数据库所用,我们把他集合为一个批处理,以方便IS调用。
Ø该脚本中依然存在%DATABASEDIR%和%SOURPATH%两个参数。
作用同install.bat
第三部分:
使用IS2009
向导设置
1.打开InstallShield2009,新建一个Installscript.MSIProject,建议选择此工程,因为该工
程支持脚本编写。
选择类型为WindowsInstaller>InstallScript.MSIProjcet
2.进入IS向导设置界面,下面我们分别进行设置。
下图为ApplicationInformation页面
3.点击导航,进入InstallationArchitecture页面,选择YES设置软件组件结构。
Files为安
装文件,Database为数据库文件。
4.点击导航,进入ApplicationFiles页面,设置安装目标文件夹,并且在database文件夹
下添加如下文件。
安装设计
1.在向导设置中进行简单操作后,进入安装设计标签页面。
2.在基本设置页面查看安装目录和语言设置
3.在Organization–>Features中设置安装路径,以及其他的设置。
下图为Files的设置
下图为Database的设置,注意目标路径为[INSTALLDIR]Database,该文件夹是在Files文件夹
下的目录。
请设置好OnInstalling、OnInstalled、OnUninstalling、OnUnistalled选项。
该选项允许用
户指定和调用相关的InstallScripe函数。
后边我们在IS中的脚本编程中将讲到如何在这些
函数中写代码。
4.用户也可以在ApplicationData->FilesandFolders中查看或添加修改文件。
5.在Behavior.andLogic—>SupportFiles/Billboards中的Disk1下添加需要安装包支持的文件
和文件夹。
Win32文件夹是存放基础脚本的文件夹;database文件夹是Oracle的安装文件夹;
Temp_10G.dbc和Temp_10G.dfb为建库模板文件。
以上步骤完成了IS中的基本设置和安装设置,只要是目录结构的选择,Files文件夹是
安装程序文件的文件夹,它的参数是[INSTALLDIR]。
它的目录下是Database文件夹。
参数
是[INSTALLDIR]Database。
另外注意,3个脚本文件必须放在指定的文件夹位置,这关系
到脚本语言中的相互调用。
支持文件将存放在光盘的跟目录下,这给我们直接调用这些文件带来了方便。
第四部分:
IS2009中的脚本编程
传递源路径参数
用户在使用IS安装过程中,我们不能够将所有信息都复制到本地硬盘进行安装,通常
情况下会读取源盘上的一些信息,譬如光盘下的某个路径中的内容。
但是如何获取安装的路
径信息呢?
又如何让批处理文件获知这些内容呢?
这里我们用到IS函数库中的3个函数:
BatchAdd(添加一个环境变量到一个批处理文件)
BatchFileLoad(把一个批处理文件装入内存来用高级批处理函数编辑它)
BatchFileSave(保存一个由BatchFileLoad装入的批处理文件)
BatchAdd函数插入一个SET命令或其它DOS命令到一个已经由BatchFileLoad装入内
存的批处理文件中。
参数nOptions使你可以将新命令添加到文件的第一个或最后一个语句,
用新命令取代一个现存语句,或指定将新命令添加到一个现存语句的前面或后面。
调用
BatchAdd前,你必须调用BatchFileLoad来把要修改的文件装入内存。
在你修改该文件后,
调用BatchFileSave来把它保存到磁盘。
下面我们在IS2009中去使用这些函数。
1.在InstallationDesigner中选择IS左边栏的Behavior.andLogic中的InstallScript。
2.在脚本框的上方,下拉选择框,选择Files
3.之后,选择右边的下拉框,选择Installed
之所以选择Installed,是因为安装过程中会把Install.bat批处理脚本复制到本地硬盘,
只有在成功复制之后,我们才能调用该批处理脚本,使用这些函数。
如图所示:
Installed函数中的具体脚本如下:
#defineEXAMPLE_BATINSTALLDIR^"Database\\install.bat"
#defineEXAMPLE_BAK"install.bak"
exportprototypeDefaultFeature_Installed();
functionDefaultFeature_Installed()
STRINGTARG,SOURCE,TARG1;
STRINGDBPATH,DATA,DATAsur,TITLE;
begin
//Loadthebatchfiletobeedited.
if(BatchFileLoad(EXAMPLE_BAT)<0)then
MessageBox("Unabletoload"+EXAMPLE_BAT+".",SEVERE);
abort;
endif;
DBPATH=SRCDISK+"\\";
//AddthelineSETPATH=SRCDISK+"\\”.
if(BatchAdd("SOURPATH",DBPATH,"",BEFORE)<0)then
MessageBox("SecondcalltoBatchAddfailed",WARNING);
abort;
endif;
//Savetheupdatedfile;backuptheoriginalfile.
if(BatchFileSave(EXAMPLE_BAK)<0)then
MessageBox("Unabletosave"+EXAMPLE_BAK+".",SEVERE);
//else
//MessageBox("Batchfilesaved.Backupcreated.",INFORMATION);
endif;
该脚本中,我们定义Install.bat的安装路径,并且在开始处用BatchFileLoad函数调用它,
注意,该调用并不是执行它,而是在内存中临时调用。
然后设置一个变量DBPATH=SRCDISK
+"\\",SRCDISK是IS判断Setup.inx所在的位置,取出安装盘符,当然我们后边要加上反斜
杠。
譬如光盘在F:
我们这样做的目的就是在批处理的第一行插入SetSOURPATH=F:
\。
BatchAdd函数用于加载这个变量,保证在该批处理文件中最开始就设置这一变量。
最后使
用BatchFileSave保存批处理文件。
同样,在卸载时候我们同样需要在Deinstall.bat中这样去做,只是位置要确定在
Uninstalling,并且定义deinstall.bat的安装路径即可。
UnInstalling函数中的具体脚本如下:
#defineUNINSTALL_BATINSTALLDIR^"Database\\deinstall.bat"
#defineUNINSTALL_BAK"deinstall.bak"
exportprototypeDefaultFeature_UnInstalling();
functionDefaultFeature_UnInstalling()
STRINGTARG,SOURCE;
STRINGDBPATH,DATA,DATAsur,TITLE;
begin
//Loadthebatchfiletobeedited.
if(BatchFileLoad(UNINSTALL_BAT)<0)then
MessageBox("Unabletoload"+EXAMPLE_BAT+".",SEVERE);
abort;
endif;
DBPATH=SRCDISK+"\\";
//AddthelineSETPATH=SRCDISK+"\\".
if(BatchAdd("SOURPATH",DBPATH,"",BEFORE)<0)then
MessageBox("SecondcalltoBatchAddfailed",WARNING);
abort;
endif;
//Savetheupdatedfile;backuptheoriginalfile.
if(BatchFileSave(UNINSTALL_BAK)<0)then
MessageBox("Unabletosave"+UNINSTALL_BAK+".",SEVERE);
//else
//MessageBox("Batchfilesaved.Backupcreated.",INFORMATION);
endif;
执行批处理文件
我们修改完批处理文件,就要在修改保存之后执行它。
这需要用到Is函数库中的
LaunchAppAndWait()函数
语法:
LaunchAppAndWait(szProgram,szCmdLine,lWait);
说明:
LaunchAppAndWait函数运行由szProgram指定的带有szCmdLine指定的命令行
参数的应用程序。
第三个参数,lWait指示安装在继续前是否要等待直到运行的应用程序终
止。
一个安装程序只能监控由szProgram指定的应用程序;如果该应用程序要运行其它应
用程序或进程,安装程序不能监控它们。
因此,安装程序将在第一个应用程序结束后继续,
即使那时由第一个应用程序运行的其它应用程序仍在运行。
注意如果运行的应用程序终止失
败,则安装程序将无限等待运行的应用程序完成。
添加在Installed脚本的后面:
TARG=INSTALLDIR^"Database";
if(LaunchAppAndWait(INSTALLDIR^"Database\\install.bat",TARG,LAAW_OPTION_WAIT|
LAAW_OPTION_HIDDEN)<0)then
MessageBox("Unabletolaunchinstall.bat",SEVERE);
endif;
end;
LAAW_OPTION_HIDDEN这个参数是隐藏bat的执行窗口,它与
LAAW_OPTION_WAIT并用是隐藏并且等待程序执行完成后返回,注意他们的前后顺序。
添加在UnInstalling脚本的后面:
TARG=INSTALLDIR^"Database";
if
(LaunchAppAndWait(INSTALLDIR^"Database\\deinstall.bat",TARG,LAAW_OPTION_WAIT|
LAAW_OPTION_HIDDEN)<0)then
MessageBox("Unabletolaunchdeinstall.bat",SEVERE);
endif;
end;
脚本已经完成,我们编译脚本,并确定没有任何的问题。
第五部分:
其他
修改界面风格
1.在InstallationDesigner中选择IS左边栏的UserInterface中的Dialogs
2.在右边窗口中选择Skins,选择之后点击Select
3.界面窗口风格改变
编译打包
1.在InstallationDesigner中选择IS左边栏的Media中的Realrases
2.在右边栏Releases点击右键,选择ReleasesWizard…
3.出现向导界面
4.在该界面中,注意几个界面,其余均为默认
5.FilterSetting界面,不要做任何的选择
6.MediaType界面,选择NetworkImage
注意:
该地点不要选择过滤!
!
默认即可,若选择,导致读取光盘1158问题!
上图为错误图
完整的安装包文件
第六部分:
遇到的问题
1158问题:
过滤语言操作导致,不选择过滤项即可
中文输入乱码问题:
在向导中进行中文输入即可
环境变量问题:
由于IS提供设置环境变量的功能,先开始认为在IS中设置环境变量就可以
通过bat去读取,但是这样做是错误的,变量是可以添加成功,但不允许该次的调用,所以
放弃了这种方法,改用函数。
设计思路问题:
先开始是创建新库,并分别导入表,创建用户,导入数据,这样做麻烦的要
死,参数问题不断。
后来改用数据模板建库。
目录问题:
开始是这样打算的,把文件和数据库用不同的目录区分开,UI中出现两个路径
选择页面,可是IS中只提供一个安装INSTALLDIR的目录的参数,另外一个目录路径我不
知道如何获取和调用。
故采用在INSTALLDIR目录下又创建了Database文件夹。
第七部分:
总结
本人第一次使用IS,走了不少弯路,先开始用ISExpress版本,发现根本无法使用脚本,改
成IS09,由于对Oracle的不熟悉,批处理的不熟悉,IS编程语言的不熟悉,导致此次制作
过程颇为漫长。
零零散散历时一个多月的时间。
这里要感谢IS群的帮助,是他们给我前进的动力。
问题一一排除,最终做好产品,提交Oracle。
特别感谢,海洋女神,奕婷,Blue,宇心,csp等等。
。
。
以上全部内容仅仅包含ORACLE的打包,公司的产品应用并没有放在其中。
IS群19622645空白制作QQ:
28021418
部分源代码
exportprototypeNew_Feature_Installing();
functionNew_Feature_Installing()
begin
end;
//---------------------------------------------------------------------------
//TheInstallingeventissentbeforethefeatureDefaultFeature
//isinstalled.
//---------------------------------------------------------------------------
exportprototypeDefaultFeature_Installing();
functionDefaultFeature_Installing()
STRINGdiskpath,szCommand,szCmdLine,szCommandecp,szCmdLineecp;
begin
diskpath=SRCDISK+"\\";//定义安装盘路径
//运行framework20安装程序
if(LaunchAppAndWait(SRCDIR^"supportfiles\\dotnetfx.exe","",LAAW_OPTION_WAIT/*|
LAAW_OPTION_HIDDEN*/)<0)then
MessageBox("Unabletolaunchdotnet",SEVERE);
endif;
if
(LaunchAppAndWait(SRCDIR^"supportfiles\\framwork2.0\\setup.exe","",LAAW_OPTION_WAIT/*
|
LAAW_OPTION_HIDDEN*/)<0)then
MessageBox("Unabletolaunchdotnet2",SEVERE);
endif;
//定义MSI文件参数及MSI文件位置
szCommand=WINSYSDIR^"msiexec.exe";
LongPathToShortPath(szCommand);
szCmdLine=SRCDIR^"supportfiles\\EngineRT\\setup.msi";
LongPathToShortPath(szCmdLine);
//运行MSI文件
if(LaunchAppAndWait(szCommand,"/i"+szCmdLine,LAAW_OPTION_WAIT)<0)then
MessageBox("UnabletolaunchACGIS",SEVERE);
endif;
//szCommandecp=SRCDIR^"supportfiles\\SoftwareAuthorization.exe";
//LongPathToShortPath(szCommandecp);
//szCmdLineecp=SRCDIR^"supportfiles\\license.ecp";
//LongPathToShortPath(szCmdLineecp);
if(LaunchAppAndWait(SRCDIR^"supportfiles\\Runecp.bat",diskpath,LAAW_OPTION_WAIT/*
|
LAAW_OPTION_HIDDEN*/)<0)then
MessageBox("Unabletolaunchecp",SEVERE);
endif;
end;
//---------------------------------------------------------------------------
//TheInstalledeventissentafterthefeatureDefaultFeature
//isinstalled.
//-------------------------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IS制作Oracle 静默安装包 IS 制作 Oracle 静默 安装