2009-09-18 22 views
1

情況很簡單。我創建了一個複雜的Delphi應用程序,它使用幾種不同的技術。主要應用程序是一個WIN32模塊,但少數部分是作爲.NET程序集開發的。它還與Web服務通信或從特定網站檢索數據。它將大部分用戶數據保存在MS Access數據庫中,並在註冊表中有一些額外的設置。在內存中,所有數據都在XML文檔中進行轉換,在系統崩潰的情況下,該文檔偶爾會作爲備份保存到磁盤中。 (因此允許用戶恢復他的數據。)XML文件中還有一些數據用於只讀目的。該應用程序還執行其他應用程序,並希望這些完成。所有這些,這是一個非常複雜的應用程序。有人知道Citrix和Delphi 2007應用程序之間的問題嗎? (也許還有其他開發語言?)

儘管一些用戶在Citrix服務器上使用此應用程序,但我們不支持此應用程序使用Citrix。 (基本上,它可以讓這些用戶變得更加流動。)但是,儘管我們一直告訴他們我們不支持思傑,但這些客戶正試圖推動我們幫助他們解決他們往往遇到的一些偶然問題。

主要問題似乎是偶爾出現的隨機異常,似乎在Citrix系統上彈出。永遠不要在同一地點,而且往往看起來與某些記憶問題有關。我們已經提供了錯誤報告,並且有太多不同的錯誤。所以我知道解決所有這些將是複雜的。

因此,我想要更通用一點,只想瞭解Delphi(2007)在Citrix系統上運行時可能遇到的問題。特別是當這個應用程序沒有被設計爲以任何方式被Citrix識別時。我們不希望正式支持Citrix,但如果我們能夠幫助這些客戶,這將是一件好事。不是說他們會付出更多,但仍然...

因此,有誰知道Delphi應用程序可以在Citrix系統上有一些常見問題嗎? 有誰知道一般Citrix的常見問題? 是否有某些Silver Bullet或Golden Hammer解決方案存在Citrix問題?

Btw。我對思傑的知識僅限於this Wikipedia進入和this website ......,有點我已經Googled ...

回答

7

以前在Citrix上發佈的Delphi應用程序在任務欄中沒有圖標時出現了一些問題。我認爲這是通過MainFormOnTaskbar解決的(在D2007和更高版本中可用)。除此之外,有沒有終端服務器和Citrix相差無幾(從應用程序的角度來看),你需要考慮的最重要的事情是:

  • 用戶是從來沒有在一個終端或Citrix服務器管理員,所以他們沒有註冊表本地計算機部分的權限,C盤,程序文件夾等。
  • 同一系統上的多個用戶必須能夠同時啓動您的應用程序。
  • 某些文件夾(如Windows文件夾)被重定向以防止可能出現的應用程序問題,這也意味着像GetWindowsFolder這樣的API不會返回真實的Windows文件夾,而是重定向的文件夾。請注意,可以通過在PE標頭中設置特定標誌來禁用此行爲(請參閱delphi-and-terminal-server-aware)。
  • 有時服務器場中使用多臺服務器,這意味着您的應用程序可以在任何這些服務器上運行,用戶在登錄時會被重定向到最不繁忙的服務器(負載平衡)。因此,不要使用任何本地數據庫來存儲事物。
  • 如果您使用外部數據庫或中間件或應用程序服務器,請注意多個用戶將使用相同的計算機名和IP地址連接(某些Citrix版本可以使用虛擬IP地址來解決此問題)。
+0

非常有用的鏈接!其他信息也不錯! – 2009-09-20 10:05:53

1

一般來說,你的應用程序需要與MS終端服務兼容,以便與XenApp的工作。我的理解是,.NET應用程序是終端服務兼容的,所以擴展應該也可以在Citrix環境中工作。顯然,當你遇到一些問題時,它並不那麼簡單。

http://community.citrix.com/citrixready有一個測試和驗證工具包,您可能會發現有幫助。我會想象測試工具包和虛擬實驗室工具對您最有用。該套件可以免費使用,但需要註冊。

+0

大部分應用程序基於WIN32,而不是.NET。而且我們還沒有添加任何終端服務的支持。大多數用戶只是在桌面或筆記本電腦上使用我們的軟件 – 2009-09-18 14:37:53

+0

啊,對不起在這個問題上錯過了關於Win32的那一點。即使如此,Citrix Ready工具包也可以幫助你。 – alastairs 2009-09-18 15:06:14

3

我們的許多客戶都在思傑使用我們的Delphi應用程序。一般來說,它工作正常。我們在Delphi的舊版本中遇到了打印問題,但是在Delphi的更新版本中(當然比Delphi 2007更新),這已經得到修復。但是,由於您現在正在使用終端服務,因此有些事情在使用或不使用Citrix時都不起作用。例如,您無法建立與舊版InterBase的本地連接,該版本使用不帶GLOBAL修飾符的命名管道。使用DoubleBuffered也是一個非常糟糕的主意。等等。我的建議是尋找有關Win32應用程序和終端服務的建議,而不是在Delphi和Citrix上尋找建議。我知道的一個特別針對Citrix的問題是,您不能指望擁有可用的C驅動器。希望你沒有將任何盤符硬編碼到你的代碼中,但是如果你有麻煩的話。

+0

不,在我們自己的代碼中沒有硬編碼的路徑,儘管一些第三方模塊確實有一些小問題,因爲他們想要安裝在必須位於C:驅動器上的程序文件文件夾中。然後再次,我們不支持終端服務,我們只是將這些客戶提交給另一方。 (這些模塊是獨立的應用程序,我們的軟件可以與其他人進行通信。) – 2009-09-20 15:37:10

1

安全性可能是一個問題。如果敏感文件夾不是「沙盒」(請參閱​​Remko關於重定向的討論),用戶可以跳出應用程序並運行它們不應該執行的操作。你應該探索你的應用,看看他們在你的應用「掏空」時會發生什麼。常見攻擊點是CHM幫助,使用IE顯示HTML的任何內容以及文件打開/保存對話框。例如:如果顯示.chm幫助,用戶可以在幫助主題「查看源代碼」中右鍵單擊。這通常會打開記事本。從那裏,他們可以瀏覽目錄結構。如果他們沒有被適當地包容,他們可能會做一些惡作劇。例如:如果他們通常沒有辦法運行Internet Explorer,並且您的應用程序在about框中有一個可點擊的URL,或者在幫助菜單中有一個「訪問我們的網站」,瞧!他們可以訪問網絡瀏覽器。如果不加限制,他們可以通過導航到windows目錄來打開命令shell。

相關問題