这是没有必要创建一个专用的应用程序来更新,至少不在WM 6与.netcf 3.5。我正在使用web服务下载.cab文件,然后启动一个新进程并调用wceload来进行无声的出租车安装。这需要照顾关闭我的运行应用程序,卸载它,然后执行安装像 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文件并不是一个很好的解决方案。