我最近将 WinMobile5 应用程序的 VS2005 解决方案升级到 VS2008。该解决方案还包含一个 CAB 构建器项目和一个 MSI 桌面安装程序项目。来自安装程序的自定义 DLL 负责将应用程序和支持 CAB(如 Compact Framework 2.0、扫描仪库等)部署到实际设备。
我使用这篇文章作为 MSI 安装指南:http:
//msdn.microsoft.com/en-us/library/aa446504.aspx
问题是,在运行 Setup.exe / MSI 文件时,CF2 CAB 无法从 Win7 成功安装到 WM5 设备。但是,从 XP 安装可以正常工作。
概括:
-Windows7 32 位机器 -VS2008 / WM6 SDK(包括 WM5 支持)
-符号 WM5 设备 -MC70 -Windows
移动设备中心-
创建桌面 MSI 以通过自定义 DLL 安装 CF2 CAB 以及我的应用程序的 CAB -
安装期间(以管理员身份运行)我的应用程序的 CAB 安装成功,CF2 CAB 说“安装不成功”
-但是从 VS2008 运行/调试应用程序将正确部署 CF2,因此它可以工作。
有趣的花絮:
我从设备中拉回了时髦的 CF2 CAB 以与源进行比较,位于此处:
C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\wce500\armv4i\NETCFv2.wm.armv4i.cab
令我惊讶的是,设备 CAB 有两个与源不同的 HEX 字节。从开始:
4D 53 43 46 00 00 00 00 68 48(来自 Pullback)其余相同
4D 53 43 46 00 00 00 00 50 22(来自 Source)其余相同
当我用“50 22”CAB 替换“68 48”CAB 并在设备上手动启动时,它安装得很好。所以我的问题是:为什么源驾驶室到达目标设备后会稍微改变?除此之外,文件是相同的。
我尝试过的其他事情:
从头开始创建一个针对 WM5/CF2 的小型应用程序。添加 CAB 项目,添加 Setup & Deploy 项目。从 XP 运行安装程序,太棒了!从 Win7 运行安装程序,BOOM!
/Device root 不包含 CF2 安装日志。没那么远。
VOLATILE/Setup.log 不包含“错误”。
我还尝试了 UberCab 方法(将多个 CAB 捆绑到一个 CAB 中)。但是,在设备上解绑时:BOOM失败。它不知何故知道。
我无计可施。CF2 件应该可以正常工作。
-汤姆