2009-06-16 22 views

回答

1

我想水晶安裝到GAC。 因此,您需要以編程方式瀏覽全局程序集緩存並查找其中的Crystal程序集

GAC可以通過Windows API以編程方式進行管理。 Here you will find一個簡單的包裝,允許從一個託管代碼管理GAC

但我不會建議你這樣去。 :)

很好的解決方案通常過於安裝軟件的過程中檢查所有必需的組件,我想Windows安裝具有以下功能:檢查組件

然而,它並不總是確定。 假設您希望用戶在沒有Crystal的情況下運行程序,但是如果未安裝Crystal,則不允許顯示報告。

在這種情況下,您應該將所有報告功能與其他表格分離。您應該使用Crystal Reports功能創建一個單獨的項目,我們稱之爲MyReports。只有該項目應該引用Crystal組件,而其他組件不應該。其他項目也不應直接引用MyReports。

最後,您應該使用反射來調用在其他項目中實現的MyReports內部的報表查看器。

通常你會在你將使用反射從文件加載MyReports程序集的過程中編寫try/catch。所以,如果Crystal或其他東西不存在,它會拋出異常,您將顯示給用戶,但程序的其他部分將工作。

此外,您可以閱讀關於依賴注入設計模式,它有助於管理這些問題。

1

理想情況下,你會照顧所有應用程序的依賴關係中的安裝時間,並確保所有必需的組件已經安裝。但是,您可以將您的代碼封裝在try..catch塊中調用相關的DLL,並在拋出時捕獲DllNotFoundException。

0

您可以通過查找註冊表來找到這些詳細信息。我將搜索並提供更新。

編輯:您還可以在部署包中包含Crystal報告作爲先決條件。然後您可以確定最終用戶擁有該庫。

1

你可以檢查是否存在以下注冊表項

HKEY_CURRENT_USER\Software\Crystal Decisions 

這會告訴你,如果安裝了水晶報表。如果你想檢查一個特定的版本檢查子鍵。例如,與Visual Studio 2008一起安裝的水晶報告是10.2

相關問題