繁体   English   中英

.NET Compact Framework-Windows Mobile 6.5上的CAB自动更新

[英].NET Compact Framework - CAB auto update on Windows Mobile 6.5

我正在为Windows Mobile 6.5 .NET CF 3.5应用程序开发自动更新功能。 我最终得到以下解决方案。

  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?

问候

不要使用出租车。 使用tar.gz软件包,其中包含可执行文件和cab。 使用SharpZipLib进行减压。 只需运行可执行文件即可。 使用\\ windows \\ wceload工具运行cab安装。

它并没有真正回答您的问题,但是您可以执行以下操作:

  • 启动另一个(小的)可执行文件,显示“正在进行更新”屏幕。
  • 在幕后做你的事情

[设置结束] =>它会启动更新的应用程序[稍等] =>它会自行关闭,更新的应用程序可以使用了

CAB安装和WCELOAD在许多方面受到限制。 您正在使用某种UI,该UI告诉用户事情正在进行中,并且您希望有条件地安装CAB的某些部分,而开箱即用wceload根本无法实现。 您可能可以通过自定义安装DLL来破解其中的一些内容,但是我认为“条件安装件”仍然是节目的制胜法宝。

一种选择是不使用wceload,而是创建自己的CAB提取工具。 然后,您可以根据文件名执行所有自己的UI和自定义逻辑,等等。几年前,我组装了一个SDK和示例安装程序 ,这将允许这样做-诚然,它不是免费的,但最低的成本选择仅为5美元,因此非常接近。

较新的CAB实际上包含描述安装操作的XML文档 (除了我编写的SDK所解码的较旧的.000二进制文件描述符之外),因此也有可能您可以仅使用该提取并保存$ 5来进行所有提取。 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM