Windows mobile 如何自动更新Windows Mobile应用程序
我有一个.net cf 3.5 Windows Mobile应用程序,我的客户希望它具有自动更新功能 以下是我到目前为止的情况:Windows mobile 如何自动更新Windows Mobile应用程序,windows-mobile,compact-framework,installation,clickonce,Windows Mobile,Compact Framework,Installation,Clickonce,我有一个.net cf 3.5 Windows Mobile应用程序,我的客户希望它具有自动更新功能 以下是我到目前为止的情况: 使用智能设备CAB项目创建CAB(这足够好吗,或者我应该在这里做其他事情) 2.获取应用程序版本号 Assembly.GetExecutingAssembly().GetName().Version.ToString(); 调用的WCF web服务进行版本号查找 下载cab文件的新版本 在CAB文件上执行WCELoad.exe 利润 我所在的一个团队通过在负责下载
Assembly.GetExecutingAssembly().GetName().Version.ToString();
我所在的一个团队通过在负责下载和运行CABs的移动设备上创建第二个移动应用程序(在正在更新的应用程序之外)来实现这一点
- 在每个dock上,主应用程序确定是否需要通过web服务调用进行更新
- 如果其版本已过期,它将使用新版本的URI调用updater应用程序进行安装,然后退出
- 更新程序应用程序将下载新的CAB,并根据需要执行安装/重新启动和注册表修改
这对我们来说非常有效。您的解决方案通常是正确的,但存在一些问题
Alex Feinman是一个古老但仍然非常有效的资源。没有必要创建一个专用的应用程序进行更新,至少在WM 6和.netcf 3.5上不需要。我正在使用Web服务下载.cab文件,然后启动一个新进程并调用wceload来执行静默式cab安装。这将负责关闭我正在运行的应用程序,卸载它,然后执行中所述的安装 在Windows Mobile 5.0及更高版本中,当使用Wceload.exe重新安装.cab文件时,Wceload.exe会在安装新版本之前卸载先前安装的.cab文件版本。在此过程的卸载部分,Wceload.exe将根据文件名关闭使用.cab文件安装在目标设备上的所有当前正在运行的可执行文件。Wceload.exe还关闭作为文件操作目标的所有可执行文件,例如移动或复制。要关闭可执行文件,Wceload.exe将WM_close发送到进程拥有的所有顶级窗口。如果进程在收到WM_CLOSE消息后没有及时退出,则Wceload.exe通过调用TerminateProcess强制关闭它。Wceload.exe不会尝试关闭目标设备上运行时映像中附带的可执行文件 我还有一个cesetup.dll,用于在卸载过程中额外清理文件
我遇到的最大问题是,在执行静默安装时,我无法更改应用程序的安装文件夹,并且在.inf文件中默认为%installDir%属性。而且为每个想要更新的设备构建一个单独的.cab并不是一个很好的解决方案。我刚刚发布了WmAutoUpdate,一个.NET c#框架,它将在Compact框架上进行自动更新。它在Github上免费提供:你说得对。在wM5、6之后。。。如果安装了应用程序,WCEload只会停止应用程序,因此不需要手动停止。但是您需要在静默模式下安装更新,因为如果没有,用户可以取消它,因此您需要silen cab安装程序。从下载