查看完整版本: [-- APlayer.dll控件分析之我见! --]

APlayer 开发者论坛 -> APlayer 讨论区 -> APlayer.dll控件分析之我见! [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

nevcry 2013-07-25 14:20

APlayer.dll控件分析之我见!

以下所有测试在XP系统下完成:
注册APlayer.dll控件,控件的执行流程如下:

1.将控件文件拷贝到:C:\Documents and Settings\All Users\Application Data\Thunder Network\APlayer\目录下,分别为:APlayer_3.5.0.638.dll和atl71.dll.
(注意:如果当前系统中没有(C:\Documents and Settings\All Users\Application Data\Thunder Network\)这个文件夹的话,控件注册会报错!
所以:这里一定要注意Thunder Network文件夹是否存在,如果不存在,控件就无法注册,下边步骤就无法进行)
[attachment=64]

2.控件会在注册表,HKEY_CURRENT_USER\Software\Thunder Network\APlayer下建立path项,取值为:C:\Documents and Settings\All Users\Application Data\Thunder Network\APlayer\APlayer_3.5.0.638.dll,版本不同名字会有所区别.
3.注册npaplayer.dll控件.
4.查找path的值,取出path的路径信息,拷贝解码库文件到C:\Documents and Settings\All Users\Application Data\Thunder Network\APlayer\

多次测试后发现问题,关键问题找到,
如果文件夹C:\Documents and Settings\All Users\Application Data\Thunder Network不存在,控件就无法进行正常安装.
解决方法:建立文件夹,具体路径如下:C:\Documents and Settings\All Users\Application Data\Thunder Network,即可正常注册控件.

我的安装方案
控件安装:INStall.bat

@echo off
@md "C:\Documents and Settings\All Users\Application Data\Thunder Network"
@regsvr32 /s APlayer.dll
@regsvr32 /s npaplayer.dll
for /f "tokens=1,2,*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Thunder Network\APlayer" ^| find /i "Path"') do SET "pURL=%%k"
@xcopy /E /Y .\codecs\*.* "%pURL%\..\codecs\*.*"

控件卸载:UnInstall.bat

@echo off
@regsvr32 /s /u APlayer.dll
@regsvr32 /s /u npaplayer.dll
for /f "tokens=1,2,*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Thunder Network\APlayer" ^| find /i "Path"') do SET "pURL=%%k"
rd /s /q "%pURL%\..\..\..\Thunder Network"
@echo y|reg delete "HKEY_CURRENT_USER\Software\Thunder Network\" /va /f

正常的安装和卸载,保证无残留.
建议: APlayer.dll在注册时,加入Thunder Network文件路径的判断,当文件夹不存在时,先建立文件夹,然后拷贝控件到对应目录中.

aplayer 2013-07-25 18:44
仔细, 专业!

hehaifeng 2013-07-25 22:38
给力!

jack 2013-07-29 10:33
太认真了,

932966089 2013-07-31 16:57
开发好,编译成安装包,安装到其他电脑上时是不是还要注册jdk,如果那台电脑没有安装迅雷或者迅雷看看,是不是就不能运行了

aplayer 2013-08-01 10:23
932966089:开发好,编译成安装包,安装到其他电脑上时是不是还要注册jdk,如果那台电脑没有安装迅雷或者迅雷看看,是不是就不能运行了 (2013-07-31 16:57)

如果不是网页调用,不用注册 APlayer 的,Application 可以从文件中创建 APlayer 实例(参考 SDK 中的方法),只要打包想要的解码器,完全可以绿色运行,也和迅雷或迅雷看看完全无关(APlayer是个独立的引擎,只依赖于Windows操作系统)。


932966089 2013-08-01 17:14
aplayer:如果不是网页调用,不用注册 APlayer 的,Application 可以从文件中创建 APlayer 实例(参考 SDK 中的方法),只要打包想要的解码器,完全可以绿色运行,也和迅雷或迅雷看看完全无关(APlayer是个独立 .. (2013-08-01 10:23) 

我用C#语言编写了一个简单的程序,但在打包的时候VS作了个“无法判断APlayer.dll的依赖项目,请手动添加这些项目”的提示,我忽略了此项,打包后在本机可以正常使用,但换了一台电脑就不能运行,请问我是不是需要从某个位置拷贝些必要的文件到我编译的程序目录下面呢?

aplayer 2013-08-01 20:13
932966089:我用C#语言编写了一个简单的程序,但在打包的时候VS作了个“无法判断APlayer.dll的依赖项目,请手动添加这些项目”的提示,我忽略了此项,打包后在本机可以正常使用,但换了一台电脑就不能运 .. (2013-08-01 17:14) 

可能你 C# 创建 APlayer 实例的方式不是从文件中创建所致,
从你发的代码看好像是直接拖动控件的方式做的,这种是依赖 APlayer 注册的,
请参考 APlayer.chm 中描述的从文件中创建方法试试看,但它是 C++ 语言写的,
不知 C# 中如何实现,这个你更熟悉。

nevcry 2013-08-02 09:24
我研究这个控件的执行流程就是为了实现.对于不同的电脑系统都能使用运行我们开发的应用.所以这个控件的注册就很重要. 一般我们的电脑都安装过 迅雷的产品,所以就本文中提到的"C:\Documents and Settings\All Users\Application Data\Thunder Network" 这个文件夹,迅雷已经帮我们创建过了.但是对于一个完全纯净的系统或者说是没有安装过迅雷产品的系统来说,这个文件夹是不存在的.在你运行SDK中提供的Install.bat 时,控件注册是失败的. 因为批处理中加入了 /s 参数,则在注册控件时,是以静默的方式来注册的.没有任何提示信息!如果你想确认控件注册是否成功, 将/s参数删除即可有提示信息.如果提示如我之前发帖时报出的错误,说明你的系统中没有安装过迅雷的产品,需要手动创建"C:\Documents and Settings\All Users\Application Data\Thunder Network" 这个文件夹即可.或安装迅雷的产品也可解决,比如:迅雷看看,迅雷等应用.

nevcry 2013-08-02 12:15
932966089:我用C#语言编写了一个简单的程序,但在打包的时候VS作了个“无法判断APlayer.dll的依赖项目,请手动添加这些项目”的提示,我忽略了此项,打包后在本机可以正常使用,但换了一台电脑就不能运 .. (2013-08-01 17:14) 

我研究这个控件的执行流程就是为了实现.对于不同的电脑系统都能使用运行我们开发的应用.所以这个控件的注册就很重要. 一般我们的电脑都安装过 迅雷的产品,所以就本文中提到的"C:\Documents and Settings\All Users\Application Data\Thunder Network" 这个文件夹,迅雷已经帮我们创建过了.但是对于一个完全纯净的系统或者说是没有安装过迅雷产品的系统来说,这个文件夹是不存在的.在你运行SDK中提供的Install.bat 时,控件注册是失败的. 因为批处理中加入了 /s 参数,则在注册控件时,是以静默的方式来注册的.没有任何提示信息!如果你想确认控件注册是否成功, 将/s参数删除即可有提示信息.如果提示如我之前发帖时报出的错误,说明你的系统中没有安装过迅雷的产品,需要手动创建"C:\Documents and Settings\All Users\Application Data\Thunder Network" 这个文件夹即可.或安装迅雷的产品也可解决,比如:迅雷看看,迅雷等应用.

aplayer 2013-08-02 12:47
nevcry:我研究这个控件的执行流程就是为了实现.对于不同的电脑系统都能使用运行我们开发的应用.所以这个控件的注册就很重要. 一般我们的电脑都安装过 迅雷的产品,所以就本文中提到的"C:\Documents .. (2013-08-02 12:15)

对于注册后的文件夹 WinXP  和 Vista/Win7 不一样:
WinXP:        C:\Documents and Settings\All Users\Application Data\Thunder Network\APlayer
Vista/Win7:  C:\Users\Public\Thunder Network\APlayer
另:  如果不是网页调用,不用注册 APlayer 的,Application 可以从文件中创建 APlayer 实例 (参考 SDK 中的方法),只要打包想要的解码器,完全可以绿色运行


aplayer 2013-08-02 18:37
"Thunder Network" 目录不存在时注册 APlayer 会失败的 BUG 已经在 APlayerSDK 3.5.0.642 版本中修正, 谢谢您的反馈.

nevcry 2013-08-03 00:00
aplayer:对于注册后的文件夹 WinXP  和 Vista/Win7 不一样:
WinXP:        C:\Documents and Settings\All Users\Application Data\Thunder Network\APlayer
Vista/Win7:  C:\Users\Public\Thunder Network\A .. (2013-08-02 12:47) 

希望管理员能给出一个vb6的代码,用来演示,如何从文件中创建一个 APlayer 对象.给出的VC++代码,看着有点吃力..  谢谢!

aplayer 2013-08-03 10:48
nevcry:希望管理员能给出一个vb6的代码,用来演示,如何从文件中创建一个 APlayer 对象.给出的VC++代码,看着有点吃力..  谢谢!
 (2013-08-03 00:00) 

搂主, 我 VB 很久不用生疏了, 不过下面这些链接中的文章应该能帮助您在不注册的情况下创建 ActiveX 控件实例, 如果搂主弄出来, 别忘了共享给大家, 加油!

http://blog.csdn.net/Modest/article/details/1767950
http://blog.csdn.net/lingll/article/details/593567
http://blog.csdn.net/quailzhang/article/details/1555166

jason 2013-08-29 11:59
没有这么复杂的事情,只需要安装迅雷看看软件以后将C:\Documents and Settings\All Users\Application Data\Thunder Network \APlayer 中的APlayer_3.4.0.636.dll 文件拷贝出来就可以直接注册,不需要有C:\Documents and Settings\All Users\Application Data\Thunder Network 的存在,同时将codecs目录和APlayer_3.4.0.636.dll 放到一起就可以了。

shituo 2014-03-30 18:55
没必要非得弄到那个目录吧?这个插件不如加个迅雷广告得了!

qsdya01 2017-02-02 14:22
学习了


查看完整版本: [-- APlayer.dll控件分析之我见! --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.008836 second(s),query:0 Gzip enabled