Mobile Compact Framework 2.0从VS2008生成的Win7安装失败

时间:2011-05-11 14:57:40

标签: visual-studio-2008 windows-mobile failed-installation compact-framework2.0

我最近将针对WinMobile5应用的VS2005解决方案升级到了VS2008。该解决方案还包含一个CAB构建器项目和一个MSI Desktop Installer项目。安装程序中的自定义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支持)
-Symbol WM5设备 - MC70
-Windows移动设备中心
-Created桌面MSI安装CF2 CAB加我的应用程序的CAB通过自定义DLL
- 在安装(以管理员身份运行)我的应用程序的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项目,添加一个安装程序&部署项目。从XP运行安装程序,太棒了!从Win7,BOOM运行安装程序!

/设备根目录不包含CF2安装日志。没那么远。
VOLATILE / Setup.log不包含“错误”。

我也尝试过UberCab方法(将多个CAB捆绑到一个CAB中)。但是,在设备上拆分时: BOOM 会失败。它以某种方式知道。

我的智慧结束了。 CF2应该可以工作。

-Tom

1 个答案:

答案 0 :(得分:0)

回顾我的CAB安装程序SDK的源代码,我看到CAB的开头是固定大小的标头。第一个DWORD是一个CAB签名(0x4643534d little-endian)就像你看到的那样。第二个DWORD是一个保留集,在您的情况下全部为零。下一个 DWORD 是CAB的大小 - 你只显示低位字,但差别接近10k(0x4868 - 0x2250 = 0x2618)。这可能导致CAB解压缩程序失败,因为它正在查找文件末尾的数据。

现在为什么正在改变我不知道。您已经在MSI中验证了CAB的来源?你有没有在另一个工具中打开MSI并拔出CAB以确定它是否正确?基本上CAB在源端是错误的(很可能是我认为),还是在移动时会被修改?