近日遇到問題,給客戶安裝軟件涉及視頻等音影播放,安裝軟件啟動過程遇到這樣問題:
分析報錯原因:
沒有注冊類別 (異常來自 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:
動態庫:將AxInterop.WMPLib.dll復制到C:\Windows\System32目錄下。
系統是64位的請將32位的dll文件復制到C:\Windows\SysWOW64目錄
打開"開始-運行-輸入regsvr32 AxInterop.WMPLib.dll",回車即可解決。
下面的代碼保存為“注冊.bat“,放到dll文件同級目錄(只要在同一個文件夾里面有這兩個文件即可),雙擊注冊.bat,就會自動完成AxInterop.WMPLib.dll注冊(win98不支持)。
copy AxInterop.WMPLib.dll %windir%\system32\
regsvr32 %windir%\system32\AxInterop.WMPLib.dll /s
@echo AxInterop.WMPLib.dll注冊成功
@pause
1、在解決方案瀏覽器中,打開引用文件夾,當添加COM+(ActiveX)控件到程序窗體時(工具箱-右擊-選擇項目-COM+)
2、把添加到工具箱的COM+控件拖到窗體,會自動完成引用
3、點擊選中引用的控件,在屬性面板,把“獨立”設置為:true
通過上面的方法,用C#制作的桌面版Aplayer應用程序,打包發布,安裝程序就不用考慮aplayer的注冊問題,只需要按照正常的打包方案發布應用就行了,也可以作為純綠色的,直接拷貝debug目錄里的文件到其他電腦上,也是能夠運行的!