2011-03-28 94 views
2

我正在爲我的Windows Mobile 6.5 .NET CF 3.5應用程序開發自動更新功能。 我很想結束以下解決方案。.NET Compact Framework - Windows Mobile 6.5上的CAB自動更新

  1. 我使用SOAP WebService檢查是否有新版本的應用程序可用。
  2. 如果有更新的版本,我在SOAP響應中獲取URL,下載它。新版本只是一個CAB完整安裝文件。
  3. 只要下載了版本,我就在下載的CAB上使用/ silent和/ noui參數調用wceload。我想要無人值守的安裝,因爲此應用程序的用戶是汽車駕駛員,他們在操作移動設備方面技能不夠。

這個過程很順利,只有一個例外 -/noui或/ silent選項強制wceload不顯示任何窗口。我的應用程序簡單消失,並在後臺安裝新版本。問題是驅動程序有時會嘗試再次打開應用程序。另一點是我希望我的應用程序在更新過程完成後自動啓動。所以我創建了一個單獨的exe應用程序,它只是簡單地調用wceload,如果它完成安裝,它將運行更新的版本。所有與onr異常一起工作 - 這個安裝程序exe是我的CAB的一部分,因此它在它內部,當wceload安裝CAB時,它會關閉安裝程序(因爲它是CAB安裝程序的一部分)。因此,安裝過程中斷。 我的問題是 - 有沒有辦法讓「告訴CAB」不要終止那些屬於CAB的特定exe文件?

問候

回答

0

它是不是真的回答你的問題,但你可以做到以下幾點:

  • 推出呈現出「正在更新」另(較小)可執行屏幕。
  • 做你的東西在幕後

[設置結束] =>啓動更新的應用程序 [等待一點點] =>它會自行關閉和更新的應用程序就可以使用

0

CAB安裝和WCELOAD在許多方面受到限制。您正在使用某種UI來告訴用戶事情正在進行中,並且您想要有條件地安裝CAB的某些部分,而使用wceload就無法實現這一點。你或許可以將這些與a custom setup DLL一起破解,但我認爲「有條件的安裝作品」仍然會成爲展會的阻擋者。

另一種方法是不使用wceload,而是創建自己的CAB提取工具。然後你可以根據文件名等來完成你自己的用戶界面和自定義邏輯等。幾年前,我把an SDK and sample installer放在一起,這將允許這一點 - 承認它不是免費的,但最低成本選項只有5美元,因此它非常接近。

較新的CAB實際上是contain an XML doc,它描述了安裝操作(除了舊版本的.000二進制文件描述符,我寫的解碼器),所以你也可以使用它來完成所有的提取操作, $ 5,

0

不要使用出租車。使用帶有可執行文件和cab內部的tar.gz軟件包。使用SharpZipLib進行解壓縮。只需運行可執行文件即可完成工作。使用\windows\wceload工具來運行駕駛室安裝。

相關問題