ceappmgr for multiple platforms

Hi,

I have a set of cab-files that are built for different platforms such as Pocket PC 2003, Smartphone 2003, Windows Mobile 5.0 Pocket PC 2003, and Windows Mobile 5.0 Smartphone 2003. They all have a common ini-file that I pass to CEAPPMGR.

With the help of [CeDevice] and VersionMin and VersionMax I can sort out the first two cab files from the second two.

My problem is that when I connect a device and perform Add/Remove programs I cannot distinguish between the two WM5 platforms. I.e. the same cab is used to install on both platforms. How can I make ActiveSynch pick the correct cab-file

There is an UnsupportedPlatform field in the inf-file. However, I can only find documentation that is 5 years old for verion 2 of WIndows CE...

Regards

Bengt



Answer this question

ceappmgr for multiple platforms

  • IamManick

    You'd need to add [Platform] section, that's the only way (description is on MSDN). Also you would have to use AS 4.0 or above, 3.x will not work in all cases.



  • zhihao

    Hi Bengt,

    I really appreciate your help, I finally got it working using your examples.

    I figured out the 3.99 as it was still installing the PPC2003 version...

    As I understand, the VersionMin and VersionMax are for older version of the CeAppMgr but thanks for the tip!

    Regards,

    Tom


  • rickyg

    The different files are selected through different sections in the .inf-file that are dependent on the /cpu switch that you give. In my case I use a combination of cpu-name and platform for the /cpu switch. For example:

    /cpu WM5_PPC2003_ARMV4 /platform WM5_PPC2003

    and in the .inf-file I have sections:

    [DefaultInstall.WM5_PPC2003_ARMV4]
    CopyFiles=Files00.WM5_PPC2003_ARMV4

    [SourceDisksNames.WM5_PPC2003_ARMV4]
    2=,"SourceDisk2",,x:\dist\wce\ppc2003armv4

    and so on. Hope this helps!

    Bengt


  • Oaf300092

    Hi,

    I am trying to find the best way to build an installer for my ce application.

    I have a few scenarios in mind, but I cannot seem to figure out if the scenario I am trying
    is possible, and if so how to get it working.

    One scenario is that I use one .inf file to build for the four different platforms:

    PPC2003
    PPC2005
    SP2003
    SP2005

    Each platform of course having a different .dll.

    And then use the ceappmgr with a .ini file (with the four can files defined) to install
    the appropriate cab file on the specific device. In other words, the ceappmgr detects
    which .cab file to install...

    This requires me, as I understand, to use a combination of the /platform option and the
    definition of the Platform tag in the .inf file. However what I cannot seem to grasp is
    how can you define which dll to use based on the Platform tag.

    Regards,

    Tom Rixom

  • vanu

    My platform versions were indeed correct as they were both for Windows Mobile 5. My "Smartphone" string value was also correct.

    When I added the /platform switch to the cab-wizard it changed the output filename which I did not notice, so I was testing my original cab the whole time...

    Ilya, thank you for your help!

    Bengt


  • Philip Tolk

    So a .inf file would be:

    ----------------------------------------------------------
    ...
    [CEDevice]
    UnsupportedPlatforms = "HPC","HPC Pro","Jupiter"
    ProcessorType = 2577 ; ARM CPU

    [Platform.WM5_PPC2003]
    PlatformString=PocketPC
    PlatformMin=3.0

    [Platform.WM5_SP2003]
    PlatformString=Smartphone
    PlatformMin=3.0

    [Platform.WM5_PPC2005]
    PlatformString=PocketPC
    PlatformMin=4.0

    [Platform.WM5_SP2005]
    PlatformString=Smartphone
    PlatformMin=4.0

    [DefaultInstall.WM5_PPC2003_ARMV4]
    CopyFiles=Files00.WM5_PPC2003_ARMV4

    [DefaultInstall.WM5_SP2003_ARMV4]
    CopyFiles=Files00.WM5_SP2003_ARMV4

    [DefaultInstall.WM5_PPC2005_ARMV4]
    CopyFiles=Files00.WM5_PPC2005_ARMV4

    [DefaultInstall.WM5_SP2005_ARMV4]
    CopyFiles=Files00.WM5_SP2005_ARMV4

    [SourceDisksNames.WM5_PPC2003_ARMV4]
    2=,"SourceDisk2",,x:\dist\wce\ppc2003armv4

    [SourceDisksNames.WM5_SP2003_ARMV4]
    2=,"SourceDisk2",,x:\dist\wce\sp2003armv4

    [SourceDisksNames.WM5_PPC2005_ARMV4]
    2=,"SourceDisk2",,x:\dist\wce\ppc2005armv4

    [SourceDisksNames.WM5_SP2005_ARMV4]
    2=,"SourceDisk2",,x:\dist\wce\sp2005armv4

    ...
    ----------------------------------------------------------

    And the coinciding call from the cabwiz would be:

    /cpu WM5_PPC2003_ARMV4 /platform WM5_PPC2003
    /cpu WM5_SP2003_ARMV4 /platform WM5_SP2003
    /cpu WM5_PPC2005_ARMV4 /platform WM5_PPC2005
    /cpu WM5_SP2005_ARMV4 /platform WM5_SP2005

    Regards,

    T.

  • Amde

    You should add PlatformMax=3.99 to your 2003 entries. In my .inf-file I have also added Windows CE version numbers. I do not know if that is significant or not, it may work with only platform versions. This would look like this with your naming conventions:

    [CEDevice.WM5_PPC2003_ARMV4]
    VersionMin=3.00
    VersionMax=4.99

    [CEDevice.WM5_SP2003_ARMV4]
    VersionMin=3.00
    VersionMax=4.99

    [CEDevice.WM5_PPC2005_ARMV4]
    VersionMin=5.00
    VersionMax=1000

    [CEDevice.WM5_SP2005_ARMV4]
    VersionMin=5.00
    VersionMax=1000

    Regards

    Bengt


  • AndyWillig

    Thank you for your reply!

    I have spent all day trying to get this to work. I have tried all combinations that I have been able to think of, with no success. It keeps installing my Smartphone cab on Pocket PC.

    I am using ActiveSync 4.2 and the .cab-wizard from Visual Studio 2005 + SP1.

    My platform section looks like this:

    [Platform.WM5_PPC2003]
    PlatformString=PocketPC
    PlatformMin=4.0

    [Platform.WM5_SP2003]
    PlatformString=Smartphone
    PlatformMin=4.0

    To the cabwiz I add the /platform WM5_PPC2003 or WM5_SP2003. One thing that I have noted is that the _setup.xml file in the built cab has no platform information. I do not know if it should, but I thought this is what ActiveSync used to pick the correct cab.

    Among the the things I have tried are: having a PlatformMax version, adding UnsupportedPlatforms to CEDevice section, and so on.

    Any suggestions would be highly appreciated!

    Bengt


  • bevis61

    Your platform versions are incorrect (3.0 for WM 2003, 4.0 for WM 5.0 as far as I remember) and PlatformMax is missing. Not sure if it should be "SmartPhone" instead of "Smartphone". The fact you don't have it in XML means it was ignored, probably because of missing PlatformMax. You can look into NETCFv2.ppc.armv4.cab as example.



  • ceappmgr for multiple platforms