代码之家  ›  专栏  ›  技术社区  ›  Chris Brandsma

如何自动更新Windows Mobile应用程序

  •  8
  • Chris Brandsma  · 技术社区  · 16 年前

    我有一个.NET CF 3.5 Windows Mobile应用程序,我的客户希望它具有自动更新功能。

    以下是迄今为止我所拥有的:

    1. 使用智能设备cab项目创建cab(这是否足够好,或者我应该在此处执行其他操作)

    2.获取应用程序版本号

    Assembly.GetExecutingAssembly().GetName().Version.ToString();
    
    1. 调用的WCF Web服务以查找版本号。
    2. 下载新版本的cab文件。
    3. ????
    4. 在cab文件上执行wceload.exe
    5. 利润
    5 回复  |  直到 15 年前
        1
  •  9
  •   ctacke    16 年前

    您的解决方案通常是正确的,但有一些问题。

    1. 你不能更新自己。为了防止文件共享问题,您必须关闭并更新一些otehr应用程序。这通常是通过有一个专用的“更新程序”应用程序来处理的。它可能是应用程序图标的目标,因此每次启动时都会进行更新,或者可以通过“检查更新”类型的菜单项启动。无论如何,你必须启动它并确保实际的应用程序没有运行。
    2. 通常,最好在安装损坏或中断时提供某种形式的备份
    3. 出租车更新将需要对所有东西进行全面更新。这可能不是您最终想要的(您可能只想更新单个文件、程序集或其他内容),因此从下拉单个文件的逻辑开始,将使您的扩展性更强。

    一个旧的,但仍然有效的,资源是亚历克斯·费曼的 MSDN article on creating self-updating applications .

        2
  •  11
  •   Sebastian    15 年前

    我刚刚发布了wmaautoupdate,一个.NET C框架,它将在Compact框架上进行自动更新。在Github上免费提供: http://github.com/seboslaw/wmautoupdate

        3
  •  5
  •   user158306    15 年前

    不需要创建专用的应用程序来更新,至少不需要在带有.netcf 3.5的wm 6上进行更新。我正在使用WebService下载.cab文件,然后启动新进程并调用wceload来执行静默的cab安装。这需要关闭我的跑步应用程序,卸载它,然后执行如中所述的安装。 MSDN docs here

    在Windows Mobile 5.0及更高版本中,当使用wceload.exe重新安装.cab文件时,wceload.exe会在安装新版本之前卸载以前安装的.cab文件版本。在此过程的卸载部分中,wceload.exe将根据目标设备上的文件名,关闭使用.cab文件安装在目标设备上的所有当前运行的可执行文件。wceload.exe还关闭作为文件操作目标的任何可执行文件,例如移动或复制。要关闭可执行文件,wceload.exe会将wm_发送到进程拥有的所有顶级窗口。如果在收到wm_close消息后进程没有及时退出,则wceload.exe会通过调用terminateprocess强制关闭它。wceload.exe不会尝试关闭目标设备上运行时映像中提供的可执行文件。

    我还有一个cesetup.dll,用于在卸载期间对文件进行额外清理。

    我遇到的一个大问题是,在进行静默安装时,我无法更改应用程序的安装文件夹,它默认为.inf文件中的%installdir%属性。并且为每个想要更新的设备构建一个单独的.cab并不是一个很好的解决方案。

        4
  •  2
  •   Guy Starbuck    16 年前

    我所在的团队通过在负责下载和运行出租车的移动设备上创建第二个移动应用程序(在正在更新的应用程序之外)来实现这一点。

    • 在每个平台上,主应用程序都通过Web服务呼叫确定是否需要更新。
    • 如果它的版本已过期,它将使用要安装的新版本的URI调用更新程序应用程序,然后退出。
    • 更新程序应用程序将下载新的cab,并根据需要执行安装/重新启动和注册表修改。

    这对我们很有效。

        5
  •  0
  •   alex1234    15 年前

    你是对的。在wm5,6之后…如果安装了wceload,它只会停止应用程序,因此您不需要手动停止应用程序。但是您需要在静默模式下安装更新,因为如果不是,用户可以取消它,所以您需要Silen Cab安装程序。从下载

    http://cssoft.freehosting.net/website2/default.html