• 19728阅读
  • 16回复

APlayer.dll控件分析之我见! [复制链接]

上一主题 下一主题
离线nevcry
 

只看楼主 正序阅读 使用道具 楼主  发表于: 2013-07-25
以下所有测试在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文件夹是否存在,如果不存在,控件就无法注册,下边步骤就无法进行)


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文件路径的判断,当文件夹不存在时,先建立文件夹,然后拷贝控件到对应目录中.
离线qsdya01

只看该作者 16楼 发表于: 2017-02-02
学习了
离线shituo

只看该作者 15楼 发表于: 2014-03-30
没必要非得弄到那个目录吧?这个插件不如加个迅雷广告得了!
本帖提到的人: @aplayer
离线jason

只看该作者 14楼 发表于: 2013-08-29
没有这么复杂的事情,只需要安装迅雷看看软件以后将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 放到一起就可以了。
离线aplayer

只看该作者 13楼 发表于: 2013-08-03
回 nevcry 的帖子
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
离线nevcry

只看该作者 12楼 发表于: 2013-08-03
回 aplayer 的帖子
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

只看该作者 11楼 发表于: 2013-08-02
"Thunder Network" 目录不存在时注册 APlayer 会失败的 BUG 已经在 APlayerSDK 3.5.0.642 版本中修正, 谢谢您的反馈.
离线aplayer

只看该作者 10楼 发表于: 2013-08-02
回 nevcry 的帖子
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 中的方法),只要打包想要的解码器,完全可以绿色运行

离线nevcry

只看该作者 9楼 发表于: 2013-08-02
回 932966089 的帖子
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" 这个文件夹即可.或安装迅雷的产品也可解决,比如:迅雷看看,迅雷等应用.
离线nevcry

只看该作者 8楼 发表于: 2013-08-02
我研究这个控件的执行流程就是为了实现.对于不同的电脑系统都能使用运行我们开发的应用.所以这个控件的注册就很重要. 一般我们的电脑都安装过 迅雷的产品,所以就本文中提到的"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" 这个文件夹即可.或安装迅雷的产品也可解决,比如:迅雷看看,迅雷等应用.
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个