Win/CE | Best practice to uninstall an application from multiple devices?
How many .pcg are being deployed by your profile?
Also, which of the following options did you enable for the profile containing the pcg package you want to uninstall in the 260 devices:
“Store packages persistently when supported by device”
“Uninstall package contents upon profile revocation or deletion”
“Reinstall packages on every update schedule”
1 package is being deployed by the profile. It contains a script with the uninstall "application name" command.
I left the package options unchanged...
The only enabled option is : Uninstall package contents upon profile revocation or deletion
Then I assume you have successfully test in the past using
uninstall "application name"
to uninstall your deployed app.
As “Reinstall packages on every update schedule” option has not been enabled, I believe you can try the following:
1. use your mentioned filter to get the 260 devices into a virtual group
2, add an empty directory, say c:\file_sync_empty\ , in your Mobicontrol server.
3. add a new file-sync rule, for "download" from server to devices, with arbitrary device folder (\tmp\ say), and server folder set to be the empty folder defined in step 2 above. Rule target should be your virtual group defined in step 1. Select "sync file when device connects" for File sync schedule. In the rightmost "Advanced" tab, scroll down to the bottom to click the "scripts" button. In the area for "Before file synchronization execute script", add your command tested, namely
uninstall "application name"
Save the rule. Wait for each and every of your 260 device(s) to get on-line and have the uninstall operation done.
Different firmware and agent versions may have slightly different behaviours. As I do not have your Windows CE device(s) to confirm if the above works, I suggest you do a pilot test on 1 device on hand (in step (1)) for each device model you have before you deploy it to the whole virtual group of 260 devices (Note : If somehow your existing profile pushes and re-installs the uninstalled package again, then you might need to further change the options in your profile before repeating the above procedure)
Good luck and enjoy.
Thank you very much for the provided solution!
For some reason im getting an error message saying 'An error occurred while creating or editing the virtual group.' when I try to use my filter on the virtual group.
The filter im trying to set is:
Extended Properties / Apps Include Name = 'app name' (AND) Status = Installed
The filter works fine, when I leave the Status search property out of the query (or use a different property).
Using my mentioned filter in the search box works like a charm....
Could this be a bug?
If the filter works fine to get all the 260 devices when you leave the Status search property out of the query, then leave it out. After all, the file sync script has no app to uninstall if the app is not installed, and the script is no different than no-operation, and thus causes no harm except some wasted network and cpu bandwidth to process the file-sync rule.
BTW, have you tried the file-sync rule yet? Can you see your targeted app uninstalled on the device if you click on its icon and select "sync file now" in the pop-up menu on the web console?
To add to this, assuming you have created the package correctly for what you are trying to accomplish, there may be another option that will work for you to assign it to these devices.
Try the second tab "Filter Criteria" when assigning the profile as there is criteria that can be specified as to which devices this should be deployed to. If the devices have common criteria this should work to target certain devices without having to separate the devices into virtual groups.
If you already have them in a virtual group this shouldn't hurt either as the criteria will find the applicable devices and apply the policies accordingly.
I haven't tried it but in theory this should work too.
Technical Support | SOTI Inc. |1.905.624.9828 | firstname.lastname@example.org | www.soti.net |
Incorrectly uninstalling a program may not be TOTALLY recoverable by subsequently re-installing it if some application/user data residing on the device is not stored on the application server before the uninstallation.
Thus, using virtual group approach can be safer because you can first check what devices have been picked out by your filter criterion before you finally decide to apply the file-sync rule on them.
Adjusting filter criteria directly on profile is convenient, but you cannot see what devices have been chosen. So unless your filter criteria is very simple or incorrect app uninstallation has no data-loss risk (e.g. the app server has full backup of all data on the device), using the profile approach can be comparatively less safe.
Finally, the virtual group approach can be further enhanced to support complex cases in which most devices can be picked with filter(s) and some devices have to be hand-picked. In such case, create a root virtual group with some child group(s) having devices picked automatically by filter rules, and others having devices hand picked manually. Then, a single file sync rule can be applied to the root virtual group, resulting in devices in all its sub virtual-groups to be processed.
I've tried the file-sync rule and assigned it to a couple of devices in the filtered virtual group.
The app got uninstalled... worked just as planned!
Added a File Sync schedule so the rule only gets executed at a specified time to not interfere with the user working with that device.
Haven't tried the solution provided by the support staff. Raymond also has a good point, that you cannot see what devices have been chosen when doing it with a profile.
My "problem" is solved. Thanks a lot for all the help!