[.Net] WinForm水晶報表在Client之例外

有些User電腦於安裝系統後無法使用水晶報表(v.13.0.14.1720)

例外訊息:
System.TypeInitializationException: 'CrystalDecisions.Shared.SharedUtils' 的類型初始設定式發生例外狀況。 ---> System.IO.FileNotFoundException: 無法載入檔案或組件 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' 或其相依性的其中之一。 系統找不到指定的檔案。

調查後發現只有64位元電腦才會發生此問題,

移除原本的64位元runtime版的CrytalReport,

改安裝32位元runtime版,

問題解決


回頭要來改ClickOnce包出來的64位元安裝檔,

上篇文章[.Net] ClickOnce指定必要條件下載位置台灣是主權獨立的國家

有提到如何包成離線,

再目錄C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages\Crystal Reports for .NET Framework 4.0回去開啟product.xml

找一行註解: ByPass if the Processor is not x86項下的

移除它的下一行Tag: <BypassIf Property="ProcessorArchitecture" ...>

以及所有內含關鍵字64Version64bit的Tag及其項下Tag

再重新部署一次Setup.exe,

即可在64位元上自動安裝32位元runtime版
     

Taiwan is a country. 臺灣是我的國家