打包还有Oracle客户端的应用程序

 

有关如何抽取oracle客户端,请参见《制作安装包之抽取oracle客户端的一种方法》。

抽取文件后,在安装的时候还需要修改相应的注册表,环境变量,NSIS脚本代码大致如下(oracle10g,支持oracle oledb):

----------------------------------------------------------------------------------------------------

;在注册表中写入oracle信息
  WriteRegStr   HKLM "SOFTWARE/ORACLE" "inst_loc" "C:/Program Files/Oracle/Inventory"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "ORACLE_HOME" "$INSTDIR/Oracle"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "ORACLE_HOME_NAME" "OraClient10g_home1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "ORACLE_GROUP_NAME" "Oracle - OraClient10g_home1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "ORACLE_BUNDLE_NAME" "Enterprise"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "NLS_LANG" "SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "OLEDB" "$INSTDIR/Oracle/oledb/mesg"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1" "StmtCacheSize" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "CacheType" "Memory"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "ChunkSize" "100"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "DistribTX" "1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "FetchSize" "100"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "OSAuthent" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "PLSQLRset" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "PwdChgDlg" "1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "SchRstLng" "10000"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "UserDefFn" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "DisableRetClause" "1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "VCharNull" "1"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "TraceCategory" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "TraceFileName" "c:/OraOLEDB.trc"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "TraceLevel" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "TraceOption" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "SPPrmDefVal" "0"
    WriteRegStr   HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1/OLEDB" "StmtCacheSize" "0"

    WriteRegStr   HKCR "OraOLEDB.Oracle.1" "" "Oracle Provider for OLE DB"
    WriteRegStr   HKCR "OraOLEDB.Oracle.1/CLSID" "" "{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"

    WriteRegStr   HKCR "OraOLEDB.Oracle" "" "Oracle Provider for OLE DB"
    WriteRegStr   HKCR "OraOLEDB.Oracle/CLSID" "" "{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"
    WriteRegStr   HKCR "OraOLEDB.Oracle/CurVer" "" "OraOLEDB.Oracle.1"

    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}" "" "OraOLEDB.Oracle"
    WriteRegDWORD HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}" "OLEDB_SERVICES" 0xffffffff
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/ExtendedErrors" "" "Extended Error Lookup Service"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/ExtendedErrors/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}" "" "Oracle OLE DB Error Lookup"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/InprocServer32" "" "$INSTDIR/Oracle/bin/OraOLEDB10.DLL"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/InprocServer32" "ThreadingModel" "Both"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/OLE DB Provider" "" "Oracle Provider for OLE DB"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/ProgID" "" "OraOLEDB.Oracle.1"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/TypeLib" "" "{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}"
    WriteRegStr   HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}/VersionIndependentProgID" "" "OraOLEDB.Oracle"

    WriteRegStr   HKCR "OraOLEDB.ErrorLookup.1" "" "Oracle OLE DB Error Lookup"
    WriteRegStr   HKCR "OraOLEDB.ErrorLookup.1/CLSID" "" "{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"

    WriteRegStr   HKCR "OraOLEDB.ErrorLookup" "" "Oracle OLE DB Error Lookup"
    WriteRegStr   HKCR "OraOLEDB.ErrorLookup/CLSID" "" "{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"
    WriteRegStr   HKCR "OraOLEDB.ErrorLookup/CurVer" "" "OraOLEDB.ErrorLookup.1"

    WriteRegStr   HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}" "" "Oracle OLE DB Error Lookup"
    WriteRegStr   HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}/InprocServer32" "" "$INSTDIR/Oracle/bin/OraOLEDB10.DLL"
    WriteRegStr   HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}/InprocServer32" "ThreadingModel" "Both"
    WriteRegStr   HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}/ProdID" "" "OraOLEDB.ErrorLookup.1"
    WriteRegStr   HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}/VersionIndependentProgID" "" "OraOLEDB.ErrorLookup.1"

    WriteRegStr   HKCR "TypeLib/{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}/1.0" "" "OraOLEDB 1.0 Type Library"
    WriteRegStr   HKCR "TypeLib/{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}/1.0/0/win32" "" "$INSTDIR/Oracle/bin/OraOLEDB10.DLL"
    WriteRegStr   HKCR "TypeLib/{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}/1.0/FLAGS" "" "0"
    WriteRegStr   HKCR "TypeLib/{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}/1.0/HELPDIR" "" "$INSTDIR/Oracle/bin/"

    ;设置oracle的环境变量
    ReadRegStr $0 HKLM "SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
  WriteRegExpandStr HKLM "SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path" "$0;$INSTDIR/Oracle/bin/"
  ;刷新环境变量
    SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"

----------------------------------------------------------------------------------------------------

在卸载section中,需要删除相应的注册表项和环境变量:

----------------------------------------------------------------------------------------------------

;删除oracle注册表信息
  DeleteRegKey HKCR "TypeLib/{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}/1.0"
  DeleteRegKey HKCR "CLSID/{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"
  DeleteRegKey HKCR "OraOLEDB.ErrorLookup"
  DeleteRegKey HKCR "OraOLEDB.ErrorLookup.1"
  DeleteRegKey HKCR "CLSID/{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"
  DeleteRegKey HKCR "OraOLEDB.Oracle"
  DeleteRegKey HKCR "OraOLEDB.Oracle.1"
  DeleteRegKey HKLM "SOFTWARE/ORACLE/KEY_OraClient10g_home1"
  DeleteRegKey HKLM "SOFTWARE/ORACLE"
  ;删除设置oracle的环境变量
    ReadRegStr $R0 HKLM "SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
    ${WordReplace} $R0 ";$INSTDIR/Oracle/bin/" "" "+" $R1
    ;MessageBox MB_OK|MB_USERICON '$R0 - $INSTDIR - $R1 '
  WriteRegExpandStr HKLM "SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path" "$R1"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值