制作安装包之抽取oracle客户端的一种方法

从oracle 10g开始,oracle官方提供了一个精简的client,叫oracle instant client,只有几十M,免安装,可供分发。其下载地址:

http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

至于如何配置、使用等,本文不予介绍。如果能够使用此client打包程序成功的,也可以不必看此文。网上有网友说,这个client比起普通的client,还存在很多bug,但我没有证实过。我之所以需要手工抽取,是因为,它不包括oracle oledb,而我的程序需要它。

下面介绍我此次抽取客户端的经历,以及从中总结出的一种通用的抽取方法。

首先,参照了三篇网文《Oracle10g Client的手工分发》(http://www.cnblogs.com/pilybird/archive/2006/10/24/538338.html),《Oracle OLEDB 的手工分发》(http://www.cnblogs.com/pilybird/archive/2006/10/26/540943.html),《Oracle学习笔记:手工注册oracle的oledb驱动》(http://www.cnblogs.com/jinzhenshui/archive/2009/01/08/1371634.html),我抽取了必须的文件,具体的抽取过程,可以参照下列dos脚本(需要修改定义的变量):

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

@ECHO 从Oracle 10g Client中提取精简客户端

REM 定义变量
set ORACLE_CLIENT_HOME=E:\client_1
set DEST_ORA_CLIENT_DIR=E:\ora10g_client

REM sqlplus目录
mkdir %DEST_ORA_CLIENT_DIR%\sqlplus
mkdir %DEST_ORA_CLIENT_DIR%\sqlplus\mesg
copy %ORACLE_CLIENT_HOME%\sqlplus\mesg\*.* %DEST_ORA_CLIENT_DIR%\sqlplus\mesg

REM oracore目录
mkdir %DEST_ORA_CLIENT_DIR%\oracore
mkdir %DEST_ORA_CLIENT_DIR%\oracore\zoneinfo
copy %ORACLE_CLIENT_HOME%\oracore\zoneinfo\*.* %DEST_ORA_CLIENT_DIR%\oracore\zoneinfo
mkdir %DEST_ORA_CLIENT_DIR%\oracore\mesg
copy %ORACLE_CLIENT_HOME%\oracore\mesg\*.* %DEST_ORA_CLIENT_DIR%\oracore\mesg

REM Network目录
mkdir %DEST_ORA_CLIENT_DIR%\Network
mkdir %DEST_ORA_CLIENT_DIR%\Network\Admin
copy %ORACLE_CLIENT_HOME%\Network\Admin\sqlnet.ora %DEST_ORA_CLIENT_DIR%\Network\Admin\
copy %ORACLE_CLIENT_HOME%\Network\Admin\tnsnames.ora %DEST_ORA_CLIENT_DIR%\Network\Admin\
mkdir %DEST_ORA_CLIENT_DIR%\Network\mesg
copy %ORACLE_CLIENT_HOME%\Network\mesg\*.* %DEST_ORA_CLIENT_DIR%\Network\mesg\

REM Bin目录
mkdir %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oci.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oracle.key %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oraclient10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oracommon10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORACORE10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orageneric10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orahasgen10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oraldapclnt10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oran10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORANCDS10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orancrypt10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oranhost10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oranl10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oranldap10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORANLS10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orannzsbb10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oranro10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orantcp10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orantns10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oraocr10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oraocrb10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORAPLP10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORAPLS10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORASLAX10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORASNLS10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORASQL10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORAUNLS10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\orauts.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oravsn10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\ORAXML10.DLL %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\sqlplus.exe %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\sqlplusw.exe %DEST_ORA_CLIENT_DIR%\Bin

REM 针对oracle oledb
copy %ORACLE_CLIENT_HOME%\bin\oip10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oip10.tlb %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\oradc.ocx %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDB10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDB10.tlb %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDB10us.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDB10zhs.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDBgmr10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDBpus10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDBrfc10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDBrmc10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDBrst10.dll %DEST_ORA_CLIENT_DIR%\Bin
copy %ORACLE_CLIENT_HOME%\bin\OraOLEDButl10.dll %DEST_ORA_CLIENT_DIR%\Bin

REM Nls目录
mkdir %DEST_ORA_CLIENT_DIR%\Nls
mkdir %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx00001.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx00023.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx10001.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx10035.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx1boot.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx20001.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx20354.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx207d0.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx40001.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx20367.nlb %DEST_ORA_CLIENT_DIR%\Nls\data

REM 针对oracle oledb
copy %ORACLE_CLIENT_HOME%\Nls\data\lx2001f.nlb %DEST_ORA_CLIENT_DIR%\Nls\data
copy %ORACLE_CLIENT_HOME%\Nls\data\lx40002.nlb %DEST_ORA_CLIENT_DIR%\Nls\data

mkdir %DEST_ORA_CLIENT_DIR%\Nls\mesg
copy %ORACLE_CLIENT_HOME%\Nls\mesg\*.* %DEST_ORA_CLIENT_DIR%\Nls\mesg

@pause 按任意键退出……

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

抽取文件成功后,按照上面网文说的,导入相应的注册表,修改相应的环境变量,打包应用程序,安装后,运行还是不成功。试了几次,不成功后,后来想,是不是注册表有问题,于是想到了注册表监测软件Regmon。

接下来,在一台干净的机器(没有安装过oracle),安装oralce的普通client,选择上oracle oledb组件,使用Regmon监测安装过程。

安装成功后,采用Log parser2.2分析其监测日志,过滤出其中对注册表“CreateKey”的操作记录,仔细分析,可以找到下列键记录,从安装普通client的机器上导出这些键的注册表.reg文件。

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

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\OLEDB

HKEY_CLASSES_ROOT\OraOLEDB.Oracle.1

HKEY_CLASSES_ROOT\OraOLEDB.Oracle

HKEY_CLASSES_ROOT\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}

HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup.1

HKEY_CLASSES_ROOT\OraOLEDB.ErrorLookup

HKEY_CLASSES_ROOT\CLSID\{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}

HKEY_CLASSES_ROOT\TypeLib\{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}

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

再重新打包,安装发现还是不成功,我猜想是不是少了某个文件,于是又想到了用于文件监测的Filemon工具,发现在运行我的程序的时候,去打开%ORACLE_HOME% \Nls\data\下的一个.nlb文件不成功,于是添加,运行,ok(说明:上面的脚本已经包含此文件)。

利用上面的方法抽取,大约是28M左右。后来我想,何不利用Filemon检测到程序需要用到的文件列表,然后再抽取呢。于是我接下来做了下面的事情:

[color=red]
(1) 在一台干净的机器(没有安装过oracle),安装oracle客户端,选择oracle oledb组件;

(2) 把我的程序编译后直接拷贝到这台干净的机器上;

(3) 打开Filemon,运行编译的程序。

(4) 分析Filemon,利用Log parser2.2,查询出其中对oracle客户端所在目录下的文件“OPEN”操作的文件记录,即这些文件,是必须的文件;

(5) 继续利用Log parser2.2,根据查询出来的文件记录,生成相应的批处理脚本,稍加修改,即如下所示:
[/color]

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

REM 提出oracle10g的客户端
set ORA_CLIENT_DIR=E:\client_1
set DEST_ORA_CLIENT_DIR=E:\oracle_client10g

mkdir %DEST_ORA_CLIENT_DIR%\

mkdir %DEST_ORA_CLIENT_DIR%\BIN\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDB10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDBGMR10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORACLIENT10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORACORE10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANLS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAUNLS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAUTS.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAVSN10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORACOMMON10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAGENERIC10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORASNLS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAXML10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAN10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANL10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANLDAP10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANNZSBB10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORALDAPCLNT10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANCRYPT10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANRO10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANHOST10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANCDS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANTNS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAPLS10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORASLAX10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAPLP10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAHASGEN10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOCR10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOCRB10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORANTCP10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORASQL10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDBRST10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDBUTL10.DLL %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORACLE.KEY %DEST_ORA_CLIENT_DIR%\bin\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDB10ZHS.DLL %DEST_ORA_CLIENT_DIR%\BIN\
copy %ORA_CLIENT_DIR%\BIN\ORAOLEDBPUS10.DLL %DEST_ORA_CLIENT_DIR%\BIN\

mkdir %DEST_ORA_CLIENT_DIR%\NETWORK\
mkdir %DEST_ORA_CLIENT_DIR%\NETWORK\ADMIN\
copy %ORA_CLIENT_DIR%\NETWORK\ADMIN\SQLNET.ORA %DEST_ORA_CLIENT_DIR%\NETWORK\ADMIN\
copy %ORA_CLIENT_DIR%\NETWORK\ADMIN\tnsnames.ora %DEST_ORA_CLIENT_DIR%\NETWORK\ADMIN\
mkdir %DEST_ORA_CLIENT_DIR%\NLS\
mkdir %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX1BOOT.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX00001.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX2001F.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX10001.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX00023.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX20354.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX10035.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX20001.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX20367.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX207D0.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\
copy %ORA_CLIENT_DIR%\NLS\DATA\LX40002.NLB %DEST_ORA_CLIENT_DIR%\NLS\DATA\

mkdir %DEST_ORA_CLIENT_DIR%\ORACORE\
mkdir %DEST_ORA_CLIENT_DIR%\ORACORE\ZONEINFO\
copy %ORA_CLIENT_DIR%\ORACORE\ZONEINFO\TIMEZLRG.Dat %DEST_ORA_CLIENT_DIR%\ORACORE\ZONEINFO\

mkdir %DEST_ORA_CLIENT_DIR%\RDBMS
mkdir %DEST_ORA_CLIENT_DIR%\RDBMS\mesg
copy %ORA_CLIENT_DIR%\RDBMS\mesg\ocizhs.msb %DEST_ORA_CLIENT_DIR%\RDBMS\mesg\
copy %ORA_CLIENT_DIR%\RDBMS\mesg\ocius.msb %DEST_ORA_CLIENT_DIR%\RDBMS\mesg\
copy %ORA_CLIENT_DIR%\RDBMS\mesg\orazhs.msb %DEST_ORA_CLIENT_DIR%\RDBMS\mesg\
copy %ORA_CLIENT_DIR%\RDBMS\mesg\oraus.msb %DEST_ORA_CLIENT_DIR%\RDBMS\mesg\
@pause 按任意键继续……

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

(6)运行批处理,抽取必须的文件,利用这种方法抽取的oracle客户端大约26M左右。同时根据Regmon检测的注册表修改记录,还须修改path变量,打包应用程序。

(7)在一台干净的机器上,安装测试,运行,ok。

总结:

[color=red]
(1)此种方法具有通用性,可以用来抽取oracle其它版本,甚至其他任何你想抽取或瘦身的程序;

(2)此种方法完全是一种外科式黑箱式技术,丝毫没有涉及程序的内部结构,这是其优点,也是其缺点,设想一个程序运行,在我们使用filemon监测的时候,它依赖了一些文件,然后我们抽取了它,倘若在我们停止监测后,在一个其它的运用场景,该程序又调用了一些其它文件,那么这些程序就遗漏了,唯一能够补救的方法就是,在使用filemon监测阶段,一定要能够充分的运行应用程序。

(3)抽取程序的要点:1)弄清楚需要抽取哪些必须的文件;2)弄清楚要修改哪些注册表;3)弄清楚要修改哪些环境变量。
[/color]


------------------------------------------------------
转自:http://bluffstone.spaces.live.com/blog/cns!378A3196AFD42482!178.entry

filemon使用实例:http://xiong.blog.51cto.com/811/17720
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值