Re: How to get a WM5 device's O/S Version in a call without using RAPI?



Ilya,

As a follow up, I did create zero-byte length filenames that are created at
runtime and added these filenames to my INF so the CAB would be built with
these in it. Then when the user clicks on the Remove button on the
ActiveSync AppMgr screen, these files are then removed on my device. So,
everything works nicely.

I guess if I were also adding Registry entries on the device at runtime then
I would definitely require the Uninstall_Exit function in the Setup.dll, as
there is no easy workaround for these.


Regards,
Neville Lang




"Neville Lang" <neville@xxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:eaQFc4JGGHA.3120@xxxxxxxxxxxxxxxxxxxxxxx
> Ilya,
>
> Thanks again for these ideas, they are helpful.
>
> Regards,
> Neville Lang
>
>
>
>
> "Ilya Tumanov [MS]" <ilyatum@xxxxxxxxxxxxxxxxxxxx> wrote in message
> news:43c801db$1@xxxxxxxxxxxxxxxxxxxxx
>> Yes, your device CAB file should do all the clean up, not the desktop
>> installer. It's really necessary considering device application can be
>> removed manually at any time via "Remove programs" applet on device
>> without using desktop installer at all. Also, device might be
>> disconnected upon removal of desktop installer.
>>
>>
>>
>> To do so you can add placeholder files to your CAB so WCELOAD would
>> delete them for you upon removal.
>>
>> For example, if you creating file "foo.txt" in your application, add an
>> empty "foo.txt" to the CAB.
>>
>>
>>
>> Alternatively you can do clean up from setup DLL you've mentioned.
>>
>> There's a setup DLL sample in SDK. You would need to change it to delete
>> files and add it to the CAB file as described here:
>>
>>
>>
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesetup/html/_wcesdk_Using_Installation_Functions_in_Setupdll.asp
>>
>> Best regards,
>>
>> Ilya
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> *** Want to find answers instantly? Here's how... ***
>>
>> 1. Go to
>> http://groups-beta.google.com/group/microsoft.public.dotnet.framework.compactframework?hl=en
>> 2. Type your question in the text box near "Search this group" button.
>> 3. Hit "Search this group" button.
>> 4. Read answer(s).
>>
>> "Neville Lang" <neville@xxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:%23qXXODAGGHA.1088@xxxxxxxxxxxxxxxxxxxxxxx
>>> Ilya,
>>>
>>> I have tried out installing my VS2003 compiled app using MSI and my now
>>> modified custom installer / uninstaller and fixed up the Uninstall
>>> option in the AppMgr's ini file. It all now works so I am pleased. Thank
>>> you for those clues.
>>>
>>> However, my app on the device side creates files during its execution. I
>>> found that the ActiveSync uninstaller knows nothing about these and does
>>> not delete them, leaving my app's folder behind. Is there any way I can
>>> inform the uninstaller on the device side to remove the files created at
>>> runtime?
>>>
>>> On checking Google for the above query, it seems there is a reference to
>>> an Uninstall_Exit function in C++. What do I need to do on the device
>>> side to trigger that, if that is the best way of removing
>>> runtime-created files?
>>>
>>> Previously, I was doing all of this using my custom uninstaller and
>>> manually removing these files via RAPI. Since Pocket PC Phones with WM5
>>> seem to block RAPI, I now need to use the ActiveSync approach.
>>>
>>> Regards,
>>> Neville Lang
>>>
>>>
>>>
>>> "Ilya Tumanov [MS]" <ilyatum@xxxxxxxxxxxxxxxxxxxx> wrote in message
>>> news:43c6aeca@xxxxxxxxxxxxxxxxxxxxx
>>>> Yes, you can uninstall your desktop installer from CeAppMgr.exe
>>>> Add/Remove programs if user chooses to completely remove the
>>>> application.
>>>>
>>>> To do so your INI file could include optional "Uninstall" entry.
>>>>
>>>>
>>>>
>>>> Please see this for details:
>>>>
>>>>
>>>>
>>>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mobilesdk5/html/wce51conusingapplicationmanager.asp
>>>>
>>>>
>>>>
>>>> Best regards,
>>>>
>>>> Ilya
>>>>
>>>> This posting is provided "AS IS" with no warranties, and confers no
>>>> rights.
>>>>
>>>> *** Want to find answers instantly? Here's how... ***
>>>>
>>>> 1. Go to
>>>> http://groups-beta.google.com/group/microsoft.public.dotnet.framework.compactframework?hl=en
>>>> 2. Type your question in the text box near "Search this group" button.
>>>> 3. Hit "Search this group" button.
>>>> 4. Read answer(s).
>>>>
>>>> "Neville Lang" <neville@xxxxxxxxxxxxxxxxxxxxxx> wrote in message
>>>> news:%234izcHyFGHA.3856@xxxxxxxxxxxxxxxxxxxxxxx
>>>>> Ilya,
>>>>>
>>>>> Thanks again for your reply to this topic.
>>>>>
>>>>> I have avoided using the AppMgr so that my customers would not use the
>>>>> ActiveSync install / uninstall feature because my Installer needed to
>>>>> not only copy a CAB to the device but to also add folders, files and
>>>>> registry entries to the desktop for the interworking with the
>>>>> third-party app. In other words, I have complete control over the
>>>>> installation process on both the device side and the desktop side
>>>>> using my custom installer / uninstaller (via Windows Installer).
>>>>>
>>>>> From what I understand, if my app was to use ActiveSync's AppMgr then
>>>>> if a user were to uninstall it via ActiveSync then, while my app would
>>>>> disappear from the device side, the desktop side would remain. My
>>>>> understanding is that the Windows Installer custom uninstaller is only
>>>>> triggered when a user clicks on the Remove button for a program listed
>>>>> on the Add or Remove Programs in the Control Panel of the desktop.
>>>>> This is what I do now. Can you tell me if my custom installer was to
>>>>> install my app to the AppMgr then if a user of mine removed the app
>>>>> via ActiveSync, then would my custom uninstaller program be called to
>>>>> complete the removal of my things on the desktop? If so, is there
>>>>> something I can see on how to do this.
>>>>>
>>>>> If the above question is yes, then I would consider going down the
>>>>> AppMgr path. As you well know, it is very important (from a system
>>>>> view) that an uninstaller completely removes all installed
>>>>> folders/files/registry entries from both the device side and the
>>>>> desktop side, and so I still want to comply with this practice.
>>>>>
>>>>> Regards,
>>>>> Neville Lang
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> "Ilya Tumanov [MS]" <ilyatum@xxxxxxxxxxxxxxxxxxxx> wrote in message
>>>>> news:43c5a20c$1@xxxxxxxxxxxxxxxxxxxxx
>>>>>> Please consider switching to CeAppMgr. It's easy to use and it also
>>>>>> can pick correct CAB for the device provided CABs contain appropriate
>>>>>> device information.
>>>>>> You should be able to specify NETCF V1 CABs for PPC 2002 and 2003 in
>>>>>> a separate INI and install NETCF the same way as your application.
>>>>>>
>>>>>> Advantages of using CeAppMage include:
>>>>>>
>>>>>> - It works on devices with RAPI disabled.
>>>>>> - It works if device is disconnected.
>>>>>> - It is a standard way to install CE applications and it's easy for
>>>>>> users to manage them.
>>>>>>
>>>>>> Also, you can register/unregister your application from CeAppMgr in
>>>>>> ARP as you used to do.
>>>>>>
>>>>>>
>>>>>> Please don't mind article below mentions NETCF V2, it would work for
>>>>>> V1 the same way.
>>>>>>
>>>>>>
>>>>>> Best regards,
>>>>>>
>>>>>> Ilya
>>>>>>
>>>>>> This posting is provided "AS IS" with no warranties, and confers no
>>>>>> rights.
>>>>>>
>>>>>> *** Want to find answers instantly? Here's how... ***
>>>>>>
>>>>>> 1. Go to
>>>>>> http://groups-beta.google.com/group/microsoft.public.dotnet.framework.compactframework?hl=en
>>>>>> 2. Type your question in the text box near "Search this group"
>>>>>> button.
>>>>>> 3. Hit "Search this group" button.
>>>>>> 4. Read answer(s).
>>>>>>
>>>>>> "Neville Lang" <neville@xxxxxxxxxxxxxxxxxxxxxx> wrote in message
>>>>>> news:%23CMSkSwFGHA.1180@xxxxxxxxxxxxxxxxxxxxxxx
>>>>>>> Ilya,
>>>>>>>
>>>>>>> Thank you for your response. For the last few years, I detect the
>>>>>>> device o/s to install the right CAB file. For example, PPC2002
>>>>>>> requires an ARM.cab while WM2003 + SE requires an ARMV4.cab file.
>>>>>>> Generally, there should not be too many differences but I did built
>>>>>>> this into my installer to be safe. I now know that the ARMV4.cab
>>>>>>> does run on my WM5 Pocket PC but more of that later.
>>>>>>>
>>>>>>> As for WM5 devices, it seems I still may need to detect the
>>>>>>> operating system to vary the install logic in my custom installer.
>>>>>>> As it stands, my VS 2003-generated installer does not cleanly
>>>>>>> install correctly, and so my customers require a change. Currently,
>>>>>>> I copy down the CAB file to the device using RAPI and then run the
>>>>>>> CeCreateProcess on the device, again using RAPI. This is the method
>>>>>>> I have employed. I do not use the ActiveSync AppMgr approach since
>>>>>>> my custom uninstaller is driven from the Add or Remove Programs in
>>>>>>> the Control Panel.
>>>>>>>
>>>>>>> For WM5 devices, the Windows installer seems to fail when trying to
>>>>>>> install my app onto a WM5 device, like Dell Axim X51v. The Windows
>>>>>>> Installer rolls back so there is no entry in the Add or Remove
>>>>>>> Programs section on the desktop's Control Panel. However, after the
>>>>>>> roll-back has occurred from the desktop side, the CAB has been
>>>>>>> actually transferred to the device - it is sitting in the root
>>>>>>> folder of the device. It seems that the CeCreateProcess must have
>>>>>>> failed to start the CAB install on the device side. I am looking
>>>>>>> into this at the moment. If you tap on the CAB using File Explorer
>>>>>>> then it runs.
>>>>>>>
>>>>>>> I am using a MSI and RAPI type of custom installer because while
>>>>>>> controlling the install of the device CAB, I also need to install
>>>>>>> some EXEs on the desktop side to act as linkages for my app to
>>>>>>> communicate with a third-party app on the desktop side. Due to the
>>>>>>> fact that my app installer is currently used for PPC 2002 devices up
>>>>>>> to WM2003SE (at the moment), my installer also checks that .NET has
>>>>>>> been installed on both the device and the desktop. PPC2002 devices
>>>>>>> did not have it there and nor did Win98 desktop computers. My
>>>>>>> customers (consumers) can have a wide range of equipment, and I want
>>>>>>> my app to install on all of these combinations. As I stated on my
>>>>>>> last post, this will be the last patch update for my app so it
>>>>>>> includes WM5 devices. The next major version of my app will be
>>>>>>> compiled under VS2005 and use CF2, so my PPC2002 customers will then
>>>>>>> need to upgrade their equipment. I am also likely to discontinue
>>>>>>> Win98 desktop side installations too at that time.
>>>>>>>
>>>>>>> So, it seems (I think) that I still need to detect the device's o/s
>>>>>>> to slightly vary my install process in my custom installer /
>>>>>>> uninstaller. While I think this should be OK for Pocket PCs like the
>>>>>>> Dell Axim X51v (RAPI is enabled), it is the Pocket PC Phones, like
>>>>>>> the i-mate JasJar that some of my customers have purchased, where
>>>>>>> they want to continue using my app. and so I need to solve
>>>>>>> installation to that type of device because it seems that RAPI can
>>>>>>> be disabled on these devices. If anyone has an installation solution
>>>>>>> for an unsigned app to install onto the WM5 Pocket PC Phone Edition,
>>>>>>> where RAPI is disabled, I would be interested. Unfortunately, I do
>>>>>>> not have one of those devices for testing.
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>> Neville Lang
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> "Ilya Tumanov [MS]" <ilyatum@xxxxxxxxxxxxxxxxxxxx> wrote in message
>>>>>>> news:43c56a6b$1@xxxxxxxxxxxxxxxxxxxxx
>>>>>>>> Why exactly do you need to determine device type? Since you're
>>>>>>>> using VS 2003, it's a managed application and binaries should be
>>>>>>>> exactly the same for all platforms from PPC 2000 to WM 5.0.
>>>>>>>>
>>>>>>>> Which means your application can use single CAB for all. There's no
>>>>>>>> need to deploy NETCF V1 SP3 since it's in ROM on every WM 5.0
>>>>>>>> device.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> If that's the case, you can use this technique:
>>>>>>>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/deploy_cf2_apps_cab_msi.asp
>>>>>>>>
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>>
>>>>>>>> Ilya
>>>>>>>>
>>>>>>>> This posting is provided "AS IS" with no warranties, and confers no
>>>>>>>> rights.
>>>>>>>>
>>>>>>>> *** Want to find answers instantly? Here's how... ***
>>>>>>>>
>>>>>>>> 1. Go to
>>>>>>>> http://groups-beta.google.com/group/microsoft.public.dotnet.framework.compactframework?hl=en
>>>>>>>> 2. Type your question in the text box near "Search this group"
>>>>>>>> button.
>>>>>>>> 3. Hit "Search this group" button.
>>>>>>>> 4. Read answer(s).
>>>>>>>>
>>>>>>>> "Neville Lang" <neville@xxxxxxxxxxxxxxxxxxxxxx> wrote in message
>>>>>>>> news:eDfPz3pFGHA.516@xxxxxxxxxxxxxxxxxxxxxxx
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> Currently, I have an app compiled in VS2003 that I want to also be
>>>>>>>>> able to run on WM5 devices for my customers. My custom installer
>>>>>>>>> uses MSI and RAPI calls for installation of my app. Currently,
>>>>>>>>> before I transfer the correct CAB for the device, I do a RAPI call
>>>>>>>>> to get the device's operating system version. This app has been
>>>>>>>>> designed for PPC 2002 and WM2003 including Second Edition, and
>>>>>>>>> therefore you need to know which CAB to install. I have found my
>>>>>>>>> app runs well on a WM5 device as I have it running on my Dell Axim
>>>>>>>>> X51v but I need to be able to know the device's operating system
>>>>>>>>> version for WM5 devices so I know what CAB version to download.
>>>>>>>>>
>>>>>>>>> The problem I am having is that some Pocket PC Phone Edition with
>>>>>>>>> WM5 , like the i-mate JasJar, seem to make RAPI unavailable. Does
>>>>>>>>> anyone have another idea / method of determining the i-mate
>>>>>>>>> JasJar's o/s version without using RAPI?
>>>>>>>>>
>>>>>>>>> BTW, this is to be my last patch update of my app under VS2003 and
>>>>>>>>> want it to deploy it onto WM5 devices since my customers are
>>>>>>>>> wanting this requirement. The next release of my app, after this
>>>>>>>>> patch update, will be a major update and will be compiled with
>>>>>>>>> VS2005 and use CF2, but for the interim period, I need to be able
>>>>>>>>> to use my current VS2003 compiled code on all WM5 devices.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Neville Lang
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>


.


Loading