Determining ChronoSync Version by Serverside Files
Taylor Hempy updated April 21, 2010 at 7:55 PM
Concepts
We can infer whether a user has installed ChronoSync by checking for the presence of Application Support files and infer the version they have installed by identifying directories unique to a particular version.
ID Tests
We can determine whether or not ChronoSync is installed by testing for the existence of the /Home/[username]/Library/Application\ Support/ChronoSync directory.
ChronoSync 4 introduces a new directory in the user's /Library/Application\ Support/ChronoSync folder called "Templates". By testing for this directory's existence on the server we can determine if ChronoSync 4 is installed.
Note: These tests assume the user has successfully synchronized after upgrading.
The Script
This code will perform the two tests above. If the Templates directory exists, it will report "4 [username]". If only the ChronoSync Application Support directory exists, it will report "3 [username]". If neither exist, it will report "X [username]". It will then sort the results so that all the versions are together.
Note: This script can be deployed over ARD.
#!/bin/sh # Create a file in /tmp that has only the heaer " ChronoSync Version Report". Leading space is included so that when we run sort it will appear at top. echo " ChronoSync Version Report" > /tmp/CSyncVersion # Get a listing of only directories in /Home on the server and for each line (each directory) run the following commands. ls -d /Home/* | sed 's/\/Home\///g' | while read line do # If the user has the Templates directory, we can infer the they have version 4. Print this information to the report. if [ -e /Home/$line/Library/Application\ Support/ChronoSync/Templates ]; then echo "4 $line" >> /tmp/CSyncVersion else # If the user didn't have version 4, check to see if they have the ChronoSync application support directory and if they do, report that they have version 3 installed. if [ -e /Home/$line/Library/Application\ Support/ChronoSync/ ]; then echo "3 $line" >> /tmp/CSyncVersion else # If they didn't have the ChronoSync application support directory either, report that ChronoSync isn't installed (indicated with an X). echo "X $line" >> /tmp/CSyncVersion fi fi done # Get the contents of the report, sort them alphabetically, and display the results. sort /tmp/CSyncVersion # Remove the temporary report file. rm /tmp/CSyncVersion