C# DLL文件注冊問題(涉及AxInterop.WMPLib.dll等)


近日遇到問題,給客戶安裝軟件涉及視頻等音影播放,安裝軟件啟動過程遇到這樣問題:

分析報錯原因

      沒有注冊類別 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)

查找原因: Interop.WMPLib.dll  AxInterop.WMPLib.dll

             程序內含private AxAPlayer3Lib.AxPlayer axPlayer;

 

最初出現問題分析思路:1.先注冊兩個動態庫,注冊失敗:

兩個動態庫是不能直接注冊。

(背景:之前軟件剛接手問過上一任,軟件內含迅雷看看的轉碼播放。

  咨詢結果:視頻轉碼的過程不需要注冊,視頻正常播放需要視頻組件注冊。

  經驗:還有之前在很多的客戶機安裝上都是這樣,不注冊迅雷看看組件,軟件都正常打開,但是視頻不能播放。)

2.在客戶機上出現了以上的問題,突然安裝的軟件報錯,出現以上錯誤,當時認為缺少.Net組件或者某個庫文件。

 通過下載微軟運行庫文件,安裝解決了,當時肯定了確實視屏播放方面的組件。

3.又有一台機器安裝64位系統,打開軟件報錯,安裝上一次的微軟的運行庫文件,不好使;下載新的64位的微軟運行庫同樣不好使。

  思考良久也不知道怎樣解決了。

4.今天突然想到把迅雷看看組件注冊一下,軟件正常使用。

 

總結一下上邊的各種狀況:

1.從開始下手 AxAPlayer3Lib.AxPlayer:

APlayer 媒體播放引擎是迅雷公司從 2009 年開始開發的音視頻媒體文件播放內核。
迅雷看看播放器就是使用它作為播放內核的,目前迅雷看看播放器在PC播放器市場占有率排第一。
APlayer 有如下特征:
◆ APlayer 是 Windows 平台的播放內核
◆ 基於封閉式 DirectShow 架構 (不受Windows系統解碼環境干擾)
........此處省略N多字。
 
2.之前在很多電腦上安裝過迅雷看看或者其他播放器,所以組件不需要注冊就就能正常播放。
 
3.新裝電腦,沒有相關的MediaPlay方面的組件,必然不能正常啟動軟件。
 
4.結論: 組件的正常播放需要安裝需要的組件,整個軟件的啟動在與是否含有MediaPlay方面的底層組件。
           再次遇到這樣的問題,可以直接注冊Aplay動態庫 或者安裝迅雷看看(或者其他的播放器)。
 
 
其它方面知識:
1.動態庫注冊:(在資料查閱中獲得了兩個新知識,以下copy來的)
   

    動態庫:將AxInterop.WMPLib.dll復制到C:\Windows\System32目錄下。
    系統是64位的請將32位的dll文件復制到C:\Windows\SysWOW64目錄
    打開"開始-運行-輸入regsvr32 AxInterop.WMPLib.dll",回車即可解決。

    下面的代碼保存為“注冊.bat“,放到dll文件同級目錄(只要在同一個文件夾里面有這兩個文件即可),雙擊注冊.bat,就會自動完成AxInterop.WMPLib.dll注冊(win98不支持)。

    代碼如下:
@echo 開始注冊
copy AxInterop.WMPLib.dll %windir%\system32\
regsvr32 %windir%\system32\AxInterop.WMPLib.dll /s
@echo AxInterop.WMPLib.dll注冊成功
@pause
 
2.C#動態庫免注冊調用:
    用Visual Studio.NET 2010,生成免注冊程序輕而易舉,然而,開發時卻必須要先注冊COM+控件。盡管可以無須注冊COM控件來運行一個程序,但在開發免注冊程序的電腦上,卻必須要先注冊COM組件,所以目前來說,免注冊COM僅限於運行時。(也就是說,開發的時候也是需要安裝Aplayer的SDK的):
   在VS中使用的步驟是:
1、在解決方案瀏覽器中,打開引用文件夾,當添加COM+(ActiveX)控件到程序窗體時(工具箱-右擊-選擇項目-COM+)
2、把添加到工具箱的COM+控件拖到窗體,會自動完成引用
3、點擊選中引用的控件,在屬性面板,把“獨立”設置為:true
有了創建后的清單文件,只需簡單地復制debug目錄(可用COPY)到任何電腦上,就可以在沒有注冊表項的情況下使用該控件,現在,發布一個程序簡單得就如復制粘貼一般簡單了。

通過上面的方法,用C#制作的桌面版Aplayer應用程序,打包發布,安裝程序就不用考慮aplayer的注冊問題,只需要按照正常的打包方案發布應用就行了,也可以作為純綠色的,直接拷貝debug目錄里的文件到其他電腦上,也是能夠運行的!
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM