我正在为Framework 6开发Windows Mobile应用程序。我想添加一些功能来升级当前在设备上运行的应用程序的补丁。
当Windows Mobile应用程序正常工作时,它应该异步检查服务器数据库中可用的任何新版本。如果补丁存在,程序应下载.cab(Windows Mobile安装程序)文件并自动安装/运行。
主要是,我怀疑这些:
怎么可能呢?
请帮帮我......
答案 0 :(得分:3)
将文件下载到本地文件夹通常取决于您的存储库,即。如果您将代码存储在文件共享上或者说基于Web的代码,则需要稍微不同的代码。 您必须考虑通过某种清单文件或数据库记录提供预下载版本检查的选项,以避免下载整个补丁只是为了检查其版本。
下载部件后(再次,取决于存储),您可以通过调用wceload.exe
从您的应用调用CAB安装:
Process proc = Process.Start("wceload.exe", "\"" + Path.Combine(applicationPath, updateFileName) + "\"");
proc.WaitForExit();
然而,这将要求用户进行互动并按“确定”。在旧版本之上安装新版本。
[编辑] 一些设备制造商(如Intermec)提供了在重新启动时自动安装CAB的方法,但这是特定于设备的,因此您必须阅读此内容。
答案 1 :(得分:1)
我通过以下方式解决了这个问题:
这不是一些代码串,但它完美无缺。
答案 2 :(得分:1)
我必须这样做,好像安装部分已经回答了。如果有人需要下载部分,这对我有用。
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);
}
}