MDM Zinc 是一個能夠把 Flash 發佈檔 swf 打包成應用程式,能在 windows, mac, linux 上直接執行,除此之前,藉由呼叫它所提供的函數庫,能讓 Flash 程式具有如同一般應用程式的能力,達到像是寫入檔案、取得網卡 Mac Address…等原本 Flash 不允許作的事情。第一次和它接觸好像是在五,六年前,還是 2.0 的版本,為了作一個單機、展示用的行銷光碟。
幾個月後,因緣之下又接到類似的需求,為了要讓 Flash 能夠寫入檔案,我又再一次選擇了這個工具,只不過不同的是,這次 4.0 的版本反而讓我吃了不少苦頭,花了兩三個星期的工夫才找到問題答案。在此作一下記錄,也許哪個遇到一樣問題的人,有緣看到這篇文章能夠少繞一些路。
這次發佈程式的平台是 mac,使用的是 ActionScript 2 的語法。遇到的問題分別是「文字輸入框裡無法出現游標,退位鍵在刪除一個字後就卡住了」,另一個問題則是「當程式打包成安裝檔,順利安裝到 mac 之後,不管多少支程式,在 launchpad 裡都只有一支程式的圖示」。
遇到第一個問題的時,剛好是公司花錢買下商用版權之後,壓力大到一個不行。工具是自己建議的,總不好剛買就回報工具作不出産品吧!在花時間在網路爬了一星期文沒得到答案,只看到在官網上提到在 4.0.19 版已經解決了文字框的問題,問題是我用的版本是 4.0.20啊~沒道理不能用,藉著有版權可以「降級」 4.0.19 試看看,問題依然存在,心涼了一半。
好在天不絕人路,由官網 blog 說 4.0.19 解決問題的文章,找到回報問題的官方論壇,花了快一個小時註冊帳號(英文問題 + 辨識變型數字太難回答),終於發現回報問題的作者提到,使用 4.0.15 以及之前的版本沒有這個問題。抓回程式一試,果然一切功能正常。至於中間這五個版本有沒有增加什麼新功能就不在考慮之列了,文字輸入框不能用這個産品完全不能釋出給消費者。
在我編譯出程式,又再花了一天多的時間去學習打包安裝檔的方法,將程式安裝之後,驚訝的發現剛裝好程式,在 launchpad 裡就會自動出現對應的啟動捷徑。比起前人作的,安裝只是單純複製檔案,啟動的時候還要自行到 finder(檔管)裡去找程式來說,顯示專業的許多。只不過打包第二支程式再安裝,悲劇發生了, launcherpad 只有原來的捷徑,新安裝程式的捷徑,就算重開機,仍然不出現。
既然無法自動産生捷徑,那麼就試著寫點 script 手動加上去吧!不然安裝好幾程式只有一支程式有捷徑(還不能被刪掉)那就太瞎了。網路上查到了個 script ,不過對應到的 mac 版本太舊,不能使用,只好再查其它方法。
斷斷續續研究了一個多星期,發現 launchpad 和 dock 裡的捷徑資料,是被記錄在使用者家目錄下的一個 sqlite 檔案。但是讓人失望的是,網路只有教人去刪掉裡面的內容,卻完全沒有人教導如何加一個新項目進去。由查詢裡面內容的過程中,似乎會給程式一個雜湊過的字串作為唯一識別字,只是雜湊有沒有規則,如何産生就完全猜不到了。
最後在一次偶然移除前一個安裝的程式後,忽然發現後裝的程式捷徑出現了。才讓我猜到,雜湊的原始資料,有可能就是程式本身的 ID。在找遍打包工具和的 Zinc 操作介面沒有結果後,把目標移到編譯完成的檔案上。
打包好的程式,實際上是一個有 .app 副檔名的「目錄」,但是由 finder 點擊會啟動程式而不是開啟目錄。要按著 control 點擊,或是按右鍵,選擇「顯示套件內容」。用純文字編輯器開啟 Contents 目錄下的 info.plist ,會發現它是一個 XML 檔案,所有屬性以一組組 <key> <string> 標籤組成,在 key 是「CFBundleIdentifier」的 string 屬性,能夠發現由 Zinc 打包的程式,值都是「com.mdm.projector」,將它改成不同的值後,不管先裝後裝的程式,都能夠在 launchpad 裡發現對應的捷徑出現。
由於在 Zinc 工具的設定中,完全沒有發現類似的設定。只能猜想可能是漏了作,或是沒想到有人會用它打包多個 mac 程式吧!我也只能在打包安裝程式之前,一支一支程式手動修改。
想想這兩個不應出現的問題,耗了我大把時間去找答案,滿讓人覺得鬱悶的。
沒有留言:
張貼留言