[英]Creating cab file for Windows Mobile Occasionally Connected Application
[英]Install/Execute a CAb file[Windows Mobile application file] from C# Code?
我正在為Framework 6開發Windows Mobile應用程序。我想添加功能以使用設備上當前正在運行的應用程序升級補丁。
Windows Mobile應用程序運行時,應異步檢查服務器數據庫中可用的任何新版本。 如果存在修補程序,則程序應下載.cab(Windows Mobile安裝程序)文件並自動安裝/運行它。
我主要對這些有疑問:
怎么做?
請幫我這個.....
將文件下載到本地文件夾通常取決於您的存儲庫。 如果將其存儲在文件共享或基於網絡的共享文件中,則需要稍有不同的代碼。 您必須考慮通過某種清單文件或數據庫記錄來提供預下載版本檢查的選項,以避免僅下載整個補丁來檢查其版本。
一旦下載了已排序的部分(再次取決於存儲),就可以通過調用wceload.exe
從應用程序中調用CAB安裝:
Process proc = Process.Start("wceload.exe", "\"" + Path.Combine(applicationPath, updateFileName) + "\"");
proc.WaitForExit();
但是,這將要求用戶進行交互,然后按“確定”以在舊版本之上安裝新版本。
[編輯]一些設備制造商(例如Intermec)提供了在重新啟動時自動安裝CAB的方法,但這是特定於設備的,因此您必須閱讀相關內容。
我只需要這樣做,就好像安裝了一部分。 如果有人需要下載部分,這對我有用。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 10000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream receiveStream = response.GetResponseStream();
using (Stream file = File.OpenWrite("\\Windows\\Desktop\\file.cab"))
{
byte[] buffer = new byte[8 * 1024];
int len;
while ((len = receiveStream.Read(buffer, 0, buffer.Length)) > 0)
{
file.Write(buffer, 0, len);
}
}
我通過以下方式解決了這個問題:
它不是幾串代碼,但是效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.