The install items list is generated by the VMware AirWatch Admin Assistant for some types of installation items(.dmg), but not for Apple packages (.pkg or .mpkg). You can generate (or modify) this list and is the most flexible mechanism for determining installation status.

The installs list can contain any number of items such as applications, preference panes, frameworks, or other bundle-style items, info.plists, simple directories, or files. You can use any combination of items to help Munki determine if an item is installed or not.

An example of an auto-generated "installs" list for Firefox 6.0

<key>installs</key>
                  
                  
                  
                  
    
<array>
<dict>
<key>CFBundleIdentifier</key>
<string>org.mozilla.firefox</string>
<key>CFBundleName</key>
<string>Firefox</string>
<key>CFBundleShortVersionString</key>
<string>6.0</string>
<key>minosversion</key>
<string>10.5</string>
<key>path</key>
<string>Applications/Firefox.app</string>
<key>type</key>
<string>application</string>
</dict>
</array>

To determine if Firefox 6 is installed or not, Munki checks for an application with a CFBundleIdentifier of org.mozilla.firefox and if found, verifies that its version (CFBundleShortVersionString) is at least 6.0. If Munki cannot find the application or its version is lower than 6.0, it considers Firefox-6.0 as not installed. Installs lists can contain multiple items. If any item is missing or has an older version, the item is considered not installed. You can manually generate items to add to an installs list using the following makepkginfo,

                  
                  
    
/Library/Application\ Support/AirWatch/Data/Munki/bin/makepkginfo -f /Library/Interne
t\ Plug-Ins/Flash\ Player.plugin
                  
                  
    
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prope
rtyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>installs</key>
<array>
<dict>
<key>CFBundleShortVersionString</key>
<string>10.3.183.5</string>
<key>path</key>
<string>/Library/Internet Plug-Ins/Flash Player.plugin</string>
<key>type</key>
<string>bundle</string>
</dict>
</array>
</dict>
</plist>

Copy and paste the entire installs key and value, or copy just the dict value and add it to an existing installs list inside your pkginfo file. Munki checks for the existence of /Library/Internet Plug-Ins/Flash Player.plugin and if found, check its version. If the version is lower than 10.3.183.5, the item would be considered not installed. You can generate installs items for any filesystem item, but Munki only knows how to determine the versions for bundle-style items that contain an Info.plist or version.plist with version information.

For other filesystem items, Munki can only determine existence (in the case of a non-bundle directory), or can calculate a checksum (for files). For files with checksums, the test fails (and therefore the item will be considered not installed) if the checksum for the file on disk does not match the checksum in the pkginfo.

                  
                  
    
<key>installs</key>
<array>
<dict>
<key>md5checksum</key>
<string>087fe4805b63412ec3ed559b0cd9be71</string>
<key>path</key>
<string>/private/var/db/dslocal/nodes/MCX/computergroups/loginwindow.plist</s
tring>
<key>type</key>
<string>file</string>
</dict>
</array>

If you want Munki to only check for the existence of a file and do not care about its contents, remove the generated md5checksum information in the installs item info. Make sure the provided path is intact.

                  
                  
    
<key>installs</key>
<array>
<dict>
<key>path</key>
<string>/private/var/db/dslocal/nodes/MCX/computergroups/loginwindow.plist
</string>
<key>type</key>
<string>file</string>
</dict>
</array>