我有一个.net cf 3.5 Windows Mobile应用程序,我的客户想要自动更新功能。
这是我到目前为止所做的:
2.获取应用程序版本号
Assembly.GetExecutingAssembly().GetName().Version.ToString();
答案 0 :(得分:11)
我刚刚发布了WmAutoUpdate,一个.NET c#框架,它将在Compact Framework上进行自动更新。它可以在Github上免费获得:http://github.com/seboslaw/wmautoupdate
答案 1 :(得分:9)
您的解决方案通常是正确的,但有一些问题。
一个旧的,但仍然非常有效的资源是Alex Feinman的MSDN article on creating self-updating applications。
答案 2 :(得分:5)
没有必要创建一个专用的应用程序来更新,至少不是在带有.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_CLOSE发送到进程拥有的所有顶级窗口。如果在收到WM_CLOSE消息后进程没有及时退出,则Wceload.exe通过调用TerminateProcess强制关闭它。 Wceload.exe不会尝试关闭目标设备上运行时映像中附带的可执行文件。
我还有一个cesetup.dll,用于在卸载期间进行额外的文件清理。
我遇到的一个大问题是,在执行静默安装时我无法更改应用程序的安装文件夹,并且默认为我的.inf文件中的%installDir%属性。为每个想要更新的设备构建单独的.cab并不是一个很好的解决方案。
答案 3 :(得分:2)
我所在的团队通过在负责下载和运行CAB的移动设备上创建第二个移动应用程序(正在更新的应用程序之外)来实现此目的。
这对我们很有用。
答案 4 :(得分:0)
你是对的。在wM5之后,6 ... WCEload只是在安装时停止应用程序,因此您不需要手动停止它。但是您需要以静默方式安装更新,因为如果不是用户可以取消它,那么您需要使用silen cab安装程序。从
下载