summaryrefslogtreecommitdiffstats
path: root/remoting
diff options
context:
space:
mode:
Diffstat (limited to 'remoting')
-rw-r--r--remoting/host/installer/mac/Chrome Remote Desktop.packproj778
-rw-r--r--remoting/host/installer/mac/Chromoting.packproj676
-rw-r--r--remoting/host/installer/mac/LaunchAgents/org.chromium.chromoting.plist27
-rw-r--r--remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.json0
-rwxr-xr-xremoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh25
-rwxr-xr-xremoting/host/installer/mac/Scripts/keystone_install.sh7
-rwxr-xr-xremoting/host/installer/mac/Scripts/remoting_postflight.sh45
-rwxr-xr-xremoting/host/installer/mac/Scripts/uninstall.sh43
-rwxr-xr-xremoting/host/installer/mac/build.sh54
-rwxr-xr-xremoting/host/installer/mac/tools/ksregister.sh16
-rwxr-xr-xremoting/host/installer/mac/tools/ksunregister.sh11
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.h20
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.m225
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Info.plist34
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Prefix.pch7
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/InfoPlist.strings2
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/MainMenu.xib898
-rw-r--r--remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/main.m14
18 files changed, 2882 insertions, 0 deletions
diff --git a/remoting/host/installer/mac/Chrome Remote Desktop.packproj b/remoting/host/installer/mac/Chrome Remote Desktop.packproj
new file mode 100644
index 0000000..ff0dc91
--- /dev/null
+++ b/remoting/host/installer/mac/Chrome Remote Desktop.packproj
@@ -0,0 +1,778 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Hierarchy</key>
+ <dict>
+ <key>Attributes</key>
+ <dict>
+ <key>Components</key>
+ <array>
+ <dict>
+ <key>Attributes</key>
+ <dict>
+ <key>Documents</key>
+ <dict>
+ <key>Background Image</key>
+ <dict>
+ <key>IFPkgFlagBackgroundAlignment</key>
+ <integer>4</integer>
+ <key>IFPkgFlagBackgroundScaling</key>
+ <integer>1</integer>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ <key>License</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>ReadMe</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>Welcome</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>Files</key>
+ <dict>
+ <key>Hierarchy</key>
+ <dict/>
+ <key>IFPkgFlagDefaultLocation</key>
+ <string>/</string>
+ <key>Imported Options</key>
+ <dict>
+ <key>IFPkgFlagInstalledSize</key>
+ <integer>4</integer>
+ </dict>
+ <key>Imported Package</key>
+ <true/>
+ <key>Package Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg</string>
+ <key>Package Path Type</key>
+ <integer>2</integer>
+ </dict>
+ <key>Plugins</key>
+ <dict>
+ <key>PluginsList</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Introduction</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>ReadMe</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>License</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Target</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>PackageSelection</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Install</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>FinishUp</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ <key>Scripts</key>
+ <dict>
+ <key>Additional Resources</key>
+ <dict>
+ <key>English</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/English.lproj/InstallationCheck.strings</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ </array>
+ <key>International</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/IFRequirement.strings</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/install.py</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/InstallationCheck</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/Keystone.tbz</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ </array>
+ </dict>
+ <key>Installation Scripts</key>
+ <dict>
+ <key>IFInstallationScriptsPostflight</key>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/postflight</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <key>IFInstallationScriptsPostinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPostupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreflight</key>
+ <dict>
+ <key>Path</key>
+ <string>Keystone/GoogleSoftwareUpdate.pkg/Contents/Resources/preflight</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <key>IFInstallationScriptsPreinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>Requirements</key>
+ <array/>
+ </dict>
+ <key>Settings</key>
+ <dict>
+ <key>Description</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>IFPkgDescriptionDeleteWarning</key>
+ <string></string>
+ <key>IFPkgDescriptionDescription</key>
+ <string></string>
+ <key>IFPkgDescriptionTitle</key>
+ <string>Google Software Update</string>
+ <key>IFPkgDescriptionVersion</key>
+ <string>Google Software Update 1.0.9.2865, © 2005-2010 Google Inc.</string>
+ </dict>
+ </dict>
+ <key>Display Information</key>
+ <dict>
+ <key>CFBundleGetInfoString</key>
+ <string>Google Software Update 1.0.9.2865, © 2005-2010 Google Inc.</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIconFile Path Type</key>
+ <integer>1</integer>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.pkg.Keystone</string>
+ <key>CFBundleName</key>
+ <string>GoogleSoftwareUpdate</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0.9</string>
+ </dict>
+ <key>Options</key>
+ <dict>
+ <key>IFPkgFlagAllowBackRev</key>
+ <true/>
+ <key>IFPkgFlagAuthorizationAction</key>
+ <integer>2</integer>
+ <key>IFPkgFlagFollowLinks</key>
+ <false/>
+ <key>IFPkgFlagIsRequired</key>
+ <false/>
+ <key>IFPkgFlagOverwritePermissions</key>
+ <false/>
+ <key>IFPkgFlagRelocatable</key>
+ <false/>
+ <key>IFPkgFlagRestartAction</key>
+ <integer>0</integer>
+ <key>IFPkgFlagRootVolumeOnly</key>
+ <true/>
+ <key>IFPkgFlagUpdateInstalledLanguages</key>
+ <false/>
+ </dict>
+ <key>Version</key>
+ <dict>
+ <key>IFMajorVersion</key>
+ <integer>1</integer>
+ <key>IFMinorVersion</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>IFPkgFlagPackageSelection</key>
+ <integer>1</integer>
+ <key>Name</key>
+ <string>GoogleSoftwareUpdate</string>
+ <key>Status</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Attributes</key>
+ <dict>
+ <key>Documents</key>
+ <dict>
+ <key>Background Image</key>
+ <dict>
+ <key>IFPkgFlagBackgroundAlignment</key>
+ <integer>4</integer>
+ <key>IFPkgFlagBackgroundScaling</key>
+ <integer>1</integer>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ <key>License</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>ReadMe</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>Welcome</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>Files</key>
+ <dict>
+ <key>Hierarchy</key>
+ <dict/>
+ <key>IFPkgFlagDefaultLocation</key>
+ <string>/</string>
+ <key>Imported Options</key>
+ <dict>
+ <key>IFPkgFlagInstalledSize</key>
+ <integer>19572</integer>
+ </dict>
+ <key>Imported Package</key>
+ <true/>
+ <key>Package Path</key>
+ <string>build/Chromoting.pkg</string>
+ <key>Package Path Type</key>
+ <integer>2</integer>
+ </dict>
+ <key>Plugins</key>
+ <dict>
+ <key>PluginsList</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Introduction</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>ReadMe</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>License</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Target</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>PackageSelection</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Install</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>FinishUp</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ <key>Scripts</key>
+ <dict>
+ <key>Additional Resources</key>
+ <dict>
+ <key>International</key>
+ <array/>
+ </dict>
+ <key>Installation Scripts</key>
+ <dict>
+ <key>IFInstallationScriptsPostflight</key>
+ <dict>
+ <key>Path</key>
+ <string>build/Chromoting.pkg/Contents/Resources/postflight</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <key>IFInstallationScriptsPostinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPostupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreflight</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>Requirements</key>
+ <array/>
+ </dict>
+ <key>Settings</key>
+ <dict>
+ <key>Description</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>IFPkgDescriptionDeleteWarning</key>
+ <string></string>
+ <key>IFPkgDescriptionDescription</key>
+ <string></string>
+ <key>IFPkgDescriptionTitle</key>
+ <string>Chromoting</string>
+ <key>IFPkgDescriptionVersion</key>
+ <string>0.2</string>
+ </dict>
+ </dict>
+ <key>Display Information</key>
+ <dict>
+ <key>CFBundleGetInfoString</key>
+ <string>Chromoting 0.2 Copyright © 2012 The Chromium Authors.</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIconFile Path Type</key>
+ <integer>1</integer>
+ <key>CFBundleIdentifier</key>
+ <string>org.chromium.pkg.Chromoting</string>
+ <key>CFBundleName</key>
+ <string>Chromoting</string>
+ <key>CFBundleShortVersionString</key>
+ <string>0.2</string>
+ </dict>
+ <key>Options</key>
+ <dict>
+ <key>IFPkgFlagAllowBackRev</key>
+ <false/>
+ <key>IFPkgFlagAuthorizationAction</key>
+ <integer>1</integer>
+ <key>IFPkgFlagFollowLinks</key>
+ <false/>
+ <key>IFPkgFlagIsRequired</key>
+ <false/>
+ <key>IFPkgFlagOverwritePermissions</key>
+ <false/>
+ <key>IFPkgFlagRelocatable</key>
+ <false/>
+ <key>IFPkgFlagRestartAction</key>
+ <integer>0</integer>
+ <key>IFPkgFlagRootVolumeOnly</key>
+ <true/>
+ <key>IFPkgFlagUpdateInstalledLanguages</key>
+ <false/>
+ </dict>
+ <key>Version</key>
+ <dict>
+ <key>IFMajorVersion</key>
+ <integer>0</integer>
+ <key>IFMinorVersion</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>IFPkgFlagPackageSelection</key>
+ <integer>1</integer>
+ <key>Name</key>
+ <string>Chromoting</string>
+ <key>Status</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ </dict>
+ </array>
+ <key>Documents</key>
+ <dict>
+ <key>Background Image</key>
+ <dict>
+ <key>IFPkgFlagBackgroundAlignment</key>
+ <integer>4</integer>
+ <key>IFPkgFlagBackgroundScaling</key>
+ <integer>1</integer>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ <key>License</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>ReadMe</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>Welcome</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>Plugins</key>
+ <dict>
+ <key>PluginsList</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Introduction</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>ReadMe</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>License</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Target</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>PackageSelection</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Install</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>FinishUp</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ <key>Scripts</key>
+ <dict>
+ <key>Additional Resources</key>
+ <dict>
+ <key>International</key>
+ <array/>
+ </dict>
+ <key>Installation Scripts</key>
+ <dict>
+ <key>IFInstallationScriptsPostflight</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPostinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPostupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreflight</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>Requirements</key>
+ <array/>
+ </dict>
+ <key>Settings</key>
+ <dict>
+ <key>Description</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>IFPkgDescriptionDeleteWarning</key>
+ <string></string>
+ <key>IFPkgDescriptionDescription</key>
+ <string></string>
+ <key>IFPkgDescriptionTitle</key>
+ <string>Chrome Remote Desktop</string>
+ <key>IFPkgDescriptionVersion</key>
+ <string>1.4.4</string>
+ </dict>
+ </dict>
+ <key>Display Information</key>
+ <dict>
+ <key>CFBundleGetInfoString</key>
+ <string>Chrome Remote Desktop 1.4.4</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIconFile Path Type</key>
+ <integer>1</integer>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.pkg.Chrome Remote Desktop</string>
+ <key>CFBundleName</key>
+ <string>Chrome Remote Desktop</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.4.4</string>
+ </dict>
+ <key>Version</key>
+ <dict>
+ <key>IFMajorVersion</key>
+ <integer>1</integer>
+ <key>IFMinorVersion</key>
+ <integer>4</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>IFPkgFlagComponentDirectory</key>
+ <string>.</string>
+ <key>IFPkgFlagPackageSelection</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Chrome Remote Desktop</string>
+ <key>Status</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <key>Name</key>
+ <string>Project</string>
+ <key>Settings</key>
+ <dict>
+ <key>10.1 Compatibility</key>
+ <true/>
+ <key>Build Path</key>
+ <string>build</string>
+ <key>Build Path Type</key>
+ <integer>2</integer>
+ <key>Comment</key>
+ <string></string>
+ <key>Remove .DS_Store</key>
+ <true/>
+ <key>Remove .pbdevelopment</key>
+ <true/>
+ </dict>
+</dict>
+</plist>
diff --git a/remoting/host/installer/mac/Chromoting.packproj b/remoting/host/installer/mac/Chromoting.packproj
new file mode 100644
index 0000000..d35ce06
--- /dev/null
+++ b/remoting/host/installer/mac/Chromoting.packproj
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Hierarchy</key>
+ <dict>
+ <key>Attributes</key>
+ <dict>
+ <key>Documents</key>
+ <dict>
+ <key>Background Image</key>
+ <dict>
+ <key>IFPkgFlagBackgroundAlignment</key>
+ <integer>4</integer>
+ <key>IFPkgFlagBackgroundScaling</key>
+ <integer>1</integer>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ <key>License</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>ReadMe</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>Welcome</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>Mode</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>Files</key>
+ <dict>
+ <key>Compress</key>
+ <true/>
+ <key>Hierarchy</key>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Utilities</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Applications</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Application Support</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Documentation</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Filesystems</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Frameworks</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Internet Plug-Ins</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string>LaunchAgents/org.chromium.chromoting.plist</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Privileges</key>
+ <integer>420</integer>
+ <key>Type</key>
+ <integer>3</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>LaunchAgents</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>2</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>PreferencePanes</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Preferences</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Printers</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>PrivilegedHelperTools/org.chromium.chromoting.json</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Privileges</key>
+ <integer>420</integer>
+ <key>Type</key>
+ <integer>3</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>PrivilegedHelperTools/org.chromium.chromoting.me2me.sh</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Privileges</key>
+ <integer>493</integer>
+ <key>Type</key>
+ <integer>3</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>PrivilegedHelperTools/org.chromium.chromoting.me2me_host</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Privileges</key>
+ <integer>493</integer>
+ <key>Type</key>
+ <integer>3</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>PrivilegedHelperTools</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>2</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>QuickTime</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Scripts</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>509</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>Library</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>1021</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array>
+ <dict>
+ <key>Children</key>
+ <array/>
+ <key>GID</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string>Extensions</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>493</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string>Library</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>493</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>0</integer>
+ <key>Path</key>
+ <string>System</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>493</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GID</key>
+ <integer>80</integer>
+ <key>Path</key>
+ <string>/</string>
+ <key>Path Type</key>
+ <integer>1</integer>
+ <key>Privileges</key>
+ <integer>1021</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ <key>UID</key>
+ <integer>0</integer>
+ </dict>
+ <key>IFPkgFlagDefaultLocation</key>
+ <string>/</string>
+ <key>Imported Package</key>
+ <false/>
+ <key>Package Path</key>
+ <string></string>
+ <key>Split Forks</key>
+ <true/>
+ </dict>
+ <key>Plugins</key>
+ <dict>
+ <key>PluginsList</key>
+ <array>
+ <dict>
+ <key>Path</key>
+ <string>Introduction</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>ReadMe</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>License</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Target</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>PackageSelection</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>Install</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Path</key>
+ <string>FinishUp</string>
+ <key>Type</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ <key>Scripts</key>
+ <dict>
+ <key>Additional Resources</key>
+ <dict>
+ <key>International</key>
+ <array/>
+ </dict>
+ <key>Installation Scripts</key>
+ <dict>
+ <key>IFInstallationScriptsPostflight</key>
+ <dict>
+ <key>Path</key>
+ <string>Scripts/remoting_postflight.sh</string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <true/>
+ </dict>
+ <key>IFInstallationScriptsPostinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPostupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreflight</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Path Type</key>
+ <integer>2</integer>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreinstall</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ <key>IFInstallationScriptsPreupgrade</key>
+ <dict>
+ <key>Path</key>
+ <string></string>
+ <key>Status</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>Requirements</key>
+ <array>
+ <dict>
+ <key>AlertDialog</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>MessageKey</key>
+ <string></string>
+ <key>TitleKey</key>
+ <string></string>
+ </dict>
+ </dict>
+ <key>LabelKey</key>
+ <string>OS &gt;= 10.6</string>
+ <key>Level</key>
+ <integer>0</integer>
+ <key>SpecArgument</key>
+ <string>sysv</string>
+ <key>SpecTag</key>
+ <integer>2</integer>
+ <key>SpecType</key>
+ <string>gestalt</string>
+ <key>Status</key>
+ <true/>
+ <key>TestObject</key>
+ <string>4192</string>
+ <key>TestOperator</key>
+ <string>&gt;=</string>
+ </dict>
+ </array>
+ </dict>
+ <key>Settings</key>
+ <dict>
+ <key>Description</key>
+ <dict>
+ <key>International</key>
+ <dict>
+ <key>IFPkgDescriptionDeleteWarning</key>
+ <string></string>
+ <key>IFPkgDescriptionDescription</key>
+ <string></string>
+ <key>IFPkgDescriptionTitle</key>
+ <string>Chromoting</string>
+ <key>IFPkgDescriptionVersion</key>
+ <string>0.2</string>
+ </dict>
+ </dict>
+ <key>Display Information</key>
+ <dict>
+ <key>CFBundleGetInfoString</key>
+ <string>Chromoting 0.2 Copyright © 2012 The Chromium Authors.</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIconFile Path Type</key>
+ <integer>1</integer>
+ <key>CFBundleIdentifier</key>
+ <string>org.chromium.pkg.Chromoting</string>
+ <key>CFBundleName</key>
+ <string>Chromoting</string>
+ <key>CFBundleShortVersionString</key>
+ <string>0.2</string>
+ </dict>
+ <key>Options</key>
+ <dict>
+ <key>IFPkgFlagAllowBackRev</key>
+ <false/>
+ <key>IFPkgFlagAuthorizationAction</key>
+ <integer>1</integer>
+ <key>IFPkgFlagFollowLinks</key>
+ <false/>
+ <key>IFPkgFlagIsRequired</key>
+ <false/>
+ <key>IFPkgFlagOverwritePermissions</key>
+ <false/>
+ <key>IFPkgFlagRelocatable</key>
+ <false/>
+ <key>IFPkgFlagRestartAction</key>
+ <integer>0</integer>
+ <key>IFPkgFlagRootVolumeOnly</key>
+ <true/>
+ <key>IFPkgFlagUpdateInstalledLanguages</key>
+ <false/>
+ </dict>
+ <key>Version</key>
+ <dict>
+ <key>IFMajorVersion</key>
+ <integer>0</integer>
+ <key>IFMinorVersion</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ </dict>
+ <key>IFPkgFlagPackageSelection</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Chromoting</string>
+ <key>Status</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <integer>1</integer>
+ </dict>
+ <key>Name</key>
+ <string>Project</string>
+ <key>Settings</key>
+ <dict>
+ <key>10.1 Compatibility</key>
+ <false/>
+ <key>Build Path</key>
+ <string>build</string>
+ <key>Build Path Type</key>
+ <integer>2</integer>
+ <key>Comment</key>
+ <string></string>
+ <key>Remove .DS_Store</key>
+ <true/>
+ <key>Remove .pbdevelopment</key>
+ <true/>
+ <key>Remove CVS</key>
+ <true/>
+ </dict>
+</dict>
+</plist>
diff --git a/remoting/host/installer/mac/LaunchAgents/org.chromium.chromoting.plist b/remoting/host/installer/mac/LaunchAgents/org.chromium.chromoting.plist
new file mode 100644
index 0000000..5e74439
--- /dev/null
+++ b/remoting/host/installer/mac/LaunchAgents/org.chromium.chromoting.plist
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.chromium.chromoting</string>
+ <key>LimitLoadToSessionType</key>
+ <array>
+ <string>Aqua</string>
+ <string>LoginWindow</string>
+ </array>
+ <key>KeepAlive</key>
+ <dict>
+ <key>PathState</key>
+ <dict>
+ <key>/Library/PrivilegedHelperTools/org.chromium.chromoting.me2me_enabled</key>
+ <true/>
+ </dict>
+ </dict>
+ <key>Disabled</key>
+ <false/>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/Library/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh</string>
+ </array>
+</dict>
+</plist>
diff --git a/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.json b/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.json
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.json
diff --git a/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh b/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh
new file mode 100755
index 0000000..eb7029c
--- /dev/null
+++ b/remoting/host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+NAME=org.chromium.chromoting
+CONFIG_DIR=/Library/PrivilegedHelperTools
+HOST_EXE=$CONFIG_DIR/$NAME.me2me_host
+ENABLED_FILE=$CONFIG_DIR/$NAME.me2me_enabled
+
+if [ "$1" = "--disable" ]; then
+ # This script is executed from base::mac::ExecuteWithPrivilegesAndWait(),
+ # which requires the child process to write its PID to stdout before
+ # anythine else. See base/mac/authorization_util.h for details.
+ echo $$
+ rm -f "$ENABLED_FILE"
+elif [ "$1" = "--enable" ]; then
+ echo $$
+ touch "$ENABLED_FILE"
+else
+ exec "$HOST_EXE" \
+ --auth-config="$CONFIG_DIR/$NAME.json" \
+ --host-config="$CONFIG_DIR/$NAME.json"
+fi
diff --git a/remoting/host/installer/mac/Scripts/keystone_install.sh b/remoting/host/installer/mac/Scripts/keystone_install.sh
new file mode 100755
index 0000000..2ef3b4b
--- /dev/null
+++ b/remoting/host/installer/mac/Scripts/keystone_install.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+/usr/sbin/installer -pkg "$1/Chrome Remote Desktop.mpkg" -target /
diff --git a/remoting/host/installer/mac/Scripts/remoting_postflight.sh b/remoting/host/installer/mac/Scripts/remoting_postflight.sh
new file mode 100755
index 0000000..0b30ed2
--- /dev/null
+++ b/remoting/host/installer/mac/Scripts/remoting_postflight.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+HELPERTOOLS=/Library/PrivilegedHelperTools
+NAME=org.chromium.chromoting
+AUTH_FILE="$HELPERTOOLS/$NAME.json"
+PLIST=/Library/LaunchAgents/org.chromium.chromoting.plist
+
+KSADMIN=/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin
+KSUPDATE=https://tools.google.com/service/update2
+KSPID=com.google.chrome_remote_desktop
+KSPVERSION=0.5
+
+trap onexit ERR
+
+function onexit {
+ # Log an error but don't report an install failure if this script has errors.
+ logger An error occurred while launching the service
+ exit 0
+}
+
+# Update owner and permissions for auth file.
+chown $USER "$AUTH_FILE"
+chmod 600 "$AUTH_FILE"
+
+# Load the service.
+# The launchctl command we'd like to run:
+# launchctl load -w -S Aqua $PLIST
+# However, since we're installing as an admin, the launchctl command is run
+# as if it had a sudo prefix, which means it tries to load the service in
+# system rather than user space.
+# To launch the service in user space, we need to get the current user (using
+# ps and grepping for the loginwindow.app) and run the launchctl cmd as that
+# user (using launchctl bsexec).
+set `ps aux | grep loginwindow.app | grep -v grep`
+# At this point, $1=username and $2=userid
+if [[ -n $1 && -n $2 ]]; then
+ launchctl bsexec "$2" sudo -u "$1" launchctl load -w -S Aqua $PLIST
+fi
+
+# Register a ticket with Keystone so we're updated.
+$KSADMIN --register --productid $KSPID --version $KSPVERSION --xcpath $PLIST --url $KSUPDATE
diff --git a/remoting/host/installer/mac/Scripts/uninstall.sh b/remoting/host/installer/mac/Scripts/uninstall.sh
new file mode 100755
index 0000000..b2bf00e
--- /dev/null
+++ b/remoting/host/installer/mac/Scripts/uninstall.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# TODO(garykac): Replace this with a proper double-clickable uninstaller app.
+NAME=org.chromium.chromoting
+LAUNCHAGENTS=/Library/LaunchAgents
+HELPERTOOLS=/Library/PrivilegedHelperTools
+PLIST="$LAUNCHAGENTS/$NAME.plist"
+
+# Stop service if currently running.
+# TODO(garykac): Trap errors and replace sleep with a check for when the
+# service is stopped.
+launchctl stop $NAME
+launchctl unload -w -S Aqua $PLIST
+sleep 1
+
+# Cleanup files from old versions of installer.
+sudo rm -f "$LAUNCHAGENTS/com.google.chrome_remote_desktop.plist"
+sudo rm -f "$HELPERTOOLS/remoting_me2me_host"
+sudo rm -f "$HELPERTOOLS/me2me.sh"
+sudo rm -f "$HELPERTOOLS/com.google.chrome_remote_desktop.me2me_host"
+sudo rm -f "$HELPERTOOLS/com.google.chrome_remote_desktop.me2me.sh"
+sudo rm -f ~/.ChromotingConfig.json
+sudo rm -f "$HELPERTOOLS/auth.json"
+sudo rm -f "$HELPERTOOLS/host.json"
+sudo rm -f "$HELPERTOOLS/me2me_enabled"
+sudo rm -f "$HELPERTOOLS/com.google.chrome_remote_desktop.me2me_enabled"
+sudo rm -rf /ChromotingSetup
+
+# Cleanup installed files.
+sudo rm -f $PLIST
+sudo rm -f "$HELPERTOOLS/$NAME.me2me_host"
+sudo rm -f "$HELPERTOOLS/$NAME.me2me.sh"
+sudo rm -f "$HELPERTOOLS/$NAME.json"
+sudo rm -f "$HELPERTOOLS/$NAME.me2me_enabled"
+
+# Unregister our ticket from Keystone.
+KSADMIN=/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin
+KSPID=com.google.chrome_remote_desktop
+$KSADMIN --delete --productid $KSPID
diff --git a/remoting/host/installer/mac/build.sh b/remoting/host/installer/mac/build.sh
new file mode 100755
index 0000000..7754891
--- /dev/null
+++ b/remoting/host/installer/mac/build.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script builds the Chrome Remote Desktop installer and packages
+# it into a .dmg. It requires that Iceberg be installed (for 'freeze').
+
+# The Chrome Remote Desktop installer consists of 2 components:
+# * Chromoting installer package
+# * Keystone (Google auto-update)
+
+PKG_DIR=build
+PKGPROJ_CHROMOTING='Chromoting.packproj'
+PKGPROJ_CHROME_REMOTE_DESKTOP='Chrome Remote Desktop.packproj'
+PKG_CHROMOTING='Chromoting.pkg'
+PKG_CRD='Chrome Remote Desktop.mpkg'
+
+DMG_TEMP=dmg_tmp
+DMG_NAME='Chrome Remote Desktop'
+DMG_DIR="$DMG_TEMP/$DMG_NAME"
+DMG_FILENAME='Chrome Remote Desktop.dmg'
+
+# Clean out previous build.
+rm -rf "$PKG_DIR"
+rm -f "$DMG_FILENAME"
+rm -rf "$DMG_TEMP" # In case previous build failed.
+
+# Copy latest release build.
+# TODO(garykac): Get from proper location.
+HOST_BINARY=PrivilegedHelperTools/org.chromium.chromoting.me2me_host
+cp ../../../../out/Release/remoting_me2me_host ./$HOST_BINARY
+
+# Build the .pkg.
+echo "Building .pkg..."
+freeze "$PKGPROJ_CHROMOTING"
+freeze "$PKGPROJ_CHROME_REMOTE_DESKTOP"
+
+# Create the .dmg.
+echo "Building .dmg..."
+mkdir -p "$DMG_DIR/$PKG_CRD"
+# Copy .mpkg installer.
+ditto "$PKG_DIR/$PKG_CRD" "$DMG_DIR/$PKG_CRD"
+# Copy uninstall script.
+# TODO(garykac): This should be made into a proper App and installed in the
+# Applications directory.
+cp Scripts/uninstall.sh "$DMG_DIR"
+# Copy .keystone_install script to top level of .dmg.
+# Keystone calls this script during upgrades.
+cp Scripts/keystone_install.sh "$DMG_DIR/.keystone_install"
+# Build the .dmg from the directory.
+hdiutil create "$DMG_FILENAME" -srcfolder "$DMG_DIR" -ov -quiet
+rm -rf "$DMG_TEMP"
diff --git a/remoting/host/installer/mac/tools/ksregister.sh b/remoting/host/installer/mac/tools/ksregister.sh
new file mode 100755
index 0000000..92f29a8
--- /dev/null
+++ b/remoting/host/installer/mac/tools/ksregister.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+NAME=org.chromium.chromoting
+PLIST=/Library/LaunchAgents/$NAME.plist
+
+KSADMIN=/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin
+KSUPDATE=https://tools.google.com/service/update2
+KSPID=com.google.chrome_remote_desktop
+KSPVERSION=0.5
+
+# Register a ticket with Keystone so we're updated.
+$KSADMIN --register --productid $KSPID --version $KSPVERSION --xcpath $PLIST --url $KSUPDATE
diff --git a/remoting/host/installer/mac/tools/ksunregister.sh b/remoting/host/installer/mac/tools/ksunregister.sh
new file mode 100755
index 0000000..3d1735d
--- /dev/null
+++ b/remoting/host/installer/mac/tools/ksunregister.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+KSADMIN=/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin
+KSPID=com.google.chrome_remote_desktop
+
+# Unregister our ticket from Keystone.
+$KSADMIN --delete --productid $KSPID
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.h b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.h
new file mode 100644
index 0000000..74f69ce
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.h
@@ -0,0 +1,20 @@
+//
+// CRDAppDelegate.h
+// Chrome Remote Desktop Uninstaller
+//
+// Created by Gary Kacmarcik on 4/3/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface CRDAppDelegate : NSObject <NSApplicationDelegate>
+
+@property (assign) IBOutlet NSWindow *window;
+
+- (IBAction)uninstall:(NSButton *)sender;
+- (IBAction)cancel:(id)sender;
+
+- (IBAction)handleMenuClose:(NSMenuItem *)sender;
+
+@end
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.m b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.m
new file mode 100644
index 0000000..f601fad
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/CRDAppDelegate.m
@@ -0,0 +1,225 @@
+//
+// CRDAppDelegate.m
+// Chrome Remote Desktop Uninstaller
+//
+// Created by Gary Kacmarcik on 4/3/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import "CRDAppDelegate.h"
+
+@implementation CRDAppDelegate
+
+@synthesize window = _window;
+
+NSString * const kServiceName = @"org.chromium.chromoting";
+NSString * const kLaunchAgents = @"/Library/LaunchAgents";
+NSString * const kHelperTools = @"/Library/PrivilegedHelperTools";
+
+// Keystone
+NSString * const kKeystoneAdmin = @"/Library/Google/GoogleSoftwareUpdate/"
+ "GoogleSoftwareUpdate.bundle/Contents/MacOS/"
+ "ksadmin";
+NSString * const kKeystonePID = @"com.google.chrome_remote_desktop";
+
+
+- (void)dealloc {
+ [super dealloc];
+}
+
+- (void)applicationDidFinishLaunching: (NSNotification *)aNotification {
+}
+
+- (void)logOutput: (FILE *) pipe {
+ char readBuffer[128];
+ for (;;) {
+ long bytesRead = read(fileno(pipe), readBuffer, sizeof(readBuffer)-1);
+ if (bytesRead < 1)
+ break;
+ readBuffer[bytesRead] = '\0';
+ NSLog(@"%s", readBuffer);
+ }
+}
+
+- (void)messageBox: (char *)message {
+ CFStringRef message_ref = CFStringCreateWithCString(NULL, message,
+ (int)strlen(message));
+ CFOptionFlags result;
+ CFUserNotificationDisplayAlert(0, kCFUserNotificationNoteAlertLevel,
+ NULL, NULL, NULL,
+ CFSTR("Chrome Remote Desktop Uninstaller"),
+ message_ref, NULL, NULL, NULL, &result);
+ CFRelease(message_ref);
+}
+
+- (void)sudoDelete:(const char* const)filename
+ usingAuth:(AuthorizationRef)authRef {
+ OSStatus status;
+
+ if ([[NSFileManager defaultManager] fileExistsAtPath:@"/bin/rm"]) {
+ NSLog(@"rm exists");
+ } else {
+ NSLog(@"rm doesn't exist");
+ }
+ if (![[NSFileManager defaultManager]
+ fileExistsAtPath:[NSString stringWithFormat:@"%s", filename]]) {
+ return;
+ }
+
+ NSLog(@"Executing (as Admin) rm -f %s", filename);
+ char* tool = "/bin/rm";
+ char* const args[] = {"-f", (char* const)filename, NULL};
+ FILE* pipe = NULL;
+ status = AuthorizationExecuteWithPrivileges(authRef, tool,
+ kAuthorizationFlagDefaults, args,
+ &pipe);
+
+ // The status 0x8115ffff is endian-swapped 0xffff1581
+ // (=errAuthorizationToolExecuteFailure)
+ if (status == 0xffff1581 || status == 0x8115ffff) {
+ NSLog(@"Error errAuthorizationToolExecuteFailure");
+ } else if (status != errAuthorizationSuccess) {
+ NSLog(@"Error while executing rm. Status=%x", status);
+ } else {
+ [self logOutput: pipe];
+ }
+
+ if ([[NSFileManager defaultManager] fileExistsAtPath:@"/bin/rm"]) {
+ NSLog(@"rm exists");
+ } else {
+ NSLog(@"rm doesn't exist");
+ }
+}
+
+-(void)runCommand:(NSString*)cmd
+ withArguments:(NSArray*)args {
+ NSTask* task;
+ NSPipe* output = [NSPipe pipe];
+ NSString* result;
+
+ NSLog(@"Executing: %@ %@", cmd, [args componentsJoinedByString:@" "]);
+
+ @try {
+ task = [[NSTask alloc] init];
+ [task setLaunchPath: cmd];
+ [task setArguments: args];
+ [task setStandardInput: [NSPipe pipe]];
+ [task setStandardOutput: output];
+ [task launch];
+
+ NSData* data = [[output fileHandleForReading] readDataToEndOfFile];
+
+ [task waitUntilExit];
+
+ if ([task terminationStatus] != 0) {
+ NSLog(@"Command terminated status=%d reason=%ld",
+ [task terminationStatus], [task terminationReason]);
+ }
+
+ result = [[NSString alloc] initWithData:data
+ encoding:NSUTF8StringEncoding];
+ if ([result length] != 0) {
+ NSLog(@"%@", result);
+ }
+ }
+ @catch (NSException *exception) {
+ NSLog(@"Exception %@ %@", [exception name], [exception reason]);
+ }
+
+ [task release];
+ [result release];
+}
+
+-(void)shutdownService {
+ NSArray* argsStop = [NSArray arrayWithObjects: @"stop",
+ kServiceName, nil];
+ [self runCommand: @"/bin/launchctl" withArguments: argsStop];
+
+ NSString* plist = [NSString stringWithFormat:@"%@/%@.plist", kLaunchAgents,
+ kServiceName];
+ if ([[NSFileManager defaultManager] fileExistsAtPath:plist]) {
+ NSArray* argsUnload = [NSArray arrayWithObjects: @"unload",
+ @"-w", @"-S", @"Aqua", plist, nil];
+ [self runCommand: @"/bin/launchctl" withArguments: argsUnload];
+ }
+}
+
+-(void)keystoneUnregister {
+ NSArray* args = [NSArray arrayWithObjects: @"--delete",
+ @"--productid", kKeystonePID, nil];
+ [self runCommand: kKeystoneAdmin withArguments: args];
+}
+
+- (IBAction)uninstall: (NSButton *)sender {
+ AuthorizationRef authRef;
+ OSStatus status;
+ bool success = false;
+
+ NSLog(@"Chrome Remote Desktop uninstall starting.");
+
+ @try {
+ status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
+ kAuthorizationFlagDefaults, &authRef);
+ if (status != errAuthorizationSuccess)
+ NSLog(@"Error during AuthorizationCreate status=%d", status);
+
+ AuthorizationItem right = {kAuthorizationRightExecute, 0, NULL, 0};
+ AuthorizationRights rights = {1, &right};
+ AuthorizationFlags flags = kAuthorizationFlagDefaults |
+ kAuthorizationFlagInteractionAllowed |
+ kAuthorizationFlagPreAuthorize |
+ kAuthorizationFlagExtendRights;
+ status = AuthorizationCopyRights(authRef, &rights, NULL, flags, NULL);
+ if (status != errAuthorizationSuccess)
+ NSLog(@"Error during AuthorizationCopyRights status=%d", status);
+
+ NSString* host_enabled = [NSString stringWithFormat:@"%@/%@.me2me_enabled",
+ kHelperTools, kServiceName];
+ [self sudoDelete: [host_enabled UTF8String] usingAuth: authRef];
+
+ [self shutdownService];
+
+ NSString* plist = [NSString stringWithFormat:@"%@/%@.plist",
+ kLaunchAgents, kServiceName];
+ [self sudoDelete: [plist UTF8String] usingAuth: authRef];
+
+ NSString* host_binary = [NSString stringWithFormat:@"%@/%@.me2me_host",
+ kHelperTools, kServiceName];
+ [self sudoDelete: [host_binary UTF8String] usingAuth: authRef];
+
+ NSString* host_script = [NSString stringWithFormat:@"%@/%@.me2me.sh",
+ kHelperTools, kServiceName];
+ [self sudoDelete: [host_script UTF8String] usingAuth: authRef];
+
+ NSString* auth = [NSString stringWithFormat:@"%@/%@.json",
+ kHelperTools, kServiceName];
+ [self sudoDelete: [auth UTF8String] usingAuth: authRef];
+
+ [self keystoneUnregister];
+
+ success = true;
+ }
+ @catch (NSException *exception) {
+ NSLog(@"Exception %@ %@", [exception name], [exception reason]);
+ }
+
+ @finally {
+ status = AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ }
+
+ NSLog(@"Chrome Remote Desktop uninstall complete.");
+ if (success)
+ [self messageBox:"Chrome Remote Desktop was successfully uninstalled."];
+
+ [NSApp terminate:self];
+}
+
+- (IBAction)cancel: (id)sender {
+ [NSApp terminate: self];
+}
+
+- (IBAction)handleMenuClose: (NSMenuItem *)sender {
+ [NSApp terminate: self];
+}
+
+@end
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Info.plist b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Info.plist
new file mode 100644
index 0000000..4644404
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Info.plist
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright © 2012 Google. All rights reserved.</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Prefix.pch b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Prefix.pch
new file mode 100644
index 0000000..6199ebf
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/Chrome Remote Desktop Uninstaller-Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'Chrome Remote Desktop Uninstaller' target in the 'Chrome Remote Desktop Uninstaller' project
+//
+
+#ifdef __OBJC__
+ #import <Cocoa/Cocoa.h>
+#endif
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/InfoPlist.strings b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000..477b28f
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/MainMenu.xib b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/MainMenu.xib
new file mode 100644
index 0000000..b6509f5
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/en.lproj/MainMenu.xib
@@ -0,0 +1,898 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10K549</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1938</string>
+ <string key="IBDocument.AppKitVersion">1038.36</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">1938</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>NSTextField</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
+ <string>NSMenu</string>
+ <string>NSMenuItem</string>
+ <string>NSTextFieldCell</string>
+ <string>NSButtonCell</string>
+ <string>NSButton</string>
+ <string>NSCustomObject</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Chrome Remote Desktop Host Uninstaller</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">Chrome Remote Desktop Host Uninstaller</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About Chrome Remote Desktop Uninstaller</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <array class="NSMutableArray" key="NSMenuItems"/>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Chrome Remote Desktop Uninstaller</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit Chrome Remote Desktop Uninstaller</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">Chrome Remote Desktop Uninstaller Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </array>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSWindowTemplate" id="972006081">
+ <int key="NSWindowStyleMask">3</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{335, 863}, {459, 112}}</string>
+ <int key="NSWTFlags">1954022400</int>
+ <string key="NSWindowTitle">Chrome Remote Desktop Uninstaller</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <object class="NSView" key="NSWindowView" id="439893737">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTextField" id="723400866">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{23, 75}, {379, 17}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSNextKeyView" ref="765168480"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="414645780">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">This will completely remove Chrome Remote Desktop Host.</string>
+ <object class="NSFont" key="NSSupport" id="720184760">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="723400866"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSButton" id="538240118">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{350, 12}, {95, 32}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="866114168">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Uninstall</string>
+ <reference key="NSSupport" ref="720184760"/>
+ <reference key="NSControlView" ref="538240118"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="765168480">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{268, 12}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSNextKeyView" ref="538240118"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="124666294">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="720184760"/>
+ <reference key="NSControlView" ref="765168480"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </array>
+ <string key="NSFrameSize">{459, 112}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSNextKeyView" ref="723400866"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{1e+13, 1e+13}</string>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">CRDAppDelegate</string>
+ </object>
+ <object class="NSCustomObject" id="755631768">
+ <string key="NSClassName">NSFontManager</string>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array class="NSMutableArray" key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">495</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="972006081"/>
+ </object>
+ <int key="connectionID">532</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uninstall:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="538240118"/>
+ </object>
+ <int key="connectionID">541</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="765168480"/>
+ </object>
+ <int key="connectionID">542</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">handleMenuClose:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">544</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="448692316"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="110575045"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="789758025"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="720053764"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ </array>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1058277027"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ </array>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </array>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="752062318"/>
+ </array>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">371</int>
+ <reference key="object" ref="972006081"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="439893737"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">372</int>
+ <reference key="object" ref="439893737"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="723400866"/>
+ <reference ref="538240118"/>
+ <reference ref="765168480"/>
+ </array>
+ <reference key="parent" ref="972006081"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">420</int>
+ <reference key="object" ref="755631768"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="992780483"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="105068016"/>
+ </array>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">494</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">533</int>
+ <reference key="object" ref="723400866"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="414645780"/>
+ </array>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">534</int>
+ <reference key="object" ref="414645780"/>
+ <reference key="parent" ref="723400866"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">537</int>
+ <reference key="object" ref="538240118"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="866114168"/>
+ </array>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">538</int>
+ <reference key="object" ref="866114168"/>
+ <reference key="parent" ref="538240118"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">539</int>
+ <reference key="object" ref="765168480"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="124666294"/>
+ </array>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">540</int>
+ <reference key="object" ref="124666294"/>
+ <reference key="parent" ref="765168480"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="197.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="199.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="205.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="206.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="207.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="215.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="217.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES" key="371.IBNSWindowAutoPositionCentersHorizontal"/>
+ <boolean value="YES" key="371.IBNSWindowAutoPositionCentersVertical"/>
+ <string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="371.IBWindowTemplateEditedContentRect">{{380, 496}, {480, 360}}</string>
+ <integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/>
+ <string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="491.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="492.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="533.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="534.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="538.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="539.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="540.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">544</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <string key="NSMenuCheckmark">{9, 8}</string>
+ <string key="NSMenuMixedState">{7, 2}</string>
+ </dictionary>
+ </data>
+</archive>
diff --git a/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/main.m b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/main.m
new file mode 100644
index 0000000..7cde29d
--- /dev/null
+++ b/remoting/host/installer/mac/uninstaller/Chrome Remote Desktop Uninstaller/main.m
@@ -0,0 +1,14 @@
+//
+// main.m
+// Chrome Remote Desktop Uninstaller
+//
+// Created by Gary Kacmarcik on 4/3/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+ return NSApplicationMain(argc, (const char **)argv);
+}