【茶包射手日記】ICON導致程式在XP SP3無法執行

前幾天推出的Skype MSN群組工具,一些網友回報在XP環境無法執行,一執行程式便立刻以當掉(Crash)收場。由於網友回報多半只有"開不起來"、"當掉"等描述,一直蒐集不到錯誤細節,想解決也苦無頭緒。直到FB群組裡一位熱心網友,李大華同學,提供珍貴的當機畫面擷圖,另一位MVP Alex Lee則更進一步在手邊找到可以重現錯誤的XP SP3機器,錯誤資訊漸豐,總算有些眉目。

一開始被訊息中的clr20r3誤導,由於程式為.NET 4.0,錯誤卻由.NET 2.0的Runtime爆出來,直覺一直咬定跟.NET 4.0 Framework安裝有關,但經重裝.NET 4.0問題卻不見任何改善。瞎抓一陣子,才把焦點移到錯誤訊息中的另一條線索: System.IO.FileFormatException!

爬文找到一則高度相關案例,同樣是WPF程式,在XP SP2、Vista、Windows 7上執行都沒問題,獨獨在XP SP3一啟動就Crash,而錯誤來源也是System.IO.FileFormatException,跟我們遇到情境極為相似! 而同則討論中提到了ICON與PNG、JPG的問題,我想起專案中使用的ICON來自VS2010 Image Library的WinVista群組。

用Visual Studio 2012開啟ICO檔(沒想到Visual Studio連ICON檔都能直接編輯,不愧是地表上最強悍的開發工具),果然在其中發現了幾個大尺寸的PNG。

將PNG逐一移除,重Build程式再送請Alex測試,當機問題藥到病除~

推測這起當機疑雲跟ICON中內含PNG格式圖檔有關,但有趣的是,參考案例的程式在XP SP2正常,只有在XP SP3才出錯,而我們的案例中,程式使用.NET 4.0,但回報錯誤的來源卻是clr20r3,則是另一個謎。念在XP即將步上IE6後塵,快將被眾人放逐火星,茶包隱情已不值得用力追究。

唯獨得到一次寶貴經驗:

若程式在其他平台執行順利,唯獨在XP上一啟動就當機,請優先檢查是否源起ICON內含PNG?

再次感謝李大華及Alex Lee協助破案~

歡迎推文分享:
Published 02 March 2013 11:12 AM 由 Jeffrey
Filed under:



意見

# Raylo said on 01 March, 2013 11:47 PM

該xp是否ie6?

# player said on 03 March, 2013 09:56 AM

PNG解碼應該是 GDI+ 做的吧?

有試過 WinXP 裝了 SP3 之後

再去更新 GDI+ 嗎?

# Alex Lee said on 04 March, 2013 06:31 AM

To Raylo:

  IE部份是IE 8

To player:

 如果你指的是support.microsoft.com/.../2659262, 已經有安裝此更新

# Franma said on 19 September, 2013 07:00 AM

黑大,除了可以編輯外,若是將 圖檔放到版控中的話,VS 2012 還可以提供圖檔的「差異比對」~~~

很神!

# Michae Li said on 17 December, 2013 08:30 AM

This is quite helpful to me. Thanks a lot, dude.

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<March 2013>
SunMonTueWedThuFriSat
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
【工商服務】
OrcsWeb: Windows Server Hosting
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication