2014-08-27 58 views
1

我正在寻找在Visual Studio 2008中创建CAB项目,以便将应用程序部署到多个Windows Mobile设备。在这些设备中,其中一些正在运行Windows Mobile 6.1,其他Windows Mobile 6.5和最后一个Windows Mobile 6.5.3仅针对Windows Mobile 6.1或6.5.3设备的CAB项目 - 限制安装的方法?

我想限制将我的CAB安装到6.5.3端子的6.5.12端子,而不是6.5端子的可能性。

我已经在过去的CAB项目中使用过,因此我查看了项目的属性窗口,以查看是否可以设置操作系统最小/最大版本或是否有一个字段用于排除某些操作系统版本。各字段说明如下:http://msdn.microsoft.com/en-us/library/ms228717%28v=vs.90%29.aspx

特别:

OSVersionMax

指定在 可以安装该.cab文件的最大Windows CE操作系统的版本号。 有几种方法可确定设备的操作系统版本号:

  • 请参阅Windows Mobile设备的操作系统版本。
  • 查看设备上的关于页面。
  • 使用OSMajor和OSMinor以编程方式查询设备。

OSVersionMin

指定在 可以安装该.cab文件的最低Windows CE操作系统的版本号。 有几种方法可确定设备的操作系统版本号:

  • 请参阅Windows Mobile设备的操作系统版本。
  • 查看设备上的关于页面。
  • 使用OSMajor和OSMinor以编程方式查询设备。

操作系统的版本是基于Windows CE的版本(http://msdn.microsoft.com/en-us/library/dd722874%28v=vs.90%29.aspx):

的Windows Mobile 6.5.3 ==> 5.2.23090

的Windows Mobile 6.5 ==> 5.2.21234

的Windows Mobile 6.1.4 ==> 5.2.20757

的Windows Mobile 6.1 ==> 5.2.19202

我不能任何解决方案来生成只有1 CAB兼容我的6.1 & 6.5.3但不是6.5。

看来,我应该做2个CAB,每个定位一个版本。任何想法?

回答

2

创建一个自定义setup.dll,它在安装前执行操作系统版本检查。

MSDN Documentation is here(虽然他们似乎一直在移动链接)。
Another example of the code is here

+0

太棒了!谢谢克里斯,我不知道CAB部署的这一部分!我读过,如果CAB是通过Visual Studio制作的,使用属性很酷,那么包含DLL就没有问题。但是我必须找到检查C++操作系统版本的方法,因为这似乎是强制性的,这个设置是用C++编写的,对吗? – 2014-08-27 16:01:20

+0

可能'GetVersionEx'或'SystemParametersInfo'带有'SPI_GETPLATFORMVERSION',是的,这个必须在C中完成。 – ctacke 2014-08-27 16:43:53

相关问题