2014-08-27 45 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

相關問題