一直以來,我都用Chiwis CS Gallery Manager上傳圖片到Community Server。但自從家中與公司分別換了Vista x64及Windows 2008 x64後,Chiwis CS Gallery Managery的安裝程式就無法成功執行,使用手工複製檔案,程式可以跑,卻因為少了安裝過程的3rd Party元件註冊程序,在選取檔案上傳時,出現以下錯誤導致作業失敗:

ERROR ¦ Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) ¦    at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
   at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
   at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
   at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
   at System.Windows.Forms.AxHost.CreateInstance()
   at System.Windows.Forms.AxHost.GetOcxCreate()
   at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
   at System.Windows.Forms.AxHost.CreateHandle()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.AxHost.EndInit()
   at CSGalleryManager.PhotoDetails.InitializeComponent()
   at CSGalleryManager.PhotoDetails..ctor()
   at CSGalleryManager.MainForm.addFileToQueue(SelectedListViewItemCollection items)

一開始我很鴕鳥地另外裝了VM跑Windows 2003,每每要上傳圖檔,就進VM裡作業,但久了久之也開始對每次傳圖就要切換環境有些懶,所以就開始著手找解決方案。(偷懶真是迫使人類進步的原動力呀)

由訊息來看,錯誤出在建立ActiveX OCX物件時,程式目錄下就只有一個XStandrad.ocx,嘗試過手動regsvr32 XStandard.ocx,可以成功註冊,但錯誤依舊;CS Gallery Upload Manager.exe.config裡有個參數UseXstandardEditor,設成false一樣出錯(在Form初始化階段就會載入該OCX,停用也緩不濟急)。

不得已只好把腦筋動到改Source Code上,Chiwis CS Gallery Manager是個Open Source專案(Open Source萬歲),可以透過SVN方式下載原始碼。打開專案,沒兩下就找到使用XStandard.ocx的地方---PhotoDetail.cs,原來它用XStandard提供RichText的照片描述編輯,我Blog上的圖片一向只作文章插圖,編輯照片描述的功能幾乎沒用過,因此就大大方方地把OCX元件刪除,並修改了跟元件關聯的程式碼,Rebuild後,嘿~~~ Chiwis CS Gallery Manager就在x64上跑將起來,成功!


Comments

Be the first to post a comment

Post a comment