2011-03-28 111 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工具来运行驾驶室安装。

相关问题