从c#代码中安装/执行CAb文件[Windows Mobile应用程序文件]
本文关键字:文件 Windows Mobile 应用程序 CAb 执行 代码 安装 | 更新日期: 2023-09-27 18:18:31
我正在为Framework 6开发一个Windows Mobile应用程序。我想添加功能来升级当前在设备上运行的应用程序的补丁。
当Windows Mobile应用程序工作时,它应该异步检查服务器数据库中可用的任何新版本。如果补丁存在,程序应该下载。cab (Windows Mobile安装程序)文件并自动安装/运行。
主要是,我对这些有疑问:
- 如何下载一个cab文件到设备的特定文件夹。
- 如何以编程方式安装cab文件。(可编程触发驾驶室文件安装,无需用户干预)
这怎么可能呢?
请帮帮我.....
下载文件到本地文件夹通常取决于您的存储库,即。如果您将其存储在文件共享或基于web的共享中,则需要稍微不同的代码。您必须考虑通过某种清单文件或数据库记录提供预下载版本检查的选项,以避免下载整个补丁只是为了检查其版本。
一旦你有下载部分排序(再次,取决于存储),你可以通过调用wceload.exe
:
Process proc = Process.Start("wceload.exe", "'"" + Path.Combine(applicationPath, updateFileName) + "'"");
proc.WaitForExit();
但是,这将需要用户交互并按'OK'以在旧版本的基础上安装新版本。
[编辑]一些设备制造商(如Intermec)提供了在重启时自动安装CAB的方法,但这是非常特定于设备的,所以你必须仔细阅读。
我用下面的方法解决了这个问题:
- 打开tcp/ip连接到桌面应用程序。
- 从PDA应用程序发送当前版本号。
- 在编译过程中,添加到#。
- 桌面应用程序在*中查找可用版本。
- PDA应用程序接收并与运行版本进行比较。
- 如果台式机上的版本高于运行版本,PDA应用程序向台式机发送发送CAB文件的请求(这里可以引入请求CAB文件的对话框)。
- 桌面电脑发送CAB文件到PDA应用程序。
- PDA应用程序接收CAB文件并将其存储在本地。
- 然后通过wcelload .exe运行安装,参数为/delete 1/silent " cab文件的完整路径"
- 如果安装成功,退出应用程序或重启PDA。
- 如果PDA应用程序有
这不是几个字符串的代码,但它的工作完美。
我只是必须这样做,似乎安装部分得到了回答。如果有人需要下载部分,这为我工作。
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);
}
}