如何在软件打包时集成oracle客户端
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在软件打包时集成oracle客户端相关的知识,希望对你有一定的参考价值。
做程序的时候,经常会需要安装Oracle的客户端,如果客户终端非常多的时候,这就会是一项很麻烦的工作,一方面要安排我们的应用程序,另一方面要安装Oracle客户端,而且还要对Oracle客户端进行NET EASY配置,真是不胜其烦。为此我研究了很久,现在终于做到了可以把Oracle客户端和应用程序一起打包,又自己用程序来配置NET EASY,刚好前两天有两个小弟问我如何把客户端打包和用程序配置NET EASY的问题,我今天就在这里说一下。
由于时间问题,今天就只能讲一下客户端打包的问题,另一个问题我会在下一篇给大家讲一下。
1、打包要知道的问题:
A、要打包哪些文件。
B、如何修改注册表。
C、如何设置环境变量。
D、打包使用哪些工具。
2、打包要使用的文件:
我们先找一个装有Oracle的机器,把以下的文件打包。为了保证Oracle能正常访问,我们需要保持原目录结构不变。
A、$ORACLE_HOMEBIN下边所有DLL,IMP.EXE,EXP.EXE,SQLPLUS.EXE,SQLPLUSW.EXE。($ORACLE_HOME指的是ORACLE的主目录,比如D:ORACLEORA8I)。
B、$ORACLE_HOMEnetwork目录下的三个目录:Admin、mesg、tnsapi,把它们全部打包。
C、$ORACLE_HOMEocommonnls目录。
D、$ORACLE_HOMEoracoremesg目录。
E、$ORACLE_HOMEsqlplus下的两个目录:admin、mesg。
3、如何修改注册表:
为不麻烦,我们可以把这个装有Oracle的机器的注册表里边Oracle信息照搬过来。全部照抄。
4、如何设置环境变量:
设置环境变量,我们要在PATH前边加上$ORACLE_HOMEBIN;
5、使用哪些打包工具:
我个人比较喜欢的工具是WiseInstaller,它的功能很强大,能导入整个文件目录(我感觉这一点比Install shilled要好)、导入注册表、也可以设置环境变量,以及设置NT服务等等(我好象是给它做广告似的)。
我们现在就可以使用它来做我们的客户端了。
第一步,先把我说的这些文件目录全部导入到我们的安装工程中去。
第二步,找到设置注册表选项,导入注册表中HKEY_LOCAL_MACHINESOFTWAREORACLE下边所有的注册表值。
第三步,找到环境变量设置选项,在它的PATH那里加上$ORACLE_HOMEBIN。这里的$ORACLE_HOME用来代替。
做完这一切,编译,发布,完成。
6、如何用手工来修改NET EASY:
现在假设我们已经做完了这个安装包,并且把它安装到了我们的电脑上边,那么,在开始菜单上是没有ORACLE这个选项的,如何设置Oracle NET EASY呢?
我们现在暂时可以这样做:
打开我们的Oracle客户端的安装目录,找到NETWORKADMIN子目录下边的tnsnames.ora这个文件,直接对它进行编辑就行了。
比如,我们现在想配置一个叫做NTSERVER的服务名,我们就可以这样写:
NTSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 机器名)(PORT = 端口号))
)
(CONNECT_DATA =
(SERVICE_NAME = 全局数据库名)
)
)
然后,直接把它加到tnsnames.ora这个文件的后边就行了。
如果NTSERVER这个服务名已经存在的话,我们可以直接修改它的机器名、端口号和全局数据库名就可以了。
参考技术A 不知道你是打包成exe安装文件还是其他的, 打exe推荐使用 inno Setup
如何利用InstallShield for Delphi7打包Oracle9i客户端制作C/S数据库应用程序?
各位大虾:
小生菜鸟飞飞想完成如下工作:
以Oracle9i作为后台数据库,以Delphi7作为前台开发工具制作一个客户机/服务器(C/S)类型的数据库应用系统.计划以ADO组件的形式访问数据库中的表.
请问我该如何利用Delphi7自带的安装程序制作工具InstallShield Express for Delphi7将Oracle客户端打包进安装程序呢? 如果每一台客户机上都要安装Oracle客户端的话那好象太笨了.请问有没有什么办法可以直接把需要的文件拷贝出来,同时把注册表里的哪些值需要导出来呢?飞飞不想利用第三方控件,因为怕涉及到版权问题,很麻烦.
请这方面有经验的大虾给予指点,最好能给出详细的步骤,因为飞飞在这方面经验是很欠缺的.
飞飞在此多谢了!
我建議:
1. 用BDE連接方式較好
2. InstallShield Express for Delphi7生成最小安裝程式
3. 在你電腦最小化安裝ORACLE
4. 把以上二者安裝在硬盤的程式打包拷貝出來
5. 用XCOPY 把這些文件按原目錄拷貝進電腦就可以
6. 不過電腦需要重新啟動的
7. 以上文件在安裝時最好裝在C:盤
因為有電腦只有C:盤,可能沒有別的盤的
8. 以上拷貝過程要作個批處理的
以下是我的批處理,參考一下:
z:ufferSETUPFOXSETUP
XCOPY z:BUFFEROOPROGRA~1*.* /S C:PROGRA~1
MD c:ORACLE
XCOPY z:BUFFEROOORACLE*.* /S c:ORACLE
COPY C:AUTOEXEC.BAT C:AUTOEXEC1.BAT
COPY z:BUFFER2AUTOEXEC.BAT C:
COPY z:BUFFEROON8EC_D.LNK C:
COPY z:BUFFEROO*.REG C:
REGEDIT C:ORACLE.REG
REGEDIT C:ODBC1.REG
REGEDIT C:ODBC2.REG
COPY z:ufferSETUPDLL*.* C:WINNTSYSTEM
COPY z:ufferSETUPDLL*.* C:WIN98SYSTEM
COPY z:ufferSETUPDLL*.* C:CWIN98SYSTEM
COPY z:ufferSETUPDLL*.* C:WINdowsSYSTEM
COPY z:ufferSETUPDLL*.* C:WINdows.000SYSTEM
MD C:FOXMOLD
COPY z:BUFFERFOXMOLD*.* C:FOXMOLD
COPY Z:FOXMOLD*.LNK C:WINNTDESKTOP
COPY Z:FOXMOLD*.LNK C:WIN98DESKTOP
COPY Z:FOXMOLD*.LNK C:CWIN98DESKTOP
COPY Z:FOXMOLD*.LNK C:WINDOWSDESKTOP
COPY Z:FOXMOLD*.LNK C:WINDOWS.000DESKTOP
REM EDIT BY KENT. -START
COPY z:BUFFERVCLMID50.BPL C:WINNTSYSTEM32
COPY z:BUFFERVCLMID50.BPL C:WIN98SYSTEM32
COPY z:BUFFERVCLMID50.BPL C:CWIN98SYSTEM32
COPY z:BUFFERVCLMID50.BPL C:windowsSYSTEM32
COPY z:BUFFERVCLMID50.BPL C:windows.000SYSTEM32
REM EDIT BY KENT. -END.
C:PROGRA~1COMMON~1BORLAN~1BDEBDEADMIN
exit
以上可适合几種WINDOWS系統版本的
以下是我的批處理,參考一下: 安裝DELPHI環境 z:ufferSETUPFOXSETUP XCOPY z:BUFFEROOPROGRA~1*.* /S C:PROGRA~1 拷貝ORACLE MD c:ORACLE XCOPY z:BUFFEROOORACLE*.* /S c:ORACLE 拷貝批處理 COPY C:AUTOEXEC.BAT C:AUTOEXEC1.BAT COPY z:BUFFER2AUTOEXEC.BAT C: 拷貝ORACLE鍊接及注冊 COPY z:BUFFEROON8EC_D.LNK C: COPY z:BUFFEROO*.REG C: 註冊 REGEDIT C:ORACLE.REG REGEDIT C:ODBC1.REG REGEDIT C:ODBC2.REG 拷貝DELPHI包 COPY z:ufferSETUPDLL*.* C:WINNTSYSTEM COPY z:ufferSETUPDLL*.* C:WIN98SYSTEM COPY z:ufferSETUPDLL*.* C:CWIN98SYSTEM COPY z:ufferSETUPDLL*.* C:WINdowsSYSTEM COPY z:ufferSETUPDLL*.* C:WINdows.000SYSTEM 拷貝應用程式 MD C:FOXMOLD COPY z:BUFFERFOXMOLD*.* C:FOXMOLD COPY Z:FOXMOLD*.LNK C:WINNTDESKTOP COPY Z:FOXMOLD*.LNK C:WIN98DESKTOP COPY Z:FOXMOLD*.LNK C:CWIN98DESKTOP COPY Z:FOXMOLD*.LNK C:WINDOWSDESKTOP COPY Z:FOXMOLD*.LNK C:WINDOWS.000DESKTOP REM EDIT BY KENT. -START 拷貝DELPHI包 COPY z:BUFFERVCLMID50.BPL C:WINNTSYSTEM32 COPY z:BUFFERVCLMID50.BPL C:WIN98SYSTEM32 COPY z:BUFFERVCLMID50.BPL C:CWIN98SYSTEM32 COPY z:BUFFERVCLMID50.BPL C:windowsSYSTEM32 COPY z:BUFFERVCLMID50.BPL C:windows.000SYSTEM32 REM EDIT BY KENT. -END. C:PROGRA~1COMMON~1BORLAN~1BDEBDEADMIN exit 修改DELPHI BDE |
1.在安装了Oracle客户端程序后,在Oracle安装目录下有如下目录和文件是连接Oracle数据库服务器所必需的:(最好保持目录层次关系结构) 2.OracleBIN及子目录文件,并且保证应用程序可以找到该目录,即该目录为系统目录或者PATH目录。 3.OracleOCOMMONNLSADMIN目录以及其下所有文件 4.OracleOCOMMONNLSMESG目录以及其下所有文件 5.OracleNETWORKADMIN nsnames.ora 这个文件是配置网络服务名用的 可以用记事本打开,改为正确的配置。 6.OracleORACOREMesg以及其下所有MSB文件 7.导入注册表到客户机: REGEDIT5 [HKEY_LOCAL_MACHINESOFTWAREORACLE] "inst_loc"="C:\Program Files\Oracle\Inventory" "ORACLE_HOME"="D:\oracle\ora81" "ORACLE_HOME_NAME"="OraHome81" "API"="D:\oracle\ora81\dbs" "ORACLE_GROUP_NAME"="Oracle - OraHome81" "NLS_LANG"="NA" "OLEDB"="D:\oracle\ora81\oledb\mesg" "VOBHOME2.0"="D:\oracle\ora81" "OO4O"="D:\oracle\ora81\oo4o\mesg" [HKEY_LOCAL_MACHINESOFTWAREORACLEALL_HOMES] "HOME_COUNTER"="1" "DEFAULT_HOME"="OraHome81" "LAST_HOME"="0" [HKEY_LOCAL_MACHINESOFTWAREORACLEALL_HOMESID0] "NAME"="OraHome81" "PATH"="D:\oracle\ora81" "NLS_LANG"="NA" [HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0] "ID"="0" "ORACLE_GROUP_NAME"="Oracle - OraHome81" "ORACLE_HOME_NAME"="OraHome81" "ORACLE_HOME"="D:\oracle\ora81" "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" "ORACLE_SID"="QIAODB" //这个要和服务器的sid一致 "ORACLE_HOME_KEY"="Software\ORACLE\HOME0" "SQLPATH"="D:\oracle\ora81\dbs" "ORACLE_BASE"="D:\oracle" "MSHELP_TOOLS"="D:\oracle\ora81\MSHELP" "RDBMS_CONTROL"="D:\oracle\ora81\DATABASE" "RDBMS_ARCHIVE"="D:\oracle\ora81\DATABASE\ARCHIVE" |
以上是关于如何在软件打包时集成oracle客户端的主要内容,如果未能解决你的问题,请参考以下文章
如何利用InstallShield for Delphi7打包Oracle9i客户端制作C/S数据库应用程序?
Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理