Environment
Situation
Resolution
Additional Information
ZDM 7 Applications that were migrated to ZCM using the “Individual Actions†option, instead of converting them to MSIs, can result in large .APPSTATE files. A Large number of individual pieces of content in a bundle can also cause large .APPSTATE files. Actions such as an "Install Directory" option for a directory that contains a large number of files is one example of how this can occur.
Prior to 11.1: In lieu of using the "Install Directory" bundle action, create a self-extracting archive that copies down a single file to the PC and then extracts once copied to the device. 7zip is an FreeWare product that can be used to create self-extracting executable archives. Executing the executable archive with the proper parameters can silently extract the files to the desired location.
Note: If using ZCM 11.1 or newer, the option "Upload all files within the source directory as a single package"is available and can be used instead of the 7zip option.
For Example: "My_Install_Files.exe -oc:\MyInstall -r -y" would extract the file My_Install_files.exe to the C:\MyInstall directory without any user interaction.
To determine the overhead caused by .APPSTATE files, ensure that both the device and user do not directly or indirectly inherit any bundles. Then backup and remove all of the .APPSTATE files from the device and reboot. Manually refresh the agent and using Task Manager, take note of the total amount of memory used by Windows. Reassign the bundles and perform another refresh. Again use Task Manager and take note of the total amount of memory used by Windows.
In addition to memory overhead, large .APPSTATE files can cause some additional Disk/CPU usage during a refresh since the .APPSTATE files for each bundle that is currently assigned to the device or user is fully rebuilt on each refresh.
-----------------------------------------------------------------------------------------------
select b.zuid, b.displayname, count(act.id) from zAction act,
zBundle b,
zactionsetobject ao,
zactionset aset
where ao.zuid = b.zuid
and aset.actionsetobject = ao.zuid
and act.actionset = aset.id
group by b.zuid, b.displayname
order by count(act.id) desc;