首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动更新Windows应用程序

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

Stack Overflow用户
提问于 2009-04-15 21:41:47
回答 5查看 15.8K关注 0票数 8

我有一个.net cf3.5WindowsMobile应用程序,我的客户希望拥有自动访问功能。

以下是我到目前为止所拥有的:

  1. 使用智能设备CAB项目创建一个CAB (这足够好,还是应该在这里做其他事情)

2.获取应用程序版本号

代码语言:javascript
运行
复制
Assembly.GetExecutingAssembly().GetName().Version.ToString();
  1. 调用WCF web服务来进行版本号查找。
  2. 下载cab文件的新版本。
  3. ???
  4. 在CAB文件上执行WCELoad.exe
  5. 利润
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-15 23:05:34

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

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

一个古老但仍然有效的资源是Alex的关于创建自更新应用程序的MSDN文章

票数 9
EN

Stack Overflow用户

发布于 2009-09-23 00:30:49

我刚刚发布了WmAutoUpdate,一个.NET c#框架,它将在Compact上进行自动更新。它可以在Github:http://github.com/seboslaw/wmautoupdate上免费获得。

票数 11
EN

Stack Overflow用户

发布于 2009-08-18 09:18:38

没有必要创建一个专门的应用程序来更新,至少不是在WM 6上使用.netcf 3.5。我正在使用webservice下载.cab文件,然后启动一个新的进程并调用wceload来进行静默的cab安装。这将关闭我正在运行的应用程序,卸载它,然后按照这里的MSDN文档中所述的方式执行安装。

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

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/753851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档