【问题标题】:.NET Compact Framework - CAB auto update on Windows Mobile 6.5.NET Compact Framework - Windows Mobile 6.5 上的 CAB 自动更新
【发布时间】:2011-07-24 11:48:48
【问题描述】:

我正在为我的 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?

问候

【问题讨论】:

    标签: c# .net windows-mobile compact-framework cab


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      CAB 安装和 WCELOAD 在许多方面受到限制。您正在寻找某种 UI,告诉用户事情正在进行中,并且您希望有条件地安装 CAB 的某些部分,而 wceload 开箱即用是无法实现的。你或许可以和a custom setup DLL 一起破解其中的一些内容,但我认为“有条件的安装部分”仍将成为节目的终结者。

      另一种方法是不使用 wceload,而是创建自己的 CAB 提取工具。然后,您可以根据文件名等执行您自己的所有 UI 和自定义逻辑。几年前我将an SDK and sample installer 放在一起,这将允许这样做 - 诚然它不是免费的,但最低成本选项只有 5 美元,所以它很漂亮关闭。

      较新的 CAB 实际上是 contain an XML doc,它描述了安装操作(除了我编写的 SDK 解码的较旧的 .000 二进制文件描述符之外),因此您也可以只使用它来完成所有提取并保存5 美元。

      【讨论】:

        【解决方案3】:

        不要使用出租车。使用带有可执行文件和内部 cab 的 tar.gz 包。解压使用SharpZipLib。只需运行可执行文件即可完成工作。使用 \windows\wceload 工具运行 cab 安装。

        【讨论】:

          猜你喜欢
          • 2012-01-09
          • 2013-11-05
          • 2010-12-11
          • 2011-03-18
          • 2010-12-11
          • 2011-07-10
          • 2011-09-05
          • 2014-02-18
          • 2011-01-26
          相关资源
          最近更新 更多