Merge branch 'Munki3'

This commit is contained in:
Greg Neagle
2017-06-09 08:29:01 -07:00
177 changed files with 9317 additions and 8547 deletions
+2 -1
View File
@@ -1,7 +1,8 @@
sudo: no
language: python
python:
- "2.7"
install:
- pip install flake8 pep8
script:
- python tests/travisci.py
- git diff HEAD^ | flake8 --diff --ignore=E501
@@ -1,70 +0,0 @@
optional_item: installed
needs_update
will_be_installed
uninstallable
will_be_removed
licensed_seats_available
(virtual: SelfServeManifest subscription state)
(virtual: in InstallInfo.plist's managed_updates)
--------------------
installed + needs_update + will_be_installed: status: update-will-be-installed.
(implies item in managed_installs)
possible actions: remove from managed_installs, which cancels the update (status: update-available)
remove from managed_installs, add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
installed + needs_update + managed_update: status: installed (update will be installed, but can't be opted-out of)
possible actions: if currently in managed_installs:
remove from managed_installs, which makes no real difference (status: installed)
remove from managed_installs, add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
if not currently in managed_installs:
add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
These really collapse to:
remove from managed_installs (if needed), add to managed_uninstalls, which will mark the item for removal
(status: will-be-removed)
installed + not uninstallable: status: installed-not-removable
possible actions: remove from managed_installs. No future updates will be applied. (status: installed-not-removable)
remove from managed_installs, add to managed_uninstalls: not useful, since item can't be removed
Collapses to:
remove from managed_installs. No future updates will be applied. (or no useful option!)
installed + will-be-removed: status: will-be-removed
(implies item in managed_uninstalls)
possible actions: remove from managed_uninstalls. item won't be uninstalled, but also won't get future updates. (status: installed)
remove from managed_uninstalls; add to managed_installs. item won't be uninstalled, will get future updates. (status: installed)
Probably could/should collapse to the second option.
installed (only!): status: installed
possible actions: if currently in managed_installs:
remove from managed_installs. Item will not get future updates. (status: installed)
remove from managed_installs, add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
if not currently in managed_installs:
add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
Probably could/should collapse to:
remove from managed_installs, add to managed_uninstalls, which will mark the item for removal (status: will-be-removed)
Additionally (!)
If choosing to install is an available option, we should probably check available disk space before allowing the status to flip to will-be-installed or update-will-be-installed
---------
(not installed) + (not licensed_seats_available) (status: no-licenses-available)
No available actions.
(not installed) + (note)
(implies there is something preventing download and install)
TO-DO
(not installed) + will_be_installed: status: will-be-installed
(implies item in managed_installs)
possible actions: remove from managed_installs. item will not be installed (status: not-installed)
remove from managed_installs, add to managed_uninstalls. Pointless, as items are
automatically removed from managed_uninstalls once they are removed.
Collapses to: remove from managed_installs. item will not be installed (status: not-installed)
(not-installed (only)): status: not-installed
possible actions: add to managed_installs. Item will be installed (status: will-be-installed)
@@ -9,8 +9,10 @@
/* Begin PBXBuildFile section */
650B29A419B69FC800A5E946 /* MSCToolbar.py in Resources */ = {isa = PBXBuildFile; fileRef = 650B29A319B69FC800A5E946 /* MSCToolbar.py */; };
C00A4C57185FCEC9004EB3B7 /* FoundationPlist.py in Resources */ = {isa = PBXBuildFile; fileRef = C00A4C56185FCEC9004EB3B7 /* FoundationPlist.py */; };
C01B396D1EEA6A9000DFBA3B /* libpython2.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C01B396C1EEA6A9000DFBA3B /* libpython2.7.dylib */; };
C01FBD311EA64CD600AE97EE /* passwdutil.py in Resources */ = {isa = PBXBuildFile; fileRef = C01FBD301EA64CD600AE97EE /* passwdutil.py */; };
C02C98891911B81D00425167 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C02C98871911B81D00425167 /* Localizable.strings */; };
C035274E18A9C582004A5AE4 /* libpython2.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C035274D18A9C582004A5AE4 /* libpython2.6.dylib */; };
C042CA151EAD86DE006CC681 /* MSCPasswordAlertController.py in Resources */ = {isa = PBXBuildFile; fileRef = C042CA141EAD86DE006CC681 /* MSCPasswordAlertController.py */; };
C0453A211CCEF7B60002D396 /* MSCLogWindowController.py in Resources */ = {isa = PBXBuildFile; fileRef = C0453A201CCEF7B60002D396 /* MSCLogWindowController.py */; };
C049C9951AEC77DD00251D45 /* updatesTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = C049C9941AEC77DD00251D45 /* updatesTemplate.png */; };
C05C3CEF188391F200095E65 /* munki.py in Resources */ = {isa = PBXBuildFile; fileRef = C05C3CEE188391F200095E65 /* munki.py */; };
@@ -33,6 +35,7 @@
C0B3744718708A0300B6204E /* WebResources in Resources */ = {isa = PBXBuildFile; fileRef = C0B3744518708A0300B6204E /* WebResources */; };
C0B9E8B219AB8E5500DB7247 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C09004FC16CDD84E00BE34CE /* InfoPlist.strings */; };
C0B9E8B619AF7E9E00DB7247 /* Managed Software Center 10_6.icns in Resources */ = {isa = PBXBuildFile; fileRef = C0B9E8B519AF7E9E00DB7247 /* Managed Software Center 10_6.icns */; };
C0D6D0691EA55B470099C126 /* authrestart.py in Resources */ = {isa = PBXBuildFile; fileRef = C0D6D0681EA55B470099C126 /* authrestart.py */; };
C0E098BC1857A3C80045DEEB /* msclib.py in Resources */ = {isa = PBXBuildFile; fileRef = C0E098BB1857A3C80045DEEB /* msclib.py */; };
C0EF96BA1ADDB9B2002C02FF /* MSCDockTilePlugIn.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EF96B91ADDB9B2002C02FF /* MSCDockTilePlugIn.m */; };
C0EF96BD1ADDBD88002C02FF /* MSCDockTilePlugin.docktileplugin in Copy Files */ = {isa = PBXBuildFile; fileRef = C0EF96B11ADDB90B002C02FF /* MSCDockTilePlugin.docktileplugin */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -66,10 +69,12 @@
/* Begin PBXFileReference section */
650B29A319B69FC800A5E946 /* MSCToolbar.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = MSCToolbar.py; sourceTree = "<group>"; };
C00A4C56185FCEC9004EB3B7 /* FoundationPlist.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = FoundationPlist.py; sourceTree = "<group>"; };
C01B396C1EEA6A9000DFBA3B /* libpython2.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython2.7.dylib; path = ../../../../../../../../../System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/libpython2.7.dylib; sourceTree = SDKROOT; };
C01E26911B4DADDC005ACFFB /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/MainMenu.strings; sourceTree = "<group>"; };
C01E26921B4DADE4005ACFFB /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
C01E26931B4DADEB005ACFFB /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C01E26941B4DADF3005ACFFB /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01FBD301EA64CD600AE97EE /* passwdutil.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = passwdutil.py; sourceTree = "<group>"; };
C02C98731911B55600425167 /* Managed Software Center-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Managed Software Center-Info.plist"; sourceTree = "<group>"; };
C02C98751911B63E00425167 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/MainMenu.xib; sourceTree = "<group>"; };
C02C98761911B63E00425167 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -96,7 +101,7 @@
C02C988F1911B82E00425167 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = "<group>"; };
C02C98901911B83000425167 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
C02C98911911B83100425167 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
C035274D18A9C582004A5AE4 /* libpython2.6.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; name = libpython2.6.dylib; path = ../../../../../../System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib; sourceTree = SOURCE_ROOT; };
C042CA141EAD86DE006CC681 /* MSCPasswordAlertController.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = MSCPasswordAlertController.py; path = "Managed Software Center/MSCPasswordAlertController.py"; sourceTree = "<group>"; };
C0453A201CCEF7B60002D396 /* MSCLogWindowController.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = MSCLogWindowController.py; sourceTree = "<group>"; };
C046261519FFF8C000AF1E48 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/MainMenu.strings; sourceTree = "<group>"; };
C046261619FFF8CC00AF1E48 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -144,6 +149,7 @@
C0B9E8AE19AA55DC00DB7247 /* en_CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_CA; path = en_CA.lproj/MainMenu.strings; sourceTree = "<group>"; };
C0B9E8AF19AA55DC00DB7247 /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_GB; path = en_GB.lproj/MainMenu.strings; sourceTree = "<group>"; };
C0B9E8B519AF7E9E00DB7247 /* Managed Software Center 10_6.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "Managed Software Center 10_6.icns"; sourceTree = "<group>"; };
C0D6D0681EA55B470099C126 /* authrestart.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = authrestart.py; sourceTree = "<group>"; };
C0E098BB1857A3C80045DEEB /* msclib.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = msclib.py; sourceTree = "<group>"; };
C0EF96B11ADDB90B002C02FF /* MSCDockTilePlugin.docktileplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MSCDockTilePlugin.docktileplugin; sourceTree = BUILT_PRODUCTS_DIR; };
C0EF96B41ADDB90B002C02FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -167,7 +173,7 @@
buildActionMask = 2147483647;
files = (
C09004F216CDD84E00BE34CE /* Cocoa.framework in Frameworks */,
C035274E18A9C582004A5AE4 /* libpython2.6.dylib in Frameworks */,
C01B396D1EEA6A9000DFBA3B /* libpython2.7.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -184,11 +190,12 @@
C09004E216CDD84E00BE34CE = {
isa = PBXGroup;
children = (
C042CA141EAD86DE006CC681 /* MSCPasswordAlertController.py */,
C09004F916CDD84E00BE34CE /* Managed Software Center */,
C0EF96B21ADDB90B002C02FF /* MSCDockTilePlugin */,
C09004F016CDD84E00BE34CE /* Frameworks */,
C09004EE16CDD84E00BE34CE /* Products */,
C035274D18A9C582004A5AE4 /* libpython2.6.dylib */,
C01B396C1EEA6A9000DFBA3B /* libpython2.7.dylib */,
);
sourceTree = "<group>";
};
@@ -240,6 +247,8 @@
C0AAA21D18BAD8710012663F /* msclog.py */,
C0AAA21F18BC67F90012663F /* mschtml.py */,
C079D9C018BD435200BAD62E /* AlertController.py */,
C0D6D0681EA55B470099C126 /* authrestart.py */,
C01FBD301EA64CD600AE97EE /* passwdutil.py */,
650B29A319B69FC800A5E946 /* MSCToolbar.py */,
C0453A201CCEF7B60002D396 /* MSCLogWindowController.py */,
);
@@ -420,11 +429,14 @@
C049C9951AEC77DD00251D45 /* updatesTemplate.png in Resources */,
C090050616CDD84E00BE34CE /* main.py in Resources */,
C0E098BC1857A3C80045DEEB /* msclib.py in Resources */,
C042CA151EAD86DE006CC681 /* MSCPasswordAlertController.py in Resources */,
C0AAA21E18BAD8710012663F /* msclog.py in Resources */,
C0AAA22018BC67F90012663F /* mschtml.py in Resources */,
C05C3CEF188391F200095E65 /* munki.py in Resources */,
C01FBD311EA64CD600AE97EE /* passwdutil.py in Resources */,
C079D9C118BD435200BAD62E /* AlertController.py in Resources */,
C00A4C57185FCEC9004EB3B7 /* FoundationPlist.py in Resources */,
C0D6D0691EA55B470099C126 /* authrestart.py in Resources */,
C0453A211CCEF7B60002D396 /* MSCLogWindowController.py in Resources */,
C090050816CDD84E00BE34CE /* MSCAppDelegate.py in Resources */,
C0AE865A186D32AF00C87AE7 /* MSCBadgedTemplateImage.py in Resources */,
@@ -464,7 +476,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "cd Managed\\ Software\\ Center\n\n# generate localizable strings\n./Localize.py --to en --genstrings \"./*.{h,m,py}\" --utf8\n\n# localize nibs\n./Localize.py --from en --to nl --utf8\n./Localize.py --from en --to fr --utf8\n./Localize.py --from en --to de --utf8\n./Localize.py --from en --to es --utf8\n./Localize.py --from en --to da --utf8\n./Localize.py --from en --to fi --utf8\n./Localize.py --from en --to it --utf8\n./Localize.py --from en --to ja --utf8\n./Localize.py --from en --to nb --utf8\n./Localize.py --from en --to ru --utf8\n./Localize.py --from en --to sv --utf8\n./Localize.py --from en --to en_CA --utf8\n./Localize.py --from en --to en_GB --utf8\n./Localize.py --from en --to en_AU --utf8\n";
shellScript = "cd Managed\\ Software\\ Center\n\n# generate localizable strings\n./Localize.py --to en --genstrings \"./*.{h,m,py}\" --utf8\n\n# localize nibs\n./Localize.py --from en --to da --utf8\n./Localize.py --from en --to de --utf8\n./Localize.py --from en --to en_CA --utf8\n./Localize.py --from en --to en_GB --utf8\n./Localize.py --from en --to en_AU --utf8\n./Localize.py --from en --to es --utf8\n./Localize.py --from en --to fi --utf8\n./Localize.py --from en --to fr --utf8\n./Localize.py --from en --to it --utf8\n./Localize.py --from en --to ja --utf8\n./Localize.py --from en --to nb --utf8\n./Localize.py --from en --to nl --utf8\n./Localize.py --from en --to ru --utf8\n./Localize.py --from en --to sv --utf8";
};
C09CE1DA18BEA59E00B9724A /* Embed version info */ = {
isa = PBXShellScriptBuildPhase;
@@ -624,7 +636,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
@@ -646,7 +658,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
SDKROOT = macosx;
};
name = Release;
@@ -666,8 +678,9 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
);
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.googlecode.munki.ManagedSoftwareCenter;
PRODUCT_NAME = "Managed Software Center";
@@ -691,8 +704,9 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
);
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.googlecode.munki.ManagedSoftwareCenter;
PRODUCT_NAME = "Managed Software Center";
SDKROOT = macosx;
@@ -7,11 +7,12 @@
#
import os
#import sys
import authrestart
import munki
import msclog
import MunkiItems
from MSCPasswordAlertController import MSCPasswordAlertController
from objc import nil
from AppKit import *
@@ -29,6 +30,19 @@ class AlertController(NSObject):
'''Store our parent window'''
self.window = the_window
def handlePossibleAuthRestart(self):
'''Ask for and store a password for auth restart if needed/possible'''
username = NSUserName()
if (MunkiItems.updatesRequireRestart() and
authrestart.verify_user(username) and
not authrestart.verify_recovery_key_present()):
# FV is on and user is in list of FV users, so they can
# authrestart, and we do not have a stored FV recovery
# key/password. So we should prompt the user for a password
# we can use for fdesetup authrestart
NSApp.delegate(
).passwordAlertController.promptForPasswordForAuthRestart()
def forcedLogoutWarning(self, notification_obj):
'''Display a forced logout warning'''
NSApp.activateIgnoringOtherApps_(True)
@@ -105,6 +119,7 @@ class AlertController(NSObject):
btn_pressed = self._force_warning_btns.get(returncode)
if btn_pressed == self._force_warning_logout_btn:
msclog.log("user", "install_with_logout")
self.handlePossibleAuthRestart()
result = munki.logoutAndUpdate()
elif btn_pressed == self._force_warning_ok_btn:
msclog.log("user", "dismissed_forced_logout_warning")
@@ -193,6 +208,7 @@ class AlertController(NSObject):
msclog.log("user", "alerted_on_battery_power_and_cancelled")
return
msclog.log("user", "install_with_logout")
self.handlePossibleAuthRestart()
result = munki.logoutAndUpdate()
if result:
self.installSessionErrorAlert()
@@ -350,7 +366,8 @@ class AlertController(NSObject):
alert = NSAlert.alertWithMessageText_defaultButton_alternateButton_otherButton_informativeTextWithFormat_(
item['name'],
NSLocalizedString(u"Continue", u"Continue button text"),
NSLocalizedString(u"Cancel", u"Cancel button title/short action text"),
NSLocalizedString(
u"Cancel", u"Cancel button title/short action text"),
nil,
u"")
if on_battery_power:
@@ -38,6 +38,7 @@ class MSCAppDelegate(NSObject):
mainWindowController = IBOutlet()
statusController = IBOutlet()
passwordAlertController = IBOutlet()
def applicationShouldTerminate_(self, sender):
'''Called if user selects 'Quit' from menu'''
@@ -45,6 +46,7 @@ class MSCAppDelegate(NSObject):
def applicationDidFinishLaunching_(self, sender):
'''NSApplication delegate method called at launch'''
NSLog("Finished launching")
# setup client logging
msclog.setup_logging()
@@ -144,7 +146,7 @@ class MSCAppDelegate(NSObject):
'''User clicked on a Notification Center alert'''
user_info = notification.userInfo()
if user_info.get('action') == 'open_url':
url = user_info.get('value')
url = user_info.get('value', 'munki://updates')
msclog.log("MSU", "Got user notification to open %s" % url)
self.openMunkiURL(url)
center.removeDeliveredNotification_(notification)
@@ -18,6 +18,9 @@
# limitations under the License.
# builtin super doesn't work with Cocoa classes in recent PyObjC releases.
from objc import super
from Foundation import *
from AppKit import *
@@ -23,13 +23,12 @@ import munki
import mschtml
import msclib
import msclog
#import FoundationPlist
import MSCBadgedTemplateImage
import MunkiItems
from urlparse import urlparse
from AlertController import AlertController
from MSCBadgedTemplateImage import MSCBadgedTemplateImage
from objc import YES, NO, IBAction, IBOutlet, nil
from PyObjCTools import AppHelper
@@ -66,7 +65,8 @@ class MSCMainWindowController(NSWindowController):
myItemsToolbarButton = IBOutlet()
updatesToolbarButton = IBOutlet()
webView = IBOutlet()
navigationBtn = IBOutlet()
navigateBackBtn = IBOutlet()
navigateForwardBtn = IBOutlet()
progressSpinner = IBOutlet()
searchField = IBOutlet()
updateButtonCell = IBOutlet()
@@ -151,17 +151,6 @@ class MSCMainWindowController(NSWindowController):
self.updateNow()
self.loadUpdatesPage_(self)
### no longer needed now that we are using a "real" NSToolbar ###
#def window_willPositionSheet_usingRect_(self, window, sheet, rect):
# '''NSWindowDelegate method that allows us to modify the
# position sheets appear attached to a window'''
# # move the anchor point of our sheets to below our toolbar
# # (or really, to the top of the web view)
# webViewRect = self.webView.frame()
# return NSMakeRect(webViewRect.origin.x,
# webViewRect.origin.y + webViewRect.size.height,
# webViewRect.size.width, 0)
def loadInitialView(self):
'''Called by app delegate from applicationDidFinishLaunching:'''
self.enableOrDisableSoftwareViewControls()
@@ -344,7 +333,6 @@ class MSCMainWindowController(NSWindowController):
'''Our window was deactivated, make sure controls enabled as needed'''
self.enableOrDisableToolbarButtons_(NO)
def configureFullScreenMenuItem(self):
'''check to see if NSWindow's toggleFullScreen: selector is implemented.
if so, unhide the menu items for going full screen'''
@@ -619,6 +607,10 @@ class MSCMainWindowController(NSWindowController):
NSURL.fileURLWithPath_(html_file),
NSURLRequestReloadIgnoringLocalCacheData, 10)
self.webView.mainFrame().loadRequest_(request)
if url_fragment == 'updates.html':
# clear all earlier update notifications
NSUserNotificationCenter.defaultUserNotificationCenter(
).removeAllDeliveredNotifications()
def setNoPageCache(self):
'''We disable the back/forward page cache because
@@ -709,9 +701,8 @@ class MSCMainWindowController(NSWindowController):
def webView_didFinishLoadForFrame_(self, view, frame):
'''Stop progress spinner and update state of back/forward buttons'''
self.progressSpinner.stopAnimation_(self)
self.navigationBtn.setEnabled_forSegment_(self.webView.canGoBack(), 0)
self.navigationBtn.setEnabled_forSegment_(
self.webView.canGoForward(), 1)
self.navigateBackBtn.setEnabled_(self.webView.canGoBack())
self.navigateForwardBtn.setEnabled_(self.webView.canGoForward())
def webView_didFailProvisionalLoadWithError_forFrame_(
self, view, error, frame):
@@ -769,6 +760,9 @@ class MSCMainWindowController(NSWindowController):
self.checkForUpdates()
else:
# must say "Update"
# we're on the Updates page, so users can see all the pending/
# outstanding updates
self._alertedUserToOutstandingUpdates = True
self.updateNow()
def showUpdateProgressSpinner(self):
@@ -1144,7 +1138,8 @@ class MSCMainWindowController(NSWindowController):
changes the category selected in the sidebar popup'''
all_categories_label = NSLocalizedString(
u"All Categories", u"AllCategoriesLabel")
if category == all_categories_label:
featured_label = NSLocalizedString(u"Featured", u"FeaturedLabel")
if category in [all_categories_label, featured_label]:
category = u'all'
self.load_page('category-%s.html' % category)
@@ -1180,15 +1175,15 @@ class MSCMainWindowController(NSWindowController):
u"%@", alertDetail)
result = alert.runModal()
@IBAction
def navigateBackBtnClicked_(self, sender):
'''Handle WebView back button'''
self.webView.goBack_(self)
@IBAction
def navigationBtnClicked_(self, sender):
'''Handle WebView forward/back buttons'''
segment = sender.selectedSegment()
if segment == 0:
self.webView.goBack_(self)
if segment == 1:
self.webView.goForward_(self)
def navigateForwardBtnClicked_(self, sender):
'''Handle WebView forward button'''
self.webView.goForward_(self)
@IBAction
def loadAllSoftwarePage_(self, sender):
@@ -0,0 +1,122 @@
# -*- coding: utf-8 -*-
#
# MSCPasswordAlertController.py
# Managed Software Center
#
# Created by Greg Neagle on 4/17/17.
# Copyright (c) 2017 The Munki Project. All rights reserved.
#
'''Controller for our custom alert that prompts for password'''
from objc import IBAction, IBOutlet, nil
from AppKit import *
from Foundation import *
from PyObjCTools import AppHelper
from Quartz import CAKeyframeAnimation, CGPathCreateMutable
from Quartz import CGPathAddLineToPoint, CGPathMoveToPoint
from Quartz import CGPathCloseSubpath
import authrestart
import msclog
import munki
import passwdutil
# Disable PyLint complaining about 'invalid' camelCase names
# pylint: disable=C0103
class MSCPasswordAlertController(NSObject):
'''An object that handles our password alert'''
# Cocoa UI binding properties
passwordView = IBOutlet()
passwordLabel = IBOutlet()
passwordField = IBOutlet()
def promptForPasswordForAuthRestart(self):
'''Set up and display our alert that prompts for password'''
# Set up all the fields and buttons with localized text
alert = NSAlert.alloc().init()
alert.addButtonWithTitle_(
NSLocalizedString(u"Allow", u"Allow button text"))
alert.addButtonWithTitle_(
NSLocalizedString(u"Deny", u"Deny button text"))
alert.setMessageText_(NSLocalizedString(
u"Managed Software Center wants to unlock the startup disk after "
"restarting to complete all pending updates.",
u"Password prompt title"))
alert.setInformativeText_(NSLocalizedString(
u"To allow this, enter your login password.",
u"Password explanation"))
alert.setAccessoryView_(self.passwordView)
self.passwordLabel.setStringValue_(NSLocalizedString(
u"Password:",u"Password label"))
self.passwordField.setStringValue_(u"")
# resize label to fit the text
self.passwordLabel.sizeToFit()
# resize the password field to use the rest of the available space
viewWidth = self.passwordView.frame().size.width
labelWidth = self.passwordLabel.frame().size.width
fieldFrame = self.passwordField.frame()
fieldFrame.origin.x = labelWidth + 8
fieldFrame.size.width = viewWidth - labelWidth - 8
self.passwordField.setFrame_(fieldFrame)
# add esc as a key equivilent for the Deny button
alert.buttons().objectAtIndex_(1).setKeyEquivalent_(chr(27))
# change the Allow button to call our password validation method
allowButton = alert.buttons().objectAtIndex_(0)
allowButton.setTarget_(self)
allowButton.setAction_(self.verifyPassword_)
# make sure our password field is ready to accept input
alert.window().setInitialFirstResponder_(self.passwordField)
# we can finally run the alert!
result = alert.runModal()
if result == NSAlertFirstButtonReturn:
# they clicked "Allow". We handled it in the verifyPassword method
msclog.log("user", "stored password for auth restart")
if result == NSAlertSecondButtonReturn:
# they clicked "Deny"
msclog.log("user", "denied password for auth restart")
def verifyPassword_(self, alert):
username = NSUserName()
password = self.passwordField.stringValue()
if passwdutil.verifyPassword(username, password):
# store password and end modal alert
authrestart.store_password(password)
code = NSAlertFirstButtonReturn
NSApplication.sharedApplication().stopModalWithCode_(code)
NSApplication.sharedApplication().endSheet_returnCode_(
alert, code)
alert.window().orderOut_(None)
else:
# wrong password, shake the alert window
self.shake(alert.window())
def shake(self, the_window):
'''Uses CoreAnimation to "shake" the alert window'''
# adapted from here:
# http://stackoverflow.com/questions/10517386/how-to-give-nswindow-a-shake-effect-as-saying-no-as-in-login-failure-window/23491643#23491643
numberOfShakes = 3
durationOfShake = 0.5
vigourOfShake = 0.05
frame = the_window.frame()
shakeAnimation = CAKeyframeAnimation.animation()
shakePath = CGPathCreateMutable()
CGPathMoveToPoint(shakePath, None, NSMinX(frame), NSMinY(frame))
for index in range(numberOfShakes):
CGPathAddLineToPoint(
shakePath, None,
NSMinX(frame) - frame.size.width * vigourOfShake, NSMinY(frame))
CGPathAddLineToPoint(
shakePath, None,
NSMinX(frame) + frame.size.width * vigourOfShake, NSMinY(frame))
CGPathCloseSubpath(shakePath)
shakeAnimation.setPath_(shakePath)
shakeAnimation.setDuration_(durationOfShake)
the_window.setAnimations_({'frameOrigin': shakeAnimation})
the_window.animator().setFrameOrigin_(frame.origin)
@@ -17,16 +17,14 @@
# limitations under the License.
from objc import YES, NO, IBAction, IBOutlet, nil
import os
import time
import munki
import msclog
import FoundationPlist
from objc import YES, IBOutlet, nil
from Foundation import *
from AppKit import *
from PyObjCTools import AppHelper
import munki
import msclog
debug = False
class MSCStatusController(NSObject):
@@ -37,7 +35,7 @@ class MSCStatusController(NSObject):
session_started = False
got_status_update = False
timer = None
_status_stopBtnDisabled = False
_status_stopBtnHidden = False
_status_message = u''
@@ -46,7 +44,7 @@ class MSCStatusController(NSObject):
_status_stopBtnState = 0
statusWindowController = IBOutlet()
def registerForNotifications(self):
'''Register for notification messages'''
notification_center = NSDistributedNotificationCenter.defaultCenter()
@@ -64,7 +62,7 @@ class MSCStatusController(NSObject):
# set self.receiving_notifications to False so our process monitoring
# thread will exit
self.receiving_notifications = False
def startMunkiStatusSession(self):
'''Initialize things for monitoring a managedsoftwareupdate session'''
self.initStatusSession()
@@ -75,7 +73,7 @@ class MSCStatusController(NSObject):
self.saw_process = False
self.timer = NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
5.0, self, self.checkProcess_, None, YES)
def checkProcess_(self, timer):
'''Monitors managedsoftwareupdate process for failure to start
or unexpected exit, so we're not waiting around forever if
@@ -83,7 +81,7 @@ class MSCStatusController(NSObject):
PYTHON_SCRIPT_NAME = u'managedsoftwareupdate'
NEVER_STARTED = -2
UNEXPECTEDLY_QUIT = -1
if self.session_started:
if self.got_status_update:
# we got a status update since we last checked; no need to
@@ -104,7 +102,7 @@ class MSCStatusController(NSObject):
self.sessionEnded_(UNEXPECTEDLY_QUIT)
else:
self.sessionEnded_(NEVER_STARTED)
def sessionStarted(self):
'''Accessor method'''
return self.session_started
@@ -117,7 +115,7 @@ class MSCStatusController(NSObject):
self.cleanUpStatusSession()
# tell the window controller the update session is done
self.statusWindowController.munkiStatusSessionEnded_(result)
def updateStatus_(self, notification):
'''Got update status notification from managedsoftwareupdate'''
msclog.debug_log('Got munkistatus update notification')
@@ -153,8 +151,7 @@ class MSCStatusController(NSObject):
msclog.debug_log('Received command: %s' % command)
if command == 'activate':
pass
#NSApp.activateIgnoringOtherApps_(YES) #? do we really want to do this?
#self.statusWindowController.window().orderFrontRegardless()
elif command == 'showRestartAlert':
if self.session_started:
self.sessionEnded_(0)
@@ -203,10 +200,12 @@ class MSCStatusController(NSObject):
progress.removeAttribute_('style')
else:
progress.setClassName_('')
progress.setAttribute__('style', 'width: %s%%' % percent)
progress.setAttribute__(
'style', 'width: %s%%' % percent)
def doRestartAlert(self):
'''Display a restart alert -- some item just installed or removed requires a restart'''
'''Display a restart alert -- some item just installed or removed
requires a restart'''
msclog.log("MSC", "restart_required")
self._status_restartAlertDismissed = 0
alert = NSAlert.alertWithMessageText_defaultButton_alternateButton_otherButton_informativeTextWithFormat_(
@@ -216,14 +215,15 @@ class MSCStatusController(NSObject):
nil,
u"%@", NSLocalizedString(
u"Software installed or removed requires a restart. You will "
"have a chance to save open documents.", u"Restart Required alert detail"))
"have a chance to save open documents.",
u"Restart Required alert detail"))
alert.beginSheetModalForWindow_modalDelegate_didEndSelector_contextInfo_(
self.statusWindowController.window(),
self, self.restartAlertDidEnd_returnCode_contextInfo_, nil)
@AppHelper.endSheetMethod
def restartAlertDidEnd_returnCode_contextInfo_(
self, alert, returncode, contextinfo):
self, alert, returncode, contextinfo):
'''Called when restartAlert ends'''
msclog.log("MSC", "restart_confirmed")
self._status_restartAlertDismissed = 1
@@ -274,7 +274,8 @@ class MSCStatusController(NSObject):
if document:
spinner = document.getElementById_('updates-progress-spinner')
if spinner: # we are displaying the updates status page
install_btn = document.getElementById_('install-all-button-text')
install_btn = document.getElementById_(
'install-all-button-text')
if install_btn:
btn_classes = install_btn.className().split(' ')
if not 'hidden' in btn_classes:
@@ -284,13 +285,14 @@ class MSCStatusController(NSObject):
def showStopButton(self):
'''Show the stop button'''
if self._status_stopBtnState:
return
return
self._status_stopBtnHidden = False
document = self.statusWindowController.webView.mainFrameDocument()
if document:
spinner = document.getElementById_('updates-progress-spinner')
if spinner: # we are displaying the updates status page
install_btn = document.getElementById_('install-all-button-text')
install_btn = document.getElementById_(
'install-all-button-text')
if install_btn:
btn_classes = install_btn.className().split(' ')
if 'hidden' in btn_classes:
@@ -306,7 +308,8 @@ class MSCStatusController(NSObject):
if document:
spinner = document.getElementById_('updates-progress-spinner')
if spinner: # we are displaying the updates status page
install_btn = document.getElementById_('install-all-button-text')
install_btn = document.getElementById_(
'install-all-button-text')
if install_btn:
btn_classes = install_btn.className().split(' ')
if 'disabled' in btn_classes:
@@ -322,7 +325,8 @@ class MSCStatusController(NSObject):
if document:
spinner = document.getElementById_('updates-progress-spinner')
if spinner: # we are displaying the updates status page
install_btn = document.getElementById_('install-all-button-text')
install_btn = document.getElementById_(
'install-all-button-text')
if install_btn:
btn_classes = install_btn.className().split(' ')
if not 'disabled' in btn_classes:
@@ -335,45 +339,61 @@ class MSCStatusController(NSObject):
def more_localized_strings():
'''Some strings that are sent to us from managedsoftwareupdate. By putting them here,
the localize.py script will add them to the en.lproj/Localizable.strings file so localizers
will be able to discover them'''
foo = NSLocalizedString(u"Starting...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Finishing...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Performing preflight tasks...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Performing postflight tasks...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Checking for available updates...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Checking for additional changes...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Software installed or removed requires a restart.",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Waiting for network...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Done.", "managedsoftwareupdate message")
'''Some strings that are sent to us from managedsoftwareupdate. By putting
them here, the localize.py script will add them to the
en.lproj/Localizable.strings file so localizers will be able to discover
them'''
_ = NSLocalizedString(u"Starting...", "managedsoftwareupdate message")
_ = NSLocalizedString(u"Finishing...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Performing preflight tasks...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Performing postflight tasks...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Checking for available updates...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Checking for additional changes...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Software installed or removed requires a restart.",
"managedsoftwareupdate message")
_ = NSLocalizedString(
u"Waiting for network...", "managedsoftwareupdate message")
_ = NSLocalizedString(u"Done.", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Retrieving list of software for this machine...",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Verifying package integrity...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Retrieving list of software for this machine...",
"managedsoftwareupdate message")
_ = NSLocalizedString(
u"Verifying package integrity...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"The software was successfully installed.",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"The software was successfully installed.",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Gathering information on installed packages",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Determining which filesystem items to remove",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Removing receipt info", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Nothing to remove.", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Package removal complete.", "managedsoftwareupdate message")
_ = NSLocalizedString(u"Gathering information on installed packages",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"Determining which filesystem items to remove",
"managedsoftwareupdate message")
_ = NSLocalizedString(
u"Removing receipt info", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Nothing to remove.", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Package removal complete.", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Checking for available Apple Software Updates...",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Checking Apple Software Update catalog...",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Downloading available Apple Software Updates...",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Installing available Apple Software Updates...",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"Checking for available Apple Software Updates...",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"Checking Apple Software Update catalog...",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"Downloading available Apple Software Updates...",
"managedsoftwareupdate message")
_ = NSLocalizedString(u"Installing available Apple Software Updates...",
"managedsoftwareupdate message")
foo = NSLocalizedString(u"Running Adobe Setup", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Running Adobe Uninstall", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Starting Adobe installer...", "managedsoftwareupdate message")
foo = NSLocalizedString(u"Running Adobe Patch Installer", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Running Adobe Setup", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Running Adobe Uninstall", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Starting Adobe installer...", "managedsoftwareupdate message")
_ = NSLocalizedString(
u"Running Adobe Patch Installer", "managedsoftwareupdate message")
@@ -6,8 +6,12 @@
# Created by Daniel Hazelbaker on 9/2/14.
#
# builtin super doesn't work with Cocoa classes in recent PyObjC releases.
from objc import super
from objc import YES, NO, nil
from Foundation import *
from AppKit import *
class MSCToolbarButton(NSButton):
@@ -26,13 +30,14 @@ class MSCToolbarButton(NSButton):
return view
class MSCToolbarButtonCell(NSButtonCell):
'''Subclass of NSButtonCell which properly works inside of a toolbar item
to allow clicking on the label.'''
def _hitTestForTrackMouseEvent_inRect_ofView_(self, theEvent, rect, controlView):
aPoint = controlView.superview().convertPoint_fromView_(theEvent.locationInWindow(), nil)
def _hitTestForTrackMouseEvent_inRect_ofView_(self, theEvent,
rect, controlView):
aPoint = controlView.superview().convertPoint_fromView_(
theEvent.locationInWindow(), nil)
hit = NO
for v in controlView.superview().subviews():
@@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>4.3</string>
<string>4.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -77,6 +77,10 @@ def getOptionalInstallItems():
_cache['optional_install_items'] = [
OptionalItem(item)
for item in getInstallInfo().get('optional_installs', [])]
featured_items = getInstallInfo().get('featured_items', [])
for item in _cache['optional_install_items']:
if item['name'] in featured_items:
item['featured'] = True
return _cache['optional_install_items']
@@ -184,21 +188,10 @@ def updatesContainNonUserSelectedItems():
def getEffectiveUpdateList():
'''Combine the updates Munki has found with any optional choices to
make the effective list of updates'''
managed_update_names = getInstallInfo().get('managed_updates', [])
self_service_installs = SelfService().installs()
self_service_uninstalls = SelfService().uninstalls()
# items in the update_list that are part of optional_items
# could have their installation state changed; so filter those out
optional_installs = getOptionalWillBeInstalledItems()
optional_removals = getOptionalWillBeRemovedItems()
optional_item_names = [item['name']
for item in optional_installs + optional_removals]
mandatory_updates = [item for item in getUpdateList()
if item['name'] not in optional_item_names]
return mandatory_updates + optional_installs + optional_removals
make the effective list of updates'''
# this was more complex in the past, but caused some edge case issues
# so we're going to simplify
return getUpdateList()
def getMyItemsList():
@@ -874,6 +867,8 @@ class OptionalItem(GenericItem):
if 'category' not in self:
self['category'] = NSLocalizedString(u"Uncategorized",
u"No Category name")
if 'featured' not in self:
self['featured'] = False
if self['developer']:
self['category_and_developer'] = u'%s - %s' % (
self['category'], self['developer'])
@@ -984,7 +979,7 @@ class OptionalItem(GenericItem):
warning_text = NSLocalizedString(
u"A removal attempt failed. "
"Removal will be attempted again.\n"
"If this situation continues, contact your systems"
"If this situation continues, contact your systems "
"administrator.",
u"Removal Error message")
start_text += ('<span class="warning">%s</span><br/><br/>'
@@ -0,0 +1,168 @@
# -*- coding: utf-8 -*-
#
# authrestart.py
# Managed Software Center
#
# Created by Greg Neagle on 4/17/17.
# Copyright (c) 2017 The Munki Project. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
authrestart.py
Created by Greg Neagle on 2017-04-15.
Routines for communicating with authrestartd.
Socket communications code adapted from autopkg's PkgCreator by Per Olofsson
"""
import os
import plistlib
import select
import socket
import sys
AUTHRESTARTD_SOCKET = "/var/run/authrestartd"
class AuthRestartClientError(Exception):
'''Exception to raise for errors in AuthRestartClient'''
pass
class AuthRestartClient(object):
'''Handles communication with authrestartd daemon'''
def connect(self):
'''Connect to authrestartd'''
try:
#pylint: disable=attribute-defined-outside-init
self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
#pylint: enable=attribute-defined-outside-init
self.socket.connect(AUTHRESTARTD_SOCKET)
except socket.error as err:
raise AuthRestartClientError(
"Couldn't connect to authrestartd: %s" % err.strerror)
def send_request(self, request):
'''Send a request to authrestartd'''
self.socket.send(plistlib.writePlistToString(request))
with os.fdopen(self.socket.fileno()) as fileref:
# use select so we don't hang indefinitely if authrestartd dies
ready = select.select([fileref], [], [], 2)
if ready[0]:
reply = fileref.read()
else:
reply = ''
if reply:
return reply.rstrip()
else:
return "ERROR:No reply"
def disconnect(self):
'''Disconnect from authrestartd'''
self.socket.close()
def process(self, request):
'''Send a request and return the result'''
try:
self.connect()
result = self.send_request(request)
finally:
self.disconnect()
return result
def fv_is_active(self):
'''Returns a boolean to indicate if FileVault is active'''
result = self.process({'task': 'verify_filevault'})
return result.startswith('OK')
def verify_user(self, username):
'''Returns True if username can unlock the FV volume'''
request = {'task': 'verify_user', 'username': username}
result = self.process(request)
return result.startswith('OK')
def verify_recovery_key_present(self):
'''Returns True if plist containing a FV recovery key is present'''
request = {'task': 'verify_recovery_key_present'}
result = self.process(request)
return result.startswith('OK')
def verify_can_attempt_auth_restart(self):
'''Returns True if we are ready to attempt an auth restart'''
request = {'task': 'verify_can_attempt_auth_restart'}
result = self.process(request)
return result.startswith('OK')
def store_password(self, password, username=None):
'''Stores a FV password with authrestartd'''
request = {'task': 'store_password', 'password': password}
if username:
request['username'] = username
result = self.process(request)
if not result.startswith('OK'):
raise AuthRestartClientError(result)
def restart(self):
'''Returns True if restart was successful'''
result = self.process({'task': 'restart'})
if not result.startswith('OK'):
raise AuthRestartClientError(result)
# Higher-level wrapper functions that swallow AuthRestartClientErrors
def fv_is_active():
'''Returns True if FileVault can be verified to be active,
False otherwise'''
try:
return AuthRestartClient().fv_is_active()
except AuthRestartClientError:
return False
def verify_user(username):
'''Returns True if user can be verified to be able to perform an
authrestart, False otherwise'''
try:
return AuthRestartClient().verify_user(username)
except AuthRestartClientError:
return False
def verify_recovery_key_present():
'''Returns True if we have a plist with a FileVault recovery key,
False otherwise'''
try:
return AuthRestartClient().verify_recovery_key_present()
except AuthRestartClientError:
return False
def verify_can_attempt_auth_restart():
'''Returns True if we have what we need to attempt an auth restart'''
try:
return AuthRestartClient().verify_can_attempt_auth_restart()
except AuthRestartClientError:
return False
def store_password(password, username=None):
'''Stores a password for later authrestart usage.
Returns boolean to indicate success/failure'''
try:
AuthRestartClient().store_password(password, username=username)
return True
except AuthRestartClientError:
return False
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Computeren skal genstartes efter opdatering. Vent et øjeblik da der kan være en kort forsinkelse ved log ind-vinduet. Log ud og opdater nu?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "En fejl i systemkonfigurationen forhindrer Managed Software Center i at fungere korrekt. Den rapporterede fejl er: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Flere ventende opdateringer";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Alle ventende opdateringer bliver installeret. Uarkiverede oplysninger vil gå tabt.\nDu kan undgå den tvungne log ud, hvis du selv vælger at logge ud nu.";
/* Allow button text */
"Allow" = "Tillad";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Forsøg på installering mislykkedes. Installering bliver forsøgt igen.\nHvis problemet består, skal du kontakte systemadministratoren.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Ikke tilgængelig";
/* Deny button text */
"Deny" = "Afvis";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Undersøger hvilke elementer, der skal fjernes";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Forfalder:";
/* FeaturedLabel */
"Featured" = "Udvalgte";
/* FeaturedItemsHeaderText */
"Featured items" = "Udvalgt software";
/* managedsoftwareupdate message */
"Finishing..." = "Afslutter...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center kan ikke kontakte opdateringsserveren.\nPrøv igen senere. Hvis problemet består, skal du kontakte systemadministratoren.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Center skal låse startdisken op efter genstart for at færdiggøre alle ventende opdateringer.";
/* Managed Update type */
"Managed Update" = "Administreret opdatering";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Fjernelse af software er gennemført.";
/* Password label */
"Password:" = "Adgangskode:";
/* Pending Updates alert title */
"Pending updates" = "Ventende opdateringer";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Problem med systemkonfigurationen";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Installation af software er gennemført.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Dette emne skal installeres senest %s";
/* Password explanation */
"To allow this, enter your login password." = "For at tillade dette, skal du skrive din log ind-adgangskode.";
/* No Items secondary text */
"Try again later." = "Prøv igen senere.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Vindue";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimer";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindue";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjælp";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Vis alle";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Vindue";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopier";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klip";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Søg";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mine emner";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Slet";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Rediger";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimer";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindue";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Naviger";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Søg";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mine emner";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Kategorier";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Kategorier";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Kategorier";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mine emner";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Software";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Luk";
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Für das Update ist ein Neustart erforderlich. Es kann zu kurzen Verzögerungen am Anmeldebildschirm kommen, bitte gedulden sie sich einen Moment. Jetzt abmelden und aktualisieren?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Ein Problem mit der Systemkonfiguration verhindert das korrekte funktionieren der Geführten Softwareaktualisierung. Das aufgetretene Problem ist: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Weitere anstehende Updates";
@@ -34,8 +37,11 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Alle anstehenden Updates werden installiert. Alle ungespeicherte Arbeit geht verloren.\nDurch jetziges Abmelden können sie eine erzwungene Abmeldung verhindern";
/* Allow button text */
"Allow" = "Erlauben";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Installation fehlgeschlagen. Installation wird wieder versucht.\nFalls dieses Verhalten anhält. verständigen Sie bitte ihren Systemadministrator.";
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Installation fehlgeschlagen. Installation wird wieder versucht.\nFalls dieses Verhalten anhält, verständigen Sie bitte ihren Systemadministrator.";
/* Other Users Blocking Apps Running title */
"Applications in use by others" = "Applikationen, die von anderen benutzt werden";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Derzeit nicht verfügbar";
/* Deny button text */
"Deny" = "Nicht erlauben";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Stelle fest, welche Dateien zu entfernen sind";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Fällig:";
/* FeaturedLabel */
"Featured" = "Highlights";
/* FeaturedItemsHeaderText */
"Featured items" = "App-Highlights";
/* managedsoftwareupdate message */
"Finishing..." = "Abschließen...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center kann den Updateserver derzeit nicht erreichen.\nVersuchen Sie es später noch einmal. Falls dieses Problem weiter besteht, kontaktieren Sie Ihren Systemadministrator.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Die geführte Softwareaktualisierung möchte nach einem Neustart das Startvolume entsperren, um alle anstehenden Aktualisierungen abzuschließen.";
/* Managed Update type */
"Managed Update" = "Verwaltetes Update";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Entfernen des Paketes abgeschlossen.";
/* Password label */
"Password:" = "Passwort:";
/* Pending Updates alert title */
"Pending updates" = "Anstehende updates";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Problem mit der Systemkonfiguration";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Die Software wurde erfolgreich installiert.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Dieses Objekt muss bis %s installiert sein";
/* Password explanation */
"To allow this, enter your login password." = "To allow this, enter your login password.";
/* No Items secondary text */
"Try again later." = "Später noch einmal versuchen.";
@@ -356,7 +383,7 @@
"Try selecting another category." = "Versuchen Sie eine andere Kategorie.";
/* No Developer Results secondary text */
"Try selecting another developer." = "Versuchen Sie einen anderen Entwickler.";
"Try selecting another developer." = "Versuchen Sie einen anderen Entwickler auszuwählen.";
/* Sidebar Type label */
"Type:" = "Typ:";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenster";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimieren";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Geführte Softwareaktualisierung";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Geführte Softwareaktualisierung";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Über Geführte Softwareaktualisierung";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hilfe";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Alle einblenden";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenster";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopieren";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Ausschneiden";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Suche";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Installiert";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Löschen";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Bearbeiten";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimieren";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoomen";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Geführte Softwareaktualisierung";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Navigation";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Suche";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Geführte Softwareaktualisierung";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Installiert";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Geführte Softwareaktualisierung";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Über Geführte Softwareaktualisierung";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Kategorien";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Kategorien";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Kategorien";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Installiert";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Software";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Schließen";
@@ -131,15 +142,15 @@
/* Class = "NSToolbarItem"; paletteLabel = "Search"; ObjectID = "fbJ-cF-weR"; */
"fbJ-cF-weR.paletteLabel" = "Suche";
/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "jQt-Mr-wFT"; */
"jQt-Mr-wFT.title" = "Vollbild";
/* Class = "NSToolbarItem"; label = "Software"; ObjectID = "jTu-Wf-fi2"; */
"jTu-Wf-fi2.label" = "Software";
/* Class = "NSToolbarItem"; paletteLabel = "Software"; ObjectID = "jTu-Wf-fi2"; */
"jTu-Wf-fi2.paletteLabel" = "Software";
/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "jQt-Mr-wFT"; */
"jQt-Mr-wFT.title" = "Vollbild";
/* Class = "NSToolbarItem"; paletteLabel = "Narrow Space"; ObjectID = "sF1-NQ-sSb"; */
"sF1-NQ-sSb.paletteLabel" = "Narrow Space";
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1060" identifier="macosx"/>
<deployment identifier="macosx"/>
<development version="6300" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
<plugIn identifier="com.apple.WebKitIBPlugin" version="10116"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
<plugIn identifier="com.apple.WebKitIBPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>
@@ -313,23 +313,31 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="mXP-yD-2El">
<rect key="frame" x="62" y="3" width="16" height="16"/>
<rect key="frame" x="60" y="4" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</progressIndicator>
<segmentedControl verticalHuggingPriority="750" id="jcc-R8-zGb">
<rect key="frame" x="1" y="-1" width="53" height="25"/>
<button verticalHuggingPriority="750" id="5fL-Tq-Ajk">
<rect key="frame" x="0.0" y="-1" width="27" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedRounded" trackingMode="momentary" id="ZsM-fh-8z5">
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSGoLeftTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uz1-Pt-HP6">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<segments>
<segment image="NSGoLeftTemplate" width="23"/>
<segment image="NSGoRightTemplate" width="23" tag="1"/>
</segments>
</segmentedCell>
</buttonCell>
<connections>
<action selector="navigationBtnClicked:" target="KMl-S0-0FF" id="CvU-yd-Zcd"/>
<action selector="navigateBackBtnClicked:" target="KMl-S0-0FF" id="Frj-uc-9SD"/>
</connections>
</segmentedControl>
</button>
<button verticalHuggingPriority="750" id="3tK-Kg-Idc">
<rect key="frame" x="26" y="-1" width="27" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSGoRightTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jkw-VK-yd7">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="navigateForwardBtnClicked:" target="KMl-S0-0FF" id="3ai-MZ-ToF"/>
</connections>
</button>
</subviews>
</view>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
@@ -387,6 +395,7 @@
<customObject id="373" userLabel="MSCAppDelegate" customClass="MSCAppDelegate">
<connections>
<outlet property="mainWindowController" destination="KMl-S0-0FF" id="m7n-3a-HoQ"/>
<outlet property="passwordAlertController" destination="7j7-vi-FnZ" id="peP-bR-3XF"/>
<outlet property="statusController" destination="GhX-6Z-STv" id="3ln-OI-LRD"/>
</connections>
</customObject>
@@ -404,7 +413,8 @@
<outlet property="fullScreenMenuItem" destination="jQt-Mr-wFT" id="9tf-Lb-Mec"/>
<outlet property="myItemsMenuItem" destination="1uK-HI-wGR" id="Jkb-QR-M6x"/>
<outlet property="myItemsToolbarButton" destination="eek-hQ-v8t" id="HdQ-Tf-9h7"/>
<outlet property="navigationBtn" destination="jcc-R8-zGb" id="Iv5-MT-vc7"/>
<outlet property="navigateBackBtn" destination="5fL-Tq-Ajk" id="1A3-2b-WqF"/>
<outlet property="navigateForwardBtn" destination="3tK-Kg-Idc" id="mLk-P1-ngS"/>
<outlet property="progressSpinner" destination="mXP-yD-2El" id="i8K-at-fcb"/>
<outlet property="searchField" destination="gLI-O8-siB" id="APe-GG-ZHl"/>
<outlet property="softwareMenuItem" destination="VYO-og-DRc" id="K69-dp-kBp"/>
@@ -424,6 +434,13 @@
<outlet property="window" destination="X5I-7f-aJs" id="2H4-ci-ApV"/>
</connections>
</customObject>
<customObject id="7j7-vi-FnZ" customClass="MSCPasswordAlertController">
<connections>
<outlet property="passwordField" destination="RBe-5Z-jso" id="zYq-Pt-66l"/>
<outlet property="passwordLabel" destination="X5P-3t-HRa" id="fH0-42-wqC"/>
<outlet property="passwordView" destination="ZH2-ra-J2V" id="ZPQ-um-15i"/>
</connections>
</customObject>
<userDefaultsController representsSharedInstance="YES" id="602"/>
<window title="Log" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="X5I-7f-aJs" userLabel="Log Window">
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES"/>
@@ -515,6 +532,34 @@
</connections>
<point key="canvasLocation" x="68" y="887"/>
</window>
<customView id="ZH2-ra-J2V">
<rect key="frame" x="0.0" y="0.0" width="317" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<secureTextField wantsLayer="YES" verticalHuggingPriority="750" id="RBe-5Z-jso">
<rect key="frame" x="75" y="0.0" width="242" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="675-6Y-zrc">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<allowedInputSourceLocales>
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
</allowedInputSourceLocales>
</secureTextFieldCell>
</secureTextField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="X5P-3t-HRa">
<rect key="frame" x="1" y="3" width="76" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="Password:" id="Ef8-fO-Dm6">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<point key="canvasLocation" x="-1957.5" y="-2587"/>
</customView>
</objects>
<resources>
<image name="AllItemsTemplate" width="28" height="26"/>
@@ -20,7 +20,10 @@
"A removal attempt failed. Removal will be attempted again.\nIf this situation continues, contact your systems administrator." = "Una desinstalación ha fallado. Se volverá a intentar.\nSi esta situación continua, contacta con el administrador de sistemas.";
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Es necesario reiniciar después de instalar las actualizaciones. Por favor se paciente ya que puede tardar en aparecer la ventana de inicio. ¿Cerrar sesión y actualizar ahora? ";
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Es necesario reiniciar después de instalar las actualizaciones. Por favor se paciente ya que puede tardar en aparecer la ventana de inicio. ¿Cerrar sesión y actualizar ahora?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Un fallo en la configuración del sistema ha provocado que Centro de Aplicaciones no funcione de forma correcta. El fallo reportado es: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Actualizaciones adicionales pendientes";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Todas las actualizaciones pendientes serán instaladas. Cualquier cambio no guardado se perderá.\nPuedes evitar el cierre forzado de la sesión cerrándola ahora.";
/* Allow button text */
"Allow" = "Permitir";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Una instalación ha fallado. Se volverá a intentar.\nSi esta situación continua, contacta con el administrador de sistemas.";
@@ -53,7 +59,7 @@
"Cancel update" = "Cancelar actualización";
/* Item Not Found message */
"Cannot display the requested item." = "No se puede mostar el elemento solicitado.";
"Cannot display the requested item." = "No se puede mostar el ítem solicitado.";
/* Categories label */
"Categories" = "Categorías";
@@ -91,11 +97,14 @@
/* Unavailable long action text */
"Currently Unavailable" = "Actualmente no disponible";
/* Deny button text */
"Deny" = "Denegar";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Determinando que archivos hay que quitar";
/* Sidebar Developer label */
"Developer:" = "Desarollador:";
"Developer:" = "Desarrollador:";
/* managedsoftwareupdate message */
"Done." = "Hecho.";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Requerida:";
/* FeaturedLabel */
"Featured" = "Destacados";
/* FeaturedItemsHeaderText */
"Featured items" = "Ítems destacados";
/* managedsoftwareupdate message */
"Finishing..." = "Finalizando...";
@@ -143,7 +158,7 @@
"Install requested" = "Instalación solicitada";
/* Install Session Failed title */
"Install session failed" = "Error en la sesión instalación";
"Install session failed" = "Error en la sesión de instalación";
/* Install Error status text */
"Installation Error" = "Error durante la instalación";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Centro de aplicaciones no puede contactar con el servidor de actualizaciones.\nPrueba más tarde. Si esta situación continua, contacta con el administrador de sistemas.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Centro de Aplicaciones quiere desbloquear el disco de inicio tras el reinicio para completar todas las actualizaciones pendientes.";
/* Managed Update type */
"Managed Update" = "Actualización controlada";
@@ -188,7 +206,7 @@
"More in %s" = "Otros en %s";
/* My Items label */
"My Items" = "Mis aplicaciones";
"My Items" = "Mis ítems";
/* No Licenses Available display text */
"No licenses available" = "No hay licencias disponibles";
@@ -215,7 +233,7 @@
"OK" = "Aceptar";
/* Forced Install Date summary */
"One or more items must be installed by %s" = "Una o mas applicaciones tiene que ser instalada para el %s";
"One or more items must be installed by %s" = "Uno o mas ítems tienen que ser instalados para el %s";
/* Mandatory Updates Imminent detail */
"One or more mandatory updates are overdue for installation. A logout will be forced soon." = "El periodo de instalación de una o más actualizaciones requeridas ha expirado. En breve se forzará el cierre de sesión";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Desinstalación del paquete completada.";
/* Password label */
"Password:" = "Contraseña:";
/* Pending Updates alert title */
"Pending updates" = "Actualizaciones pendientes";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Estado:";
/* System configuration problem alert title */
"System configuration problem" = "Problema en la configuración del sistema";
/* managedsoftwareupdate message */
"The software was successfully installed." = "El software se instaló correctamente.";
@@ -317,13 +341,13 @@
"There are additional pending updates to install or remove." = "Hay actualizaciones adicionales pendientes de instalar o desinstalar.";
/* No Items primary text */
"There are no available software items." = "No hay applicaciones disponibles.";
"There are no available software items." = "No hay aplicaciones disponibles.";
/* No Developer Results primary text */
"There are no items from this developer." = "No hay aplicacions de este desarollador.";
"There are no items from this developer." = "No hay aplicaciones de este desarollador.";
/* No Category Results primary text */
"There are no items in this category." = "No hay applicaciones en esta categoria.";
"There are no items in this category." = "No hay ítems en esta categoria.";
/* Other Users Logged In detail */
"There are other users logged into this computer.\nUpdating now could cause other users to lose their work.\n\nPlease try again later after the other users have logged out." = "Hay otros usuarios con sesiones abiertas en este equipo.\nActualizar ahora puede causar perdidas en su trabajo.\n\nPor favor prueba más tarde cuando los otros usuarios hayan cerrado sus sesiones.";
@@ -341,11 +365,14 @@
"There is no new software for your computer at this time." = "No hay actualizaciones de software disponibles.";
/* Dependency List prologue text */
"This item is required by:" = "Requerida por:";
"This item is required by:" = "Requerido por:";
/* Forced Date warning */
"This item must be installed by %s" = "Tiene que estar instalado para el %s";
/* Password explanation */
"To allow this, enter your login password." = "Para permitir esto, introduzca su contraseña de usuario.";
/* No Items secondary text */
"Try again later." = "Probar de nuevo más tarde.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Ventana";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimizar";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ventana";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centro de aplicaciones";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centro de aplicaciones";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Acerca del Centro de aplicaciones";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Ayuda";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Mostrar todos";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Ventana";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Copiar";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Cortar";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Buscar";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mis aplicaciones";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Eliminar";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Editar";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimizar";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ventana";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Centro de aplicaciones";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Navegar";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Buscar";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centro de aplicaciones";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mis aplicaciones";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centro de aplicaciones";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Acerca del Centro de aplicaciones";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Categorías";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Categorías";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Categorías";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mis aplicaciones";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Aplicaciones";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Cerrar";
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Päivitysten asentaminen vaatii tietokoneen uudelleenkäynnistystä. Kirjautumisikkunan avauduttua saattaa kestää hetki ennen kuin asennus alkaa. Kirjaudu ulos ja päivitä nyt?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Järjestelmän määritysvirhe estää Managed Software Center -ohjelman toiminnan. Raportoitu ongelma on: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Muut odottavat päivitykset";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Kaikki odottamassa olevat päivitykset asennetaan. Tallentamattomat muutokset menetetään avoimista ohjelmista.\nVoit ohittaa pakotetun uloskirjaamisen kirjautumalla ulos nyt.";
/* Allow button text */
"Allow" = "Salli";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Asennus epäonnistui mutta sitä yritetään uudelleen.\nJos ongelma jatkuu, ota yhteyttä järjestelmän ylläpitäjään.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Ei saatavilla tällä hetkellä";
/* Deny button text */
"Deny" = "Kiellä";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Määritetään poistettavia kohteita";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Asennettava:";
/* FeaturedLabel */
"Featured" = "Esittelyssä";
/* FeaturedItemsHeaderText */
"Featured items" = "Esittelyssä";
/* managedsoftwareupdate message */
"Finishing..." = "Viimeistellään...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center ei saa yhteyttä palvelimeen juuri nyt. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteyttä järjestelmän ylläpitäjään.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Center haluaa avata käynnistyslevyn lukituksen seuraavalla käynnistyskerralla jatkaakseen päivitysten asentamista.";
/* Managed Update type */
"Managed Update" = "Hallittu päivitys";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Paketin poisto valmis.";
/* Password label */
"Password:" = "Salasana:";
/* Pending Updates alert title */
"Pending updates" = "Odottavat päivitykset";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Tila:";
/* System configuration problem alert title */
"System configuration problem" = "Järjestelmän määritysvirhe";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Ohjelmiston asennus onnistui.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Asennettava ennen %s";
/* Password explanation */
"To allow this, enter your login password." = "Salli lukituksen avaaminen syöttämällä salasana.";
/* No Items secondary text */
"Try again later." = "Yritä myöhemmin uudelleen.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Ikkuna";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Pienennä";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ikkuna";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Tietoja: Managed Software Center";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Ohje";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Näytä kaikki";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Ikkuna";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopioi";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Leikkaa";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Etsi";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Omat";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Poista";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Muokkaa";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Pienennä";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoomaa";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ikkuna";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Näytä";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Etsi";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Omat";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Tietoja: Managed Software Center";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Kategoriat";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Kategoriat";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Kategoriat";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Omat";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Ohjelmistot";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Sulje";
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Un redémarrage est nécessaire après la mise à jour. Soyez patient car il peut y avoir un petit délai lors de la reconnexion. Déconnecter et mettre à jour maintenant ?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Un problème de configuration du système empêche le Centre de gestion des logiciels de fonctionner correctement. Le problème signalé est: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Mises à jour supplémentaires en attente";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Toutes les mises à jour en attente vont être installées. Les travaux non sauvegardés seront perdus.\nPour éviter cela fermer maintenant votre session.";
/* Allow button text */
"Allow" = "Autoriser";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Une tentative d'installation a échoué. L'installation sera tentée à nouveau.\nSi cette situation perdure, contactez votre administrateur système.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Actuellement non disponible";
/* Deny button text */
"Deny" = "Refuser";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Vérification des éléments à supprimer";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Dû:";
/* FeaturedLabel */
"Featured" = "En vedette";
/* FeaturedItemsHeaderText */
"Featured items" = "Articles en vedette";
/* managedsoftwareupdate message */
"Finishing..." = "Finalisation...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Le Centre de gestion des logiciels ne peut contacter le serveur de mise à jour.\nEssayez plus tard. Si cette situation perdure, contactez votre administrateur système.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Le Centre de gestion des logiciels doit déverrouiller votre disque de démarrage au prochain redémarrage afin de terminer les mises à jour en attente.";
/* Managed Update type */
"Managed Update" = "Mise à jour gérée";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Paquet supprimé avec succès.";
/* Password label */
"Password:" = "Mot de passe :";
/* Pending Updates alert title */
"Pending updates" = "Mises à jour en attente";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "État:";
/* System configuration problem alert title */
"System configuration problem" = "Problème de configuration du système";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Le logiciel a été installé avec succès.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Cet article doit être installé avant le %s";
/* Password explanation */
"To allow this, enter your login password." = "Pour autoriser cette opération, veuillez entrer votre mot de passe.";
/* No Items secondary text */
"Try again later." = "Essayez plus tard.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimiser";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenêtre";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centre de gestion des logiciels";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "À propos de Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Aide";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Tout afficher";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Copier";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Couper";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Rechercher";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mes articles";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Supprimer";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Modifier";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimiser";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenêtre";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Centre de gestion des logiciels";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Naviguer";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Rechercher";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mes articles";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "À propos de Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Catégories";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Catégories";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Catégories";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mes articles";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Logiciel";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Fermer";
@@ -1,4 +1,4 @@
/* Multiple Updates message */
/* Multiple Updates message */
"%s pending updates" = "%s aggiornamenti in sospeso";
/* One Update message */
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "È necessario un riavvio dopo dell'aggiornamento. Potrebbe esserci un leggero ritardo prima della finestra di login. Eseguire il logout e l'aggiornamento adesso?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Un problema alla configurazione di sistema sta impedendo al Centro Gestione Applicazioni di operare correttamente. Il problema segnalato è: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Ulteriori Aggiornamenti in Sospeso";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Tutti gli aggiornamenti in sospeso verrano installati. I documenti non salvati verranno persi.\nSi può evitare un logout forzato facendo un logout adesso.";
/* Allow button text */
"Allow" = "Consenti";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Un tentativo di installazione è fallito. L'installazione verrà riprovata ancora.\nSe questa situazione persiste, contattare l'amministratore di sistema.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Attualmente non disponibile";
/* Deny button text */
"Deny" = "Rifiuta";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Determino elementi del filesystem da rimuovere";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Da fare:";
/* FeaturedLabel */
"Featured" = "In primo piano";
/* FeaturedItemsHeaderText */
"Featured items" = "Elementi in primo piano";
/* managedsoftwareupdate message */
"Finishing..." = "Conclusione...";
@@ -136,12 +151,12 @@
/* Install action text */
"Install" = "Installazione";
/* Install Requested status text */
"Install requested" = "Installazione richiesta";
/* Install Required action text */
"Install Required" = "Installazione Necessaria";
/* Install Requested status text */
"Install requested" = "Installazione richiesta";
/* Install Session Failed title */
"Install session failed" = "Sessione di installazione fallita";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "In questo momento il Centro Gestione Applicazioni non riesce a contattare il server.\nRiprovare più tardi. Se questa situazione persiste, contattare l'amministratore di sistema.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Centro Gestione Applicazioni vuole sbloccare il disco di avvio dopo il riavvio per completare gli aggiornamenti in sospeso.";
/* Managed Update type */
"Managed Update" = "Aggiornamento Gestito";
@@ -196,15 +214,15 @@
/* No Updates message */
"No pending updates" = "Nessun aggiornamento in sospeso";
/* Item Not Found title */
"Not Found" = "Non Trovato";
/* Not Currently Available display text */
"Not currently available" = "Attualmente non disponibile";
/* Not Enough Disk Space display text */
"Not enough disk space" = "Non c'è abbastanza spazio su disco";
/* Item Not Found title */
"Not Found" = "Non Trovato";
/* Not Installed status text */
"Not installed" = "Non Installato";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Rimozione pacchetto riuscita.";
/* Password label */
"Password:" = "Password:";
/* Pending Updates alert title */
"Pending updates" = "Aggiornamenti in sospeso";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Problema di configurazione di sistema";
/* managedsoftwareupdate message */
"The software was successfully installed." = "L'applicazione è stata installata con successo.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Questo elemento deve essere installato da %s";
/* Password explanation */
"To allow this, enter your login password." = "Per permettere questo, inserire la password di login.";
/* No Items secondary text */
"Try again later." = "Prova ancora più tardi.";
@@ -373,6 +400,9 @@
/* Update All button title */
"Update All" = "Aggiorna Tutto";
/* Update Required long action text */
"Update Required" = "Aggiornamento richiesto";
/* Update Available status text */
"Update available" = "Aggiornamento disponibile";
@@ -385,9 +415,6 @@
/* Update Now button title */
"Update now" = "Aggiorna adesso";
/* Update Required long action text */
"Update Required" = "Aggiornamento richiesto";
/* Update Will Be Installed status text */
"Update will be installed" = "L'aggiornamento verrà installato";
@@ -429,4 +456,3 @@
/* No Pending Updates primary text */
"Your software is up to date." = "Le applicazioni sono aggiornate.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Finestra";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Riduci";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Finestra";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenu Principale";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Info su Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Aiuto";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Mostra Tutto";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Finestra";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Copia";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Taglia";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Cerca";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "I Miei Elementi";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Elimina";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Modifica";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Riduci";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Ingrandisci";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Finestra";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenu Principale";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Centro Gestione Applicazioni";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Naviga";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Cerca";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "I Miei Elementi";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Info su Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Categorie";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigazione";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Categorie";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Categorie";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "I Miei Elementi";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Applicazioni";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Chiudi";
@@ -1,8 +1,8 @@
/* Multiple Updates message */
"%s pending updates" = "%s個のアップデートを保留しています";
/* Multiple Updates message */
"%s pending updates" = "アップデートを%s個保留しています";
/* One Update message */
"1 pending update" = "1つのアップデートを保留しています";
"1 pending update" = "アップデートを1つ保留しています";
/* Logout Required detail */
"A logout is required before updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "アップデートの前にログアウトする必要があります。ログインウィンドウで若干の時間がかかります。今からログアウトしアップデートを実行しますか?";
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "アップデート後に再起動する必要があります。ログインウィンドウで若干の時間がかかります。今からログアウトしアップデートを実行しますか?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "システムコンフィギュレーションの問題が、Managed Software Centerの正常なオペレーションを妨げています。報告された問題は:";
/* Additional Pending Updates title */
"Additional Pending Updates" = "その他保留中のアップデート";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "保留中のすべてのアップデートをインストールします。保存されていない作業内容は消失します。\n今ログアウトをすれば、強制ログアウトを避ける事ができます。";
/* Allow button text */
"Allow" = "許可";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "インストールに失敗しました。再度インストールを試みます。\nインストールの失敗が続くようであれば、システム管理者に連絡してください。";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "現在利用できません";
/* Deny button text */
"Deny" = "不許可";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "どのファイル項目を削除するか特定中";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "アップデート期限:";
/* FeaturedLabel */
"Featured" = "おすすめ";
/* FeaturedItemsHeaderText */
"Featured items" = "おすすめのアイテム";
/* managedsoftwareupdate message */
"Finishing..." = "仕上げ中…";
@@ -136,12 +151,12 @@
/* Install action text */
"Install" = "インストール";
/* Install Requested status text */
"Install requested" = "要請されたインストール";
/* Install Required action text */
"Install Required" = "要請されたインストール";
/* Install Requested status text */
"Install requested" = "要請されたインストール";
/* Install Session Failed title */
"Install session failed" = "インストールセッションに失敗しました";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Centerは現在アップーデートサーバーと接続できません。\n後でもう一度実行してください。もしこの状況が改善されない場合は、システム管理者に連絡してください。";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Centerは、すべての保留中のアップデートを完了させるため、再起動後、スタートアップディスクをアンロックします。";
/* Managed Update type */
"Managed Update" = "必須のアップデート";
@@ -196,15 +214,15 @@
/* No Updates message */
"No pending updates" = "保留中のアップデートはありません";
/* Item Not Found title */
"Not Found" = "見つかりません";
/* Not Currently Available display text */
"Not currently available" = "現在使用ができません";
/* Not Enough Disk Space display text */
"Not enough disk space" = "ディスクの空きが足りません";
/* Item Not Found title */
"Not Found" = "見つかりません";
/* Not Installed status text */
"Not installed" = "インストールされていません";
@@ -215,7 +233,7 @@
"OK" = "OK";
/* Forced Install Date summary */
"One or more items must be installed by %s" = "%sまでに、つまたそれ以上のアイテムインストールしなければいけません";
"One or more items must be installed by %s" = "%sまでに、1つまたそれ以上のアイテムインストールが必要です";
/* Mandatory Updates Imminent detail */
"One or more mandatory updates are overdue for installation. A logout will be forced soon." = "一つまたそれ以上の必須アップデートが期日までに行われていないため、強制的にログアウトをします";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "パッケージの削除が完了しました";
/* Password label */
"Password:" = "パスワード:";
/* Pending Updates alert title */
"Pending updates" = "アップデートを保留中";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "ステータス:";
/* System configuration problem alert title */
"System configuration problem" = "システムコンフィギュレーションに問題があります";
/* managedsoftwareupdate message */
"The software was successfully installed." = "ソフトウェアのインストールが完了しました";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "このアイテムは%sまでにインストールしなければいけません";
/* Password explanation */
"To allow this, enter your login password." = "これを許可する為、ログインパスワードを入力して下さい。";
/* No Items secondary text */
"Try again later." = "後でもう一度実行してください";
@@ -373,6 +400,9 @@
/* Update All button title */
"Update All" = "すべてをアップデート";
/* Update Required long action text */
"Update Required" = "アップデートが必要です";
/* Update Available status text */
"Update available" = "アップデートがあります";
@@ -385,9 +415,6 @@
/* Update Now button title */
"Update now" = "今すぐアップデート";
/* Update Required long action text */
"Update Required" = "アップデートが必要です";
/* Update Will Be Installed status text */
"Update will be installed" = "アップデートをインストールします";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "ウィンドウ";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "しまう";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "ウィンドウ";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Managed Software Centerについて";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "ヘルプ";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "すべてを表示";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "ウィンドウ";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "コピー";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "カット";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "検索";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "マイアイテム";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "削除";
@@ -65,12 +52,27 @@
/* Class = "NSMenu"; title = "Edit"; ObjectID = "205"; */
"205.title" = "編集";
/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "207"; */
"207.title" = "Undo";
/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "215"; */
"215.title" = "Redo";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "編集";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "しまう";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "ズーム";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "ウィンドウ";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -80,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "ナビゲート";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "検索";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "マイアイテム";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Managed Software Centerについて";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "カテゴリ";
@@ -101,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "ナビゲーション";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "カテゴリ";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "カテゴリ";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "マイアイテム";
@@ -116,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "ソフトウェア";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "閉じる";
@@ -125,18 +142,23 @@
/* Class = "NSToolbarItem"; paletteLabel = "Search"; ObjectID = "fbJ-cF-weR"; */
"fbJ-cF-weR.paletteLabel" = "検索";
/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "jQt-Mr-wFT"; */
"jQt-Mr-wFT.title" = "Enter Full Screen";
/* Class = "NSToolbarItem"; label = "Software"; ObjectID = "jTu-Wf-fi2"; */
"jTu-Wf-fi2.label" = "ソフトウェア";
/* Class = "NSToolbarItem"; paletteLabel = "Software"; ObjectID = "jTu-Wf-fi2"; */
"jTu-Wf-fi2.paletteLabel" = "ソフトウェア";
/* Class = "NSToolbarItem"; paletteLabel = "Narrow Space"; ObjectID = "sF1-NQ-sSb"; */
"sF1-NQ-sSb.paletteLabel" = "Narrow Space";
/* Class = "NSMenuItem"; title = "Updates"; ObjectID = "tv9-wZ-XWN"; */
"tv9-wZ-XWN.title" = "アップデート";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "vPs-dO-LDa"; */
"vPs-dO-LDa.title" = "ログを表示";
/* Class = "NSMenuItem"; title = "Forward"; ObjectID = "z4Z-vu-XGX"; */
"z4Z-vu-XGX.title" = "次へ";
@@ -12,9 +12,11 @@ import AppKit
from PyObjCTools import AppHelper
# import modules containing classes required to start application and load MainMenu.nib
# import modules containing classes required to start application and
# MainMenu.nib
import MSCAppDelegate
import MSCMainWindowController
import MSCPasswordAlertController
import MSCStatusController
import MSCLogWindowController
import MSCToolbar
@@ -272,16 +272,26 @@ def build_list_page(category=None, developer=None, filter=None):
header = u'Search results for %s' % filter
page_name = u'filter-%s.html' % filter
featured_items = [item for item in items if item.get('featured')]
if (featured_items and category is None and developer is None and
filter is None):
header = NSLocalizedString(u"Featured items",
u"FeaturedItemsHeaderText")
category_list = []
for item in items:
if 'category' in item and item['category'] not in category_list:
category_list.append(item['category'])
item_html = build_list_page_items_html(
category=category, developer=developer, filter=filter)
category=category, developer=developer, filter=filter)
# make HTML for Categories pop-up menu
all_categories_label = NSLocalizedString(u"All Categories", u"AllCategoriesLabel")
if featured_items:
all_categories_label = NSLocalizedString(u"Featured", u"FeaturedLabel")
else:
all_categories_label = NSLocalizedString(u"All Categories",
u"AllCategoriesLabel")
if category:
categories_html = u'<option>%s</option>\n' % all_categories_label
else:
@@ -320,7 +330,8 @@ def build_list_page_items_html(category=None, developer=None, filter=None):
item_html = u''
if filter:
# since the filter term came through the filesystem,
# HFS+ does some unicode character decomposition which can cause issues with comparisons
# HFS+ does some unicode character decomposition which can cause issue
# with comparisons
# so before we do our comparison, we normalize the unicode string
# using unicodedata.normalize
filter = normalize('NFC', filter)
@@ -337,6 +348,13 @@ def build_list_page_items_html(category=None, developer=None, filter=None):
items = [item for item in items
if developer.lower() in item.get('developer', '').lower()]
if category is None and developer is None and filter is None:
# this is the default (formerly) "all items" view
# look for featured items and display those if we have them
featured_items = [item for item in items if item.get('featured')]
if featured_items:
items = featured_items
if items:
item_template = get_template('list_item_template.html')
for item in sorted(items, key=itemgetter('display_name_lower')):
@@ -581,6 +581,12 @@ def getPowerInfo():
# Currently drawing from 'Battery Power'
# -InternalBattery-0 100%; discharging; 5:55 remaining
#
#######
# as of some macOS update, or perhaps with certain models, the battery info
# looks like:
# Now drawing from 'Battery Power'
# -InternalBattery-0 (id=4325475) 100%; discharging; 5:01 remaining present: true
#
line = output.splitlines()
if 'AC Power' in line[0]:
power_dict['PowerSource'] = 'AC Power'
@@ -589,6 +595,10 @@ def getPowerInfo():
power_dict['PowerSource'] = 'Battery Power'
if len(line) > 1:
part = line[1].split()
if part[1].startswith('(id='):
# get rid of the battery id so we're working with the same
# format as previously
del(part[1])
try:
power_dict['BatteryCharge'] = int(part[1].rstrip('%;'))
except (IndexError, ValueError):
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "En omstart er påkrevd etter oppdatering. Vent et øyeblikk da det kan oppstå en kort forsinkelse ved påloggingsvinduet. Logg ut og oppdater nå?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Et systemkonfigurasjonsproblem hindrer Managed Software Center fra å virker som det skal. Det rapporterte problemet er: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Flere ventende oppdateringer";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Alle ventende oppdateringer vil bli installeret. Arbeid som ikke er lagret vil gå tapt.\nDu kan unngå den tvungne utloggingen, hvis du selv velger å logge ut nå.";
/* Allow button text */
"Allow" = "Tillat";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Forsøket på installering feilet. installeringen vil bli forsøkt igjen.\nHvis problemet fortsetter, kontakt din systemadministrator.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Ikke tilgjengelig";
/* Deny button text */
"Deny" = "Avslå";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Undersøker hvilke elementer som kan fjernes";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Forfall:";
/* FeaturedLabel */
"Featured" = "Valgt";
/* FeaturedItemsHeaderText */
"Featured items" = "Valgte elementer";
/* managedsoftwareupdate message */
"Finishing..." = "Avslutter...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center kan ikke kontakte oppdateringsserveren.\nPrøv igjen senere. Hvis problemet fortsetter, kontakt din systemadministrator.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Center vil låse startdisken opp etter omstart får å ferdigjøre alle ventende oppdateringer.";
/* Managed Update type */
"Managed Update" = "Administrert oppdatering";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Avinstallasjon av programvare er gjennomført.";
/* Password label */
"Password:" = "Passord:";
/* Pending Updates alert title */
"Pending updates" = "Ventende oppdateringer";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Problem med systemkonfigurasjon";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Installasjon av programvaren er fullført.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Dette objektet må installeres senest %s";
/* Password explanation */
"To allow this, enter your login password." = "For å tillate dette, må du skrive inn ditt påloggingspassord.";
/* No Items secondary text */
"Try again later." = "Prøv igjen senere.";
@@ -421,9 +448,6 @@
/* Blocking Apps Running detail */
"You must quit the following applications before proceeding with installation or removal:\n\n%s" = "Du må avslutte følgende programmer før du forsetter med installasjon eller fjerning:\n\n%s";
/* Blocking Apps Running detail */
"You must quit the following applications before proceeding with installation or removal:\n\n%s" = "Du må avslutte følgende programmer før du forsetter med installasjon eller fjerning:\n\n%s";
/* No Power Source Warning text */
"Your computer is not connected to a power source." = "Datamaskinen er ikke tilkoblet en strømforsyning.";
@@ -1,25 +1,3 @@

/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Vindu";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimer";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindu";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjelp";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Vis alle";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Vindu";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopier";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klipp ut";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Søk";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mine objekter";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Slett";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Rediger";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimer";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Skalere";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindu";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Naviger";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Søk";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mine objekter";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Kategorier";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigasjon";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Kategorier";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Kategorier";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mine objekter";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Programvare";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Lukk";
@@ -17,11 +17,14 @@
"A logout will be forced in less than a minute.\nAll pending updates will be installed. Unsaved work will be lost." = "U wordt binnen een minuut automatisch uitgelogd.\nAlle wachtende updates zullen worden geïnstalleerd. Niet-opgeslagen werk zal verloren gaan.";
/* Removal Error message */
"A removal attempt failed. Removal will be attempted again.\nIf this situation continues, contact your systems administrator." = "Een verwijderingspoging is niet geslaagd. Verwijderen wordt opnieuw geprobeerd.\nAls deze situatie niet verandert, neem contact op met uw systeembeheerder";
"A removal attempt failed. Removal will be attempted again.\nIf this situation continues, contact your systems administrator." = "Een verwijderingspoging is niet geslaagd. Verwijderen wordt opnieuw geprobeerd.\nAls deze situatie niet verandert, neem contact op met uw systeembeheerder.";
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Het is nodig te herstarten na het bijwerken. Nadat het login window verschijnt kan het een ogenblik duren voordat bijwerken begint. Wilt U nu uitloggen en bijwerken?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Een probleem met de systeemconfiguratie verhindert het correct functioneren van Managed Software Center. Het probleem is: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Additionele Wachtende Updates";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Alle wachtende updates zullen worden geïnstalleerd. Niet-opgeslagen werk zal verloren gaan.\nU kunt dit voorkomen door nu zelf uit te loggen.";
/* Allow button text */
"Allow" = "Sta toe";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Een installatiepoging is niet geslaagd. Installatie wordt opnieuw geprobeerd.\nAls deze situatie niet verandert, neem contact op met uw systeembeheerder";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Op dit moment niet beschikbaar";
/* Deny button text */
"Deny" = "Nee";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Bepalen welke bestandssysteem onderdelen te verwijderen";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Vervaldatum:";
/* FeaturedLabel */
"Featured" = "Uitgelicht";
/* FeaturedItemsHeaderText */
"Featured items" = "Uitgelicht";
/* managedsoftwareupdate message */
"Finishing..." = "Afronden...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center kan de update server op dit moment niet bereiken.\nProbeer later nog eens. Als deze situatie niet verandert, neem contact op met uw systeembeheerder.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Center wil de opstartschijf ontgrendelen na herstart zodat alle nog wachtende updates uitgevoerd kunnen worden.";
/* Managed Update type */
"Managed Update" = "Beheerde Update";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Verwijderen van pakket voltooid.";
/* Password label */
"Password:" = "Wachtwoord:";
/* Pending Updates alert title */
"Pending updates" = "Wachtende updates";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Probleem met de systeemconfiguratie";
/* managedsoftwareupdate message */
"The software was successfully installed." = "De software is succesvol geïnstalleerd.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Dit item moet geïnstalleerd zijn voor %s";
/* Password explanation */
"To allow this, enter your login password." = "Om dit toe te staan, vul je loginwachtwoord in.";
/* No Items secondary text */
"Try again later." = "Probeer later nog eens.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Venster";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimaliseren";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Venster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Over Managed Software Center";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Help";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Toon Alles";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Venster";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopieer";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Knip";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Zoek";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mijn Items";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Verwijder";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Bewerken";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimaliseren";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Vergroot/verklein";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Venster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Navigeer";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Zoek";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mijn Items";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Over Managed Software Center";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Categorieën";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigation";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Categorieën";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Categorieën";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mijn Items";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Software";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Sluit";
@@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
#
# passwdutil.py
# Managed Software Center
#
# Created by Greg Neagle on 4/18/17.
# Copyright (c) 2017 The Munki Project. All rights reserved.
#
'''Code to interact with the OpenDirectory framework'''
import OpenDirectory as OD
def findODuserRecords(username, nodename='/Search'):
'''Uses OpenDirectory methods to find user records for username'''
mySession = OD.ODSession.defaultSession()
if not mySession:
NSLog('DS session error: no default session')
return None
searchNode, err = OD.ODNode.nodeWithSession_name_error_(
mySession, nodename, None)
if not searchNode:
NSLog('DS node error: %s' % err)
return None
myQuery, err = OD.ODQuery.queryWithNode_forRecordTypes_attribute_matchType_queryValues_returnAttributes_maximumResults_error_(
searchNode,
OD.kODRecordTypeUsers,
OD.kODAttributeTypeRecordName,
OD.kODMatchEqualTo,
username,
OD.kODAttributeTypeAllAttributes,
0,
None)
results, err = myQuery.resultsAllowingPartial_error_(False, None)
if not results:
return None
return results
def findODuserRecord(username, nodename='/Search'):
'''Returns first record found for username.'''
records = findODuserRecords(username, nodename)
if records:
return records[0]
else:
return None
def verifyPassword(username, password):
'''Uses OpenDirectory methods to verify password for username'''
result = False
userRecord = findODuserRecord(username)
if userRecord:
result, unused_err = userRecord.verifyPassword_error_(
password, None)
return result
@@ -22,6 +22,9 @@
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "После установки обновлений необходимо перезагрузить компьютер. После перезагрузки дождитесь появления окна входа. Выйти из системы и обновить?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Проблема с конфигурацией системы не позволяет правильному функционированию Центра Управления ПО. Сообщаемая проблема: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Дополнительные отложенные обновления";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Будут установлены все отложенные обновления. Все несохраненные данные будут потеряны.\nВы можете избежать принудительного завершения работы, выполнив выход из системы.";
/* Allow button text */
"Allow" = "Разрешить";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Попытка установки не удалась. Попытка будет предпринята снова.\nЕсли эта ситуация продолжится, обратитесь к системному администратору.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "В настоящее время Недоступно";
/* Deny button text */
"Deny" = "Не разрешать";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Определение элементов файловой системы для удаления";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "До:";
/* FeaturedLabel */
"Featured" = "Подборка";
/* FeaturedItemsHeaderText */
"Featured items" = "Подборка элементов";
/* managedsoftwareupdate message */
"Finishing..." = "Завершение...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Центр Управления ПО не может связаться с сервером обновлений в данный момент.\nПопробуйте еще раз позже. Если эта ситуация продолжится, обратитесь к системному администратору.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Центр Управления ПО хочет разблокировать загрузочный диск после перезапуска, чтобы завершить все ожидающие обновления.";
/* Managed Update type */
"Managed Update" = "Управляемое Обновление";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Удаление пакета завершено.";
/* Password label */
"Password:" = "Пароль:";
/* Pending Updates alert title */
"Pending updates" = "Отложенные обновления";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Статус:";
/* System configuration problem alert title */
"System configuration problem" = "Проблема с конфигурацией системы";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Программное обеспечение было успешно установлено.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Этот элемент должен быть установлен до %s";
/* Password explanation */
"To allow this, enter your login password." = "Для разрешения введите свой пароль для входа в систему.";
/* No Items secondary text */
"Try again later." = "Попробуйте еще раз позже.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Окно";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Свернуть";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Окно";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Центр Управления ПО";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Центр Управления ПО";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "О Центре Управления ПО";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Справка";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Показать все";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Окно";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Скопировать";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Вырезать";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Поиск";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Мои эелементы";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Удалить";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Правка";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Свернуть";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Изменить масштаб";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Окно";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Центр Управления ПО";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Перейти";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Поиск";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Центр Управления ПО";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Мои эелементы";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Центр Управления ПО";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "О Центре Управления ПО";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Категории";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Навигация";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Категории";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Категории";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Мои элементы";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Программы";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Закрыть";
@@ -8,7 +8,7 @@
"A logout is required before updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "Det krävs en utloggning före uppdateringen. Det kan bli en kort fördröjning vid inloggningsfönstret. Logga ut och uppdatera nu?";
/* Logout warning string when logout is an hour or more away */
"A logout will be forced at approximately %s." = "Du kommer tvingas att loggas ut om cirka. %s.";
"A logout will be forced at approximately %s." = "Du kommer tvingas att loggas ut om cirka %s.";
/* Logout warning string when logout is in < 60 minutes */
"A logout will be forced in less than %s minutes." = "Du kommer tvingas att loggas ut om cirka %s minuter.";
@@ -20,7 +20,10 @@
"A removal attempt failed. Removal will be attempted again.\nIf this situation continues, contact your systems administrator." = "Avinstallationen misslyckades. Ytterligare försök att avinstallera kommer att göras.\nKontakta din datoradministratör om problemet återkommer.";
/* Restart Required detail */
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "En omstart krävs efter uppdateringen. Det kan bli en kort fördröjning vid inloggningsfönstret. Logga ut och uppdatera nu ? ";
"A restart is required after updating. Please be patient as there may be a short delay at the login window. Log out and update now?" = "En omstart krävs efter uppdateringen. Det kan bli en kort fördröjning vid inloggningsfönstret. Logga ut och uppdatera nu?";
/* System configuration problem alert detail */
"A systems configuration issue is preventing Managed Software Center from operating correctly. The reported issue is: " = "Ett problem med systemkonfigurationen hindrar Managed Software Center från att fungera korrekt. Det rapporterade felet är: ";
/* Additional Pending Updates title */
"Additional Pending Updates" = "Ytterligare uppdateringar";
@@ -34,6 +37,9 @@
/* Forced Logout warning detail */
"All pending updates will be installed. Unsaved work will be lost.\nYou may avoid the forced logout by logging out now." = "Alla väntande uppdateringar kommer att installeras. Ej sparat arbete kommer att förloras!\nDu kan undgå detta genom att logga ut nu.";
/* Allow button text */
"Allow" = "Tillåt";
/* Install Error message */
"An installation attempt failed. Installation will be attempted again.\nIf this situation continues, contact your systems administrator." = "Installationen misslyckades. Ytterligare installationsförsök kommer att göras.\nKontakta din datoradministratör om problemet återkommer.";
@@ -91,6 +97,9 @@
/* Unavailable long action text */
"Currently Unavailable" = "Inte tillgänglig just nu";
/* Deny button text */
"Deny" = "Avbryt";
/* managedsoftwareupdate message */
"Determining which filesystem items to remove" = "Bestämmer vad som ska tas bort";
@@ -109,6 +118,12 @@
/* Sidebar Due label */
"Due:" = "Dags:";
/* FeaturedLabel */
"Featured" = "I blickfånget";
/* FeaturedItemsHeaderText */
"Featured items" = "I blickfånget";
/* managedsoftwareupdate message */
"Finishing..." = "Avslutar...";
@@ -172,6 +187,9 @@
/* Cannot Contact Server detail */
"Managed Software Center cannot contact the update server at this time.\nTry again later. If this situation continues, contact your systems administrator." = "Managed Software Center kan inte kontakta den uppdateringsservern just nu.\nFörsök igen senare. Kontakta din datoradministratör om problemet återkommer.";
/* Password prompt title */
"Managed Software Center wants to unlock the startup disk after restarting to complete all pending updates." = "Managed Software Center behöver låsa upp startskivan efter omstart för att slutföra alla uppdateringar.";
/* Managed Update type */
"Managed Update" = "Hanterad uppdatering";
@@ -235,6 +253,9 @@
/* managedsoftwareupdate message */
"Package removal complete." = "Paketet borttaget.";
/* Password label */
"Password:" = "Lösenord:";
/* Pending Updates alert title */
"Pending updates" = "Väntande uppdateringar";
@@ -310,6 +331,9 @@
/* Sidebar Status label */
"Status:" = "Status:";
/* System configuration problem alert title */
"System configuration problem" = "Problem med systemkonfiguration";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Programvaran installerades.";
@@ -346,6 +370,9 @@
/* Forced Date warning */
"This item must be installed by %s" = "Måste installeras senast %s";
/* Password explanation */
"To allow this, enter your login password." = "Ange ditt inloggningslösenord för att tillåta detta.";
/* No Items secondary text */
"Try again later." = "Försök igen senare.";
@@ -1,25 +1,3 @@

/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fönster";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimera";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fönster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AHuvudmeny";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjälp";
@@ -27,7 +5,7 @@
"106.title" = "Hjälp";
/* Class = "NSMenuItem"; title = "Managed Software Center Help"; ObjectID = "111"; */
"111.title" = "Hjälp för Managed Software Center";
"111.title" = "Managed Software Center Hjälp";
/* Class = "NSMenu"; title = "Services"; ObjectID = "130"; */
"130.title" = "Tjänster";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Visa alla";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fönster";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Kopiera";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klipp ut";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Sök";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mina objekt";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Radera";
@@ -74,9 +61,18 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Redigera";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimera";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zooma";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fönster";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AHuvudmeny";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "371"; */
"371.title" = "Managed Software Center";
@@ -86,11 +82,14 @@
/* Class = "NSMenu"; title = "Navigate"; ObjectID = "376"; */
"376.title" = "Navigera";
/* Class = "NSMenuItem"; title = "Search"; ObjectID = "1XY-pX-Pwv"; */
"1XY-pX-Pwv.title" = "Sök";
/* Class = "NSMenuItem"; title = "Managed Software Center"; ObjectID = "56"; */
"56.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "My Items"; ObjectID = "1uK-HI-wGR"; */
"1uK-HI-wGR.title" = "Mina objekt";
/* Class = "NSMenu"; title = "Managed Software Center"; ObjectID = "57"; */
"57.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "About Managed Software Center"; ObjectID = "58"; */
"58.title" = "Om Managed Software Center";
/* Class = "NSMenuItem"; title = "Categories"; ObjectID = "9S1-fB-bKZ"; */
"9S1-fB-bKZ.title" = "Kategorier";
@@ -107,12 +106,18 @@
/* Class = "NSToolbarItem"; paletteLabel = "Navigation"; ObjectID = "CEb-sx-e3H"; */
"CEb-sx-e3H.paletteLabel" = "Navigering";
/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "Ef8-fO-Dm6"; */
"Ef8-fO-Dm6.title" = "Password:";
/* Class = "NSToolbarItem"; label = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.label" = "Kategorier";
/* Class = "NSToolbarItem"; paletteLabel = "Categories"; ObjectID = "G2X-M7-NVB"; */
"G2X-M7-NVB.paletteLabel" = "Kategorier";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "Rl8-0j-Dpu"; */
"Rl8-0j-Dpu.title" = "Text Cell";
/* Class = "NSToolbarItem"; label = "My Items"; ObjectID = "Uby-CQ-lvU"; */
"Uby-CQ-lvU.label" = "Mina objekt";
@@ -122,6 +127,12 @@
/* Class = "NSMenuItem"; title = "Software"; ObjectID = "VYO-og-DRc"; */
"VYO-og-DRc.title" = "Programvara";
/* Class = "NSWindow"; title = "Log"; ObjectID = "X5I-7f-aJs"; */
"X5I-7f-aJs.title" = "Log";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "a1e-6Q-iNS"; */
"a1e-6Q-iNS.title" = "Text Cell";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Stäng";
@@ -1,88 +0,0 @@
Optional items
item: installed?
installed version less than offered version?
uninstallable?
in SelfServeManifest managed_installs?
in SelfServeManifest managed_uninstalls?
licensed_seats_available?
enough available disk space? (this check should be done when the user clicks "Install")
Initial state:
installed?
yes:
in managed_uninstalls?
yes:
status: will-be-removed
no:
installed version >= offered version?
yes:
uninstallable?
yes:
status: installed-not-removable
no:
status: installed
no:
in managed_installs?
yes:
item in managed_updates?
yes:
status: update-must-be-installed (this one is new!)
no:
status: update-will-be-installed
no:
status: update-available
no:
in managed_installs?
yes:
status: will-be-installed
no:
licensed_seats_available?
yes:
status: not-installed
no:
status: no-licenses-available
Action, new status for state:
will-be-removed: action: cancel-removal; new state: installed (remove from managed_uninstalls. Add to managed_installs?)
installed-not-removable: N/A
installed: action: remove; new state: will-be-removed (add to managed_uninstalls)
update-must-be-installed: N/A
update-will-be-installed: action: cancel-update; new state: update-available (remove from managed_installs) [is it clear this cancels all future updates?]
update-available: action: install-update; new state: update-will-be-installed (add to managed_installs)
will-be-installed: action: cancel-install; new state: not-installed (remove from managed_installs)
not-installed: action: install; new state: will-be-installed (add to managed_installs)
no-licenses-available: N/A
The only ambiguous one is canceling a scheduled removal. Do we or do we not add the item to managed_installs?
It seems the "correct" answer depends on the initial state -- was the item in managed_installs as initial state?
If so, we should re-add it; otherwise, no.
There's a slight issue there, though:
Consider: Item is in managed_installs. user chooses to remove it, but for some reason does not proceed with the actual removal, but just quits MSU.app.
On the next launch, initial state is that the item is in managed_uninstalls.
So now when we cancel the removal, we just remove it from managed_uninstalls without re-adding it to managed_installs.
This argues for a consistent behavior: simply remove it from managed_uninstalls in all cases, and never (re-)add it to managed_installs.
(or possibly, one could argue, always remove from managed_uninstalls and add to managed_installs)
This means that if you have a managed optional_install, decide to remove it, then cancel that removal, you are left with an unmanaged app;
which means no more automatic updates for that app unless it's in managed_updates or the user re-adds it to managed_installs.
Alternately, you have something not managed, decide to remove it, then cancel that removal -- the item is now managed.
Not sure which is worse.
More data: MSU.app writes its updated/changed Self-Service Manifest to /Users/Shared/.SelfServeManifest (note: that has been a problem in the past when some admin has removed /Users/Shared or removed write rights -- we need to test for this and issue appropriate warning, or use /tmp as a backup location?)
managedsoftwareupdate copies this to (/Library/Managed Installs/)manifests/SelfServeManifest when it runs. So we might be able to recover the "original" state for the item even between runs, as long as managedsoftwareupdate hasn't run in the meantime.
This seems too complicated and hard to understand later when things don't always behave the same way.
Still think we should settle on a single, consistent behavior.
Also, should not write out the changed /Users/Shared/.SelfServeManifest on each change -- only at quit or when the user clicks "update now" for the pending updates. (And maybe only if it has changed?)
Otherwise managedsoftwareupdate could do unexpected things underneath us.
If /Users/Shared/.SelfServeManifest != /Library/Managed Installs/manifests/SelfServeManifest, then we need to run an updatecheck before proceeding to install
@@ -1,280 +0,0 @@
<?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>AppleUpdates</key>
<array>
<dict>
<key>apple_product_name</key>
<string>Remote Desktop Client Update</string>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta name="Generator" content="Cocoa HTML Writer"&gt;
&lt;meta name="CocoaVersion" content="1138.47"&gt;
&lt;style type="text/css"&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Lucida Grande'}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Lucida Grande'; min-height: 13.0px}
span.s1 {text-decoration: underline ; color: #0000ee}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p class="p1"&gt;The 3.7.1 update is recommended for all Apple Remote Desktop clients and addresses several issues related to overall reliability, usability and compatibility.  &lt;/p&gt;
&lt;p class="p2"&gt;&lt;br&gt;&lt;/p&gt;
&lt;p class="p1"&gt;For detailed information on this update, please visit this website: &lt;a href="http://support.apple.com/kb/HT6045"&gt;&lt;span class="s1"&gt;http://support.apple.com/kb/HT6045&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>Remote Desktop Client Update</string>
<key>installed_size</key>
<integer>4677</integer>
<key>name</key>
<string>RemoteDesktopClient</string>
<key>productKey</key>
<string>031-1609</string>
<key>version_to_install</key>
<string>3.7.1</string>
</dict>
<dict>
<key>apple_product_name</key>
<string>iTunes</string>
<key>blocking_applications</key>
<array>
<string>iTunes.app/Contents/MacOS/iTunes</string>
</array>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta name="Generator" content="Cocoa HTML Writer"&gt;
&lt;meta name="CocoaVersion" content="1214.11"&gt;
&lt;style type="text/css"&gt;
p.p1 {margin: 0.0px 0.0px 10.0px 0.0px; font: 13.0px 'Helvetica Neue'}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; text-indent: -0.1px; font: 13.0px 'Helvetica Neue'}
p.p3 {margin: 0.0px 0.0px 0.0px 35.9px; text-indent: -35.9px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px}
li.li1 {margin: 0.0px 0.0px 10.0px 0.0px; font: 13.0px 'Helvetica Neue'}
span.s1 {letter-spacing: 0.0px}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;This version of iTunes resolves an issue where the equalizer may not work as expected and improves performance when switching views in large iTunes libraries. This update also includes additional minor bug fixes.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;The previous version of iTunes added support for OS X Mavericks, Arabic, and Hebrew.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;Note: If you are using OS X Mavericks, your book library can now be found in iBooks for Mac.&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;For information on the security content of this update, please visit: &lt;a href="http://support.apple.com/kb/HT1222"&gt;support.apple.com/kb/HT1222&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>iTunes</string>
<key>installed_size</key>
<integer>224202</integer>
<key>name</key>
<string>iTunesX</string>
<key>productKey</key>
<string>zzzz031-1544</string>
<key>version_to_install</key>
<string>11.1.3</string>
</dict>
<dict>
<key>apple_product_name</key>
<string>Migration Assistant Update for Snow Leopard</string>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;style type="text/css"&gt;
body {font: 11.0px Lucida Grande;}
p {margin: 0.0px 0.0px 0.0px 0.0px;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;This update provides compatibility for migrating to a Mac running OS X Mavericks.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>Migration Assistant Update for Snow Leopard</string>
<key>installed_size</key>
<integer>2365</integer>
<key>name</key>
<string>Migration Assistant Update for Snow Leopard</string>
<key>productKey</key>
<string>zzz041-9981</string>
<key>version_to_install</key>
<string>1.1</string>
</dict>
<dict>
<key>apple_product_name</key>
<string>HP Printer Software Update</string>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta name="Generator" content="Cocoa HTML Writer"&gt;
&lt;meta name="CocoaVersion" content="824.41"&gt;
&lt;style type="text/css"&gt;
p.p1 {font: 11.0px Lucida Grande;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p class="p1"&gt;This update installs the latest software for your HP printer or scanner.&lt;/p&gt;
&lt;p class="p1"&gt;For more information about printing and scanning software, see &lt;a href="http://support.apple.com/kb/HT3669"&gt;http://support.apple.com/kb/HT3669&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>HP Printer Software Update</string>
<key>installed_size</key>
<integer>111958</integer>
<key>name</key>
<string>031-0647</string>
<key>productKey</key>
<string>031-0647</string>
<key>version_to_install</key>
<string>2.16.1</string>
</dict>
<dict>
<key>apple_product_name</key>
<string>Safari</string>
<key>blocking_applications</key>
<array>
<string>Safari.app/Contents/MacOS/Safari</string>
</array>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta name="Generator" content="Cocoa HTML Writer"&gt;
&lt;meta name="CocoaVersion" content="1038.36"&gt;
&lt;style type="text/css"&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
span.s1 {text-decoration: underline}
ul.ul1 {list-style-type: disc}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p class="p1"&gt;Safari 6.1 for OS X Mountain Lion contains new features, including:&lt;/p&gt;
&lt;ul class="ul1"&gt;
&lt;li class="li1"&gt;Shared Links. See links shared by people you follow on Twitter.&lt;/li&gt;
&lt;li class="li1"&gt;Sidebar. See your Bookmarks, Reading List, and Shared Links in one convenient place.&lt;/li&gt;
&lt;li class="li1"&gt;One-click bookmarking. Just click the (+) button to the left of the Smart Search Field to add a webpage to your Reading List. Click and hold to add it to the Favorites Bar or to your Bookmarks.&lt;/li&gt;
&lt;li class="li1"&gt;Safari Power Saver. Increase energy efficiency by playing only the plug-in content you want to see.&lt;/li&gt;
&lt;li class="li1"&gt;Third-party data blocking. By default, Safari blocks third-party websites from leaving cookies and other types of data that could be used to track your browsing.&lt;/li&gt;
&lt;li class="li1"&gt;Built-in Yandex Search. Leading Russian search engine Yandex is now an option for Russian users.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="p2"&gt;For detailed information on the security content of this update, please visit: &lt;a href="http://support.apple.com/kb/HT1222"&gt;http://support.apple.com/kb/HT1222&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>Safari</string>
<key>installed_size</key>
<integer>51656</integer>
<key>name</key>
<string>Safari6.1MountainLion</string>
<key>productKey</key>
<string>041-6651</string>
<key>version_to_install</key>
<string>6.1</string>
</dict>
<dict>
<key>RestartAction</key>
<string>RequireRestart</string>
<key>apple_product_name</key>
<string>Security Update 2013-004</string>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;style type="text/css"&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Lucida Grande;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p class="p1"&gt;Security Update 2013-004 is recommended for all users and improves the security of Mac OS X.&lt;/p&gt;
&lt;br /&gt;
&lt;p class="p1"&gt;For information on the security content of this update, please visit this website: &lt;a href="http://support.apple.com/kb/HT1222"&gt;http://support.apple.com/kb/HT1222&lt;/a&gt;.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>Security Update 2013-004</string>
<key>installed_size</key>
<integer>340752</integer>
<key>name</key>
<string>SecUpd2013-004</string>
<key>productKey</key>
<string>zzz091-9765</string>
<key>version_to_install</key>
<string>1.0</string>
</dict>
<dict>
<key>RestartAction</key>
<string>RequireRestart</string>
<key>apple_product_name</key>
<string>OS X Update</string>
<key>description</key>
<string>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;meta http-equiv="Content-Style-Type" content="text/css"&gt;
&lt;title&gt;&lt;/title&gt;
&lt;style type="text/css"&gt;
body {font: 11.0px Lucida Grande;}
p {margin: 0.0px 0.0px 0.0px 0.0px;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;The 10.9.1 update improves the stability and compatibility of your Mac, and is recommended for all OS X Mavericks users.&lt;/p&gt;
&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;This update includes the following fixes:&lt;/p&gt;
&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved support for Gmail in OS X Mail, and fixes for users with custom Gmail settings&lt;/li&gt;
&lt;li&gt;Improves the reliability of Smart Mailboxes and search in Mail&lt;/li&gt;
&lt;li&gt;Fixes an issue that prevented contact groups from working properly in Mail&lt;/li&gt;
&lt;li&gt;Resolves an issue that prevented VoiceOver from speaking sentences that contain emoji&lt;/li&gt;
&lt;li&gt;Updates Shared Links periodically when open in the Safari Sidebar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;For detailed information about this update, please visit: &lt;a href="http://support.apple.com/kb/HT6065"&gt;http://support.apple.com/kb/HT6065&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</string>
<key>display_name</key>
<string>OS X Update</string>
<key>installed_size</key>
<integer>237180</integer>
<key>name</key>
<string>OSXUpd10.9.1</string>
<key>productKey</key>
<string>031-2490</string>
<key>version_to_install</key>
<string>10.9.1</string>
</dict>
</array>
</dict>
</plist>
@@ -1,978 +0,0 @@
<?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>managed_installs</key>
<array>
<dict>
<key>description</key>
<string>Shotgun Software Meta Package</string>
<key>display_name</key>
<string>shotgun</string>
<key>download_kbytes_per_sec</key>
<integer>0</integer>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>1</integer>
<key>installer_item</key>
<string>shotgun-3.0.14.4.12.pkg</string>
<key>installer_item_size</key>
<integer>1</integer>
<key>name</key>
<string>shotgun</string>
<key>requires</key>
<array>
<string>shotgun-javaapi</string>
<string>shotgun-pythonapi</string>
<string>shotgun-browserplugin</string>
</array>
<key>unattended_install</key>
<true/>
<key>version_to_install</key>
<string>3.0.14.4.12</string>
</dict>
<dict>
<key>description</key>
<string>Google's web browser.</string>
<key>display_name</key>
<string>Google Chrome</string>
<key>download_kbytes_per_sec</key>
<integer>0</integer>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>54530</integer>
<key>installer_item</key>
<string>GoogleChrome-32.0.1700.77.dmg</string>
<key>installer_item_size</key>
<integer>54530</integer>
<key>installer_type</key>
<string>copy_from_dmg</string>
<key>installs</key>
<array>
<dict>
<key>CFBundleIdentifier</key>
<string>com.google.Chrome</string>
<key>CFBundleName</key>
<string>Chrome</string>
<key>CFBundleShortVersionString</key>
<string>32.0.1700.77</string>
<key>CFBundleVersion</key>
<string>1700.77</string>
<key>VersionString</key>
<string>32.0.1700.77</string>
<key>minosversion</key>
<string>10.6.0</string>
<key>path</key>
<string>/Applications/Google Chrome.app</string>
<key>type</key>
<string>application</string>
<key>version_comparison_key</key>
<string>CFBundleShortVersionString</string>
</dict>
</array>
<key>items_to_copy</key>
<array>
<dict>
<key>destination_path</key>
<string>/Applications</string>
<key>source_item</key>
<string>Google Chrome.app</string>
</dict>
</array>
<key>name</key>
<string>GoogleChrome</string>
<key>unattended_install</key>
<true/>
<key>version_to_install</key>
<string>32.0.1700.77</string>
</dict>
</array>
<key>managed_updates</key>
<array>
<string>GoogleChrome</string>
<string>dpix</string>
</array>
<key>optional_installs</key>
<array>
<dict>
<key>description</key>
<string>Automated Test Framework</string>
<key>display_name</key>
<string>mentor-2.2.5.0</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>261</integer>
<key>installer_item_size</key>
<integer>261</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>mentor</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.2.5.0</string>
</dict>
<dict>
<key>description</key>
<string>Development tools for Mac OS X and iOS. Xcode 5.0.2 is for Mountain Lion and Mavericks.</string>
<key>display_name</key>
<string>Xcode 5</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>Xcode_5</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>5.0.2</string>
</dict>
<dict>
<key>description</key>
<string>Adobe® Reader® is the global standard for reliably viewing, printing, and commenting on PDF documents. It's the only PDF file viewer that can open and interact with all types of PDF content, including forms and multimedia.</string>
<key>display_name</key>
<string>Adobe Reader</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>78846</integer>
<key>installer_item_size</key>
<integer>78846</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>AdobeReader</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>11.0.06</string>
</dict>
<dict>
<key>description</key>
<string>Browser plug-in for Aspera file transfers.</string>
<key>display_name</key>
<string>Aspera Connect</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>11076</integer>
<key>installer_item_size</key>
<integer>11076</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>AsperaConnect</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>3.1.1</string>
</dict>
<dict>
<key>description</key>
<string>Desktop interface to Jira</string>
<key>display_name</key>
<string>bugreport-2.0.4.0</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>189</integer>
<key>installer_item_size</key>
<integer>189</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>bugreport</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.0.4.0</string>
</dict>
<dict>
<key>description</key>
<string>Web plugin for access to Citrix applications</string>
<key>display_name</key>
<string>Citrix Online Plug-in</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>18649</integer>
<key>installer_item_size</key>
<integer>18649</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>CitrixWebPlugin</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>11.2.0</string>
</dict>
<dict>
<key>description</key>
<string>Alternative remote desktop client for OS X -- connect to Microsoft Terminal Services.</string>
<key>display_name</key>
<string>CoRD</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>3460</integer>
<key>installer_item_size</key>
<integer>3460</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>CoRD</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>0.5.7</string>
</dict>
<dict>
<key>description</key>
<string>Disney Animation application for browsing images, playlists, albums and reviews</string>
<key>display_name</key>
<string>dpix</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>dpix</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>3.22.10.0.12</string>
</dict>
<dict>
<key>description</key>
<string>Search application for Mac -- Spotlight will not search beyond the four walls of your own machine, so if you need to find data out in the /disney universe (or elsewhere), then use EasyFind.</string>
<key>display_name</key>
<string>EasyFind</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>2162</integer>
<key>installer_item_size</key>
<integer>2162</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>EasyFind</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>4.8.1</string>
</dict>
<dict>
<key>description</key>
<string>Disney Animation FAME application</string>
<key>display_name</key>
<string>FAME2</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>21</integer>
<key>installer_item_size</key>
<integer>21</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>FAME2_Network</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.0.0.0.0</string>
</dict>
<dict>
<key>description</key>
<string>Testing version of FAME</string>
<key>display_name</key>
<string>FAME2 Stage</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>21</integer>
<key>installer_item_size</key>
<integer>21</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>FAME2_Stage</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.0.0.0.0</string>
</dict>
<dict>
<key>description</key>
<string>Google's web browser.</string>
<key>display_name</key>
<string>Google Chrome</string>
<key>installed</key>
<true/>
<key>installed_size</key>
<integer>54530</integer>
<key>installer_item_size</key>
<integer>54530</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>GoogleChrome</string>
<key>needs_update</key>
<true/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>32.0.1700.77</string>
</dict>
<dict>
<key>description</key>
<string>Virtual globe, map and geographic information software</string>
<key>display_name</key>
<string>Google Earth</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>43868</integer>
<key>installer_item_size</key>
<integer>43868</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>GoogleEarth</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>7.1</string>
</dict>
<dict>
<key>description</key>
<string>3D design software from Google. Not for production use.</string>
<key>display_name</key>
<string>Google SketchUp</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>39800</integer>
<key>installer_item_size</key>
<integer>39800</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>GoogleSketchUp</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>8.0.3161.0.0</string>
</dict>
<dict>
<key>description</key>
<string>Plugin to enable Google Voice and Video in your browser</string>
<key>display_name</key>
<string>Google Voice and Video plugin</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>GoogleVoiceAndVideoPlugin</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.6.1</string>
</dict>
<dict>
<key>description</key>
<string>Image processing application. Convert formats, crop, resize, etc.</string>
<key>display_name</key>
<string>GraphicConverter</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>19220</integer>
<key>installer_item_size</key>
<integer>19220</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>GraphicConverter</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>5.8.0.0.0</string>
</dict>
<dict>
<key>description</key>
<string>LibreOffice is the free power-packed Open Source personal productivity suite for Windows, Macintosh and Linux, that gives you six feature-rich applications for all your document production and data processing needs: Writer, Calc, Impress, Draw, Math and Base.</string>
<key>display_name</key>
<string>LibreOffice</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>183476</integer>
<key>installer_item_size</key>
<integer>183476</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>LibreOffice</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>3.3.2</string>
</dict>
<dict>
<key>description</key>
<string>Tool used to log dialog recording slates/takes and send audio media to editorial</string>
<key>display_name</key>
<string>lumberjack-1.5.5</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>4148</integer>
<key>installer_item_size</key>
<integer>4148</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>lumberjack</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.5.5</string>
</dict>
<dict>
<key>description</key>
<string>Apps and drivers for the MakerBot 3D printer</string>
<key>display_name</key>
<string>MakerWare Bundle of Awesome</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>MakerWare</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.4.1.35</string>
</dict>
<dict>
<key>description</key>
<string>Remote Desktop connection document for Studio Media Pulse application</string>
<key>display_name</key>
<string>MediaPulse</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>15</integer>
<key>installer_item_size</key>
<integer>15</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>MediaPulse</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.0</string>
</dict>
<dict>
<key>description</key>
<string>Disney Animation tool to convert seconds, feet and frames and do simple calculations</string>
<key>display_name</key>
<string>MickeyCalc</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>116</integer>
<key>installer_item_size</key>
<integer>116</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>MickeyCalc</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>4.1.0</string>
</dict>
<dict>
<key>description</key>
<string>Additional content for modo 701.</string>
<key>display_name</key>
<string>modo 701 Content</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>2038151</integer>
<key>installer_item_size</key>
<integer>2038151</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>modo701content</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.0</string>
</dict>
<dict>
<key>description</key>
<string>Video organization and playback application. Not to be confused with Dpix.</string>
<key>display_name</key>
<string>PIX</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>8373</integer>
<key>installer_item_size</key>
<integer>8373</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>PIX</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.8.1</string>
</dict>
<dict>
<key>description</key>
<string></string>
<key>display_name</key>
<string>Raconteur-3.5.5</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>4456</integer>
<key>installer_item_size</key>
<integer>4456</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>Raconteur</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>3.5.5</string>
</dict>
<dict>
<key>description</key>
<string>Web-browser, advanced e-mail, newsgroup and feed client, IRC chat, and HTML editing made simple -- all your Internet needs in one application.</string>
<key>display_name</key>
<string>Mozilla SeaMonkey</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>22229</integer>
<key>installer_item_size</key>
<integer>22229</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>SeaMonkey</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>2.0.10.0.0</string>
</dict>
<dict>
<key>description</key>
<string>Internet voice and video chat application</string>
<key>display_name</key>
<string>Skype</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>Skype</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>6.12</string>
</dict>
<dict>
<key>description</key>
<string>Editorial integration and publishing tool.</string>
<key>display_name</key>
<string>slingshot-1.2.9</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>547</integer>
<key>installer_item_size</key>
<integer>547</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>Slingshot</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.2.9</string>
</dict>
<dict>
<key>description</key>
<string>TextWrangler is the powerful general purpose text editor, and Unix and server administrator's tool. TextWrangler is the "little brother" to BBEdit, a leading professional HTML and text editor.</string>
<key>display_name</key>
<string>BBEdit</string>
<key>installed</key>
<true/>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>TextWrangler</string>
<key>needs_update</key>
<false/>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>4.5.5</string>
</dict>
<dict>
<key>description</key>
<string>Remote workstation client.</string>
<key>display_name</key>
<string>ThinLinc Client</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>6924</integer>
<key>installer_item_size</key>
<integer>6924</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>ThinLincClient</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>4.1.1</string>
</dict>
<dict>
<key>description</key>
<string>Editorial File transfer tool.</string>
<key>display_name</key>
<string>tracker-1.1.1.14</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>687099</integer>
<key>installer_item_size</key>
<integer>687099</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>Tracker</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.1.1.14</string>
</dict>
<dict>
<key>description</key>
<string>Game player web plugin</string>
<key>display_name</key>
<string>Unity webplayer Plugin</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>6591</integer>
<key>installer_item_size</key>
<integer>6591</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>UnityPlayerPlugin</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>1.0</string>
</dict>
<dict>
<key>description</key>
<string>Driver for Wacom Intous tablets and Cintiq displays.</string>
<key>display_name</key>
<string>Wacom Tablet Driver</string>
<key>installed</key>
<false/>
<key>installed_size</key>
<integer>50983</integer>
<key>installer_item_size</key>
<integer>50983</integer>
<key>licensed_seat_info_available</key>
<false/>
<key>name</key>
<string>WacomTablet</string>
<key>uninstallable</key>
<true/>
<key>version_to_install</key>
<string>6.3.6-4</string>
</dict>
</array>
<key>processed_installs</key>
<array>
<string>Office2011</string>
<string>LocalMCX_Office2011</string>
<string>DA_Office2011_licensing</string>
<string>Office2011_Update</string>
<string>Office2011_Update-14.1.0</string>
<string>FileMakerPro11Advanced</string>
<string>FileMaker11Update</string>
<string>FileMakerPro11Advanced_ODS</string>
<string>Firefox</string>
<string>DA_FirefoxConfig</string>
<string>QuickTimePlayer7</string>
<string>QuickTimmy</string>
<string>Thunderbird</string>
<string>DA_ThunderbirdConfig</string>
<string>TS_EnterprisePortal</string>
<string>RDC</string>
<string>VLC</string>
<string>HewlettPackardPrinterDrivers</string>
<string>XeroxPrinterDrivers</string>
<string>CanonPrinterDrivers</string>
<string>EPSONPrinterDrivers</string>
<string>FlashPlayer</string>
<string>DisableFlash10AutoUpdate</string>
<string>Flip4Mac WMV</string>
<string>Shockwave</string>
<string>Silverlight</string>
<string>XQuartz</string>
<string>DA_MavericksAppStoreConfig</string>
<string>VPNConfigForLion</string>
<string>RSASecurIDMac</string>
<string>DA_Lion_WLAN-TWDC_config</string>
<string>CrashPlanPROeClient</string>
<string>JavaRuntime</string>
<string>DA_pyhostinfo</string>
<string>DA_LionFileVaultAssistant</string>
<string>DA_adminaccount</string>
<string>DA_BluetoothAirportConfig</string>
<string>DA_ColorProfiles_709</string>
<string>DA_ColorProfiles_P3e</string>
<string>DA_ColorProfiles_iMac</string>
<string>DA_rcfiles</string>
<string>DA_CUPSconfig</string>
<string>DA_FileVaultMasterPassword</string>
<string>DA_LibraryFAapplicationsFix</string>
<string>DA_LoginCacheRedirection</string>
<string>DA_loginwindowHooks</string>
<string>DAStartupScripts</string>
<string>DA_LoginItems</string>
<string>DA_loginwindow_options</string>
<string>DA_mobileAccountSetup</string>
<string>DA_NFSconfig</string>
<string>DA_NFSadditions</string>
<string>DA_postfixConfig</string>
<string>DA_ScreenSharingConfig</string>
<string>DA_sshConfig</string>
<string>DAperiodicConfig</string>
<string>DAaccountMigrator</string>
<string>DAloginwindowPictures</string>
<string>DAMunkiAppleSoftwareUpdateConfig</string>
<string>DApopupService</string>
<string>DApsuedoAnacron</string>
<string>DAsearchDomainsSetup</string>
<string>DAsetDVDregionConfig</string>
<string>DASetupAssistant</string>
<string>DATimeDateConfig</string>
<string>DAtrustedCerts</string>
<string>DAupdateHostInfo</string>
<string>DAupdateMachineName</string>
<string>DAuserUmask</string>
<string>munkitools</string>
<string>munkitools_core</string>
<string>munkitools_launchd</string>
<string>munkitools_admin</string>
<string>munkiPostflight</string>
<string>QuotaMonitor</string>
<string>DA_GoogleAppsWebLocs</string>
<string>DisneyAnimationARLslideSaver</string>
<string>freetds</string>
<string>libodbc++</string>
<string>mysql</string>
<string>mysql-connector-odbc</string>
<string>MySQL-python</string>
<string>odbc-config</string>
<string>Perl-DBD-mysql</string>
<string>Perl-DBD-ODBC</string>
<string>postgresql</string>
<string>psqlodbc</string>
<string>pymssql</string>
<string>roll-core</string>
<string>python-jsonrpc</string>
<string>roll-disney</string>
<string>DA_ReceiptForgetter</string>
<string>DA_MoreReceiptsForgetter</string>
<string>boost</string>
<string>img2avid</string>
<string>AAFUtils</string>
<string>audiofile</string>
<string>AAFToolkit</string>
<string>libgsf</string>
<string>glib2</string>
<string>gettext</string>
<string>colorspace</string>
<string>libtiff</string>
<string>libjpeg</string>
<string>ImageToolkit</string>
<string>edihd</string>
<string>python-simplejson</string>
<string>PyQt</string>
<string>qt</string>
<string>sip</string>
<string>python-ldap</string>
<string>jsoncpp</string>
<string>coda</string>
<string>lts</string>
<string>log4cxx</string>
<string>qjson</string>
<string>prodman</string>
<string>python-argparse</string>
<string>pathfinder</string>
<string>fameweb</string>
<string>shotgun</string>
<string>shotgun-javaapi</string>
<string>shotgun-pythonapi</string>
<string>shotgun-browserplugin</string>
<string>SOAPpy</string>
<string>pydtk</string>
<string>python-decorator</string>
<string>python-psycopg2</string>
<string>python-xlwt</string>
<string>python-errorhandler</string>
<string>python-xlrd</string>
<string>pydot</string>
<string>pyparsing</string>
<string>python-pytz</string>
<string>enchant</string>
<string>python-enchant</string>
<string>dwd</string>
<string>qdgui</string>
<string>SeExpr</string>
<string>qdgui-icons</string>
<string>kakadu</string>
<string>kida</string>
<string>python-gdata</string>
<string>xmlto</string>
<string>dshell</string>
<string>DA_iCloudManagement</string>
<string>LocalMCX</string>
<string>LocalMCX_dock</string>
<string>LocalMCX_filevaultlocalaccounts</string>
<string>LocalMCX_loginwindow</string>
<string>LocalMCX_mobileaccounts</string>
<string>LocalMCX_Safari</string>
<string>LocalMCX_screensaver</string>
<string>LocalMCX_securevm</string>
<string>LocalMCX_sidebaritems</string>
<string>LocalMCX_softwareupdateoff</string>
<string>LocalMCX_timemachine</string>
<string>DA_QuickTime7ProLicense</string>
<string>theadminv2</string>
<string>qt-mysql-plugin</string>
<string>TextMate</string>
<string>iLife11_iPhoto</string>
<string>ProKitUpdate</string>
<string>iPhoto9_RAWCameraUpdate</string>
<string>iLife11_iPhotoUpdate</string>
<string>iLife11_iPhotoUpdate-9.1</string>
<string>iLife11_iMovie</string>
<string>iLife11_iMovieUpdate</string>
<string>iWork09</string>
<string>iWork09_Update</string>
<string>AdobePhotoshopCS6Extended</string>
<string>AdobePhotoshopCS6Support_13.0_Update</string>
<string>PhotoshopCameraRaw7_7.0_Update</string>
<string>AdobeExtensionManagerCS6_6.0_Update</string>
<string>PhotoshopCS6Unserializer</string>
<string>AdobeAIR</string>
<string>PSCS6_PaintersWheel</string>
<string>AdobeBridgeCS6_5.0_Update</string>
<string>beancount</string>
<string>DA_beancount_syslog_conf</string>
<string>dplay</string>
<string>OpenEXR</string>
<string>ilmbase</string>
<string>libquicktime</string>
<string>librawloop</string>
<string>glew</string>
<string>GraphicsMagick</string>
<string>jasper</string>
<string>libpng</string>
<string>meander</string>
<string>yajl</string>
<string>corelibs</string>
<string>pkg-config</string>
<string>pkgconfig-disney</string>
<string>python-disney-bootstraps</string>
<string>stereotools</string>
<string>darwin-hack</string>
<string>python-psutil</string>
<string>dplay-plugins</string>
<string>Ptex</string>
<string>ptexutils</string>
<string>disney-darwin-fonts</string>
<string>mediaman</string>
<string>mmuserchown</string>
<string>python-sqlalchemy</string>
<string>python-imaging</string>
<string>python-jsonpickle</string>
<string>dtk</string>
<string>python-demjson</string>
<string>pes</string>
<string>LinkMan</string>
<string>PathFactory</string>
<string>schedule30</string>
<string>lean</string>
<string>python-keynote</string>
<string>Xcode_5</string>
<string>Xcode_5_command_line_tools</string>
<string>TextWrangler</string>
<string>GoogleVoiceAndVideoPlugin</string>
</array>
<key>processed_uninstalls</key>
<array>
<string>Office2008</string>
<string>CiscoVPNClient</string>
<string>DA_HomeSyncPreferencesApp</string>
<string>DApasswordChanger</string>
<string>DAPowerManagement</string>
<string>ARL_DesktopPictures</string>
<string>LocalMCX_LionSetupAssistant</string>
<string>ParallelsDesktop4</string>
<string>AdobePhotoshopCS3</string>
<string>Raconteur_DSA</string>
<string>iWork08</string>
<string>DisneyMonotypeFonts</string>
<string>OmniGrafflePro</string>
<string>OmniOutlinerPro</string>
<string>OmniFocus</string>
<string>Raconteur_SAA</string>
<string>OmniPlan</string>
<string>PainterX</string>
<string>iLife11AppStoreApps</string>
<string>BasilHD</string>
</array>
<key>removals</key>
<array/>
</dict>
</plist>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,16 +0,0 @@
<?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>managed_installs</key>
<array>
<string>GoogleChrome</string>
<string>GoogleVoiceAndVideoPlugin</string>
<string>Skype</string>
<string>TextWrangler</string>
<string>Xcode_5</string>
</array>
<key>managed_uninstalls</key>
<array/>
</dict>
</plist>
@@ -1,42 +0,0 @@
#!/usr/bin/env python
# encoding: utf-8
"""
generate_msu_test_data.py
Created by Greg Neagle on 2014-01-12.
"""
import sys
import os
import plistlib
from random import shuffle, randint
import subprocess
def get_random(the_list):
return the_list
shuffle(the_list)
return the_list[0:randint(0, len(the_list))]
def main():
thisdir = os.path.dirname(os.path.abspath(__file__))
install_info = plistlib.readPlist(os.path.join(thisdir, 'InstallInfo.plist'))
for key in ['managed_installs', 'removals', 'optional_installs']:
install_info[key] = get_random(install_info[key])
plistlib.writePlist(install_info, '/Library/Managed Installs/InstallInfo.plist')
apple_updates = plistlib.readPlist(os.path.join(thisdir, 'AppleUpdates.plist'))
apple_updates['AppleUpdates'] = [] #get_random(apple_updates['AppleUpdates'])
plistlib.writePlist(apple_updates, '/Library/Managed Installs/AppleUpdates.plist')
self_service = plistlib.readPlist(os.path.join(thisdir, 'SelfServeManifest'))
for key in ['managed_installs', 'managed_uninstalls']:
self_service[key] = get_random(self_service[key])
plistlib.writePlist(self_service, '/Library/Managed Installs/manifests/SelfServeManifest')
if __name__ == '__main__':
main()
@@ -9,7 +9,6 @@
/* Begin PBXBuildFile section */
C002ECE51913F6D6003DD155 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C002ECE21913F6D6003DD155 /* Localizable.strings */; };
C00A4C57185FCEC9004EB3B7 /* FoundationPlist.py in Resources */ = {isa = PBXBuildFile; fileRef = C00A4C56185FCEC9004EB3B7 /* FoundationPlist.py */; };
C035275018A9C5BC004A5AE4 /* libpython2.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C035274F18A9C5BC004A5AE4 /* libpython2.6.dylib */; };
C046261E1A00019800AF1E48 /* MainMenu.strings in Resources */ = {isa = PBXBuildFile; fileRef = C002ECE01913F6D6003DD155 /* MainMenu.strings */; };
C05C3CEF188391F200095E65 /* munki.py in Resources */ = {isa = PBXBuildFile; fileRef = C05C3CEE188391F200095E65 /* munki.py */; };
C09004F216CDD84E00BE34CE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C09004F116CDD84E00BE34CE /* Cocoa.framework */; };
@@ -22,6 +21,7 @@
C094B6D61891826700E06897 /* BorderlessWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C094B6D31891826700E06897 /* BorderlessWindow.m */; };
C094B6D71891826700E06897 /* ScaledImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = C094B6D51891826700E06897 /* ScaledImageView.m */; };
C0AE8658186D2DF900C87AE7 /* MunkiStatus.icns in Resources */ = {isa = PBXBuildFile; fileRef = C0AE8657186D2DF900C87AE7 /* MunkiStatus.icns */; };
C0CC54681EEADDB40064A100 /* libpython2.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0CC54671EEADDB40064A100 /* libpython2.7.dylib */; };
C0D67B581CC55BFD009E8C2F /* MSULogWindowController.py in Resources */ = {isa = PBXBuildFile; fileRef = C0D67B571CC55BFD009E8C2F /* MSULogWindowController.py */; };
/* End PBXBuildFile section */
@@ -51,7 +51,6 @@
C02A5D4E1B4DAF8F00A929F4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/MainMenu.strings; sourceTree = "<group>"; };
C02A5D4F1B4DAF9400A929F4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
C02A5D501B4DAF9900A929F4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C035274F18A9C5BC004A5AE4 /* libpython2.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython2.6.dylib; path = ../../../../../../System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib; sourceTree = "<group>"; };
C04626191A00014800AF1E48 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/MainMenu.strings; sourceTree = "<group>"; };
C046261A1A00015600AF1E48 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
C046261C1A00016200AF1E48 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -92,6 +91,7 @@
C094B6D41891826700E06897 /* ScaledImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScaledImageView.h; sourceTree = "<group>"; };
C094B6D51891826700E06897 /* ScaledImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScaledImageView.m; sourceTree = "<group>"; };
C0AE8657186D2DF900C87AE7 /* MunkiStatus.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = MunkiStatus.icns; sourceTree = "<group>"; };
C0CC54671EEADDB40064A100 /* libpython2.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython2.7.dylib; path = /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/libpython2.7.dylib; sourceTree = "<group>"; };
C0D67B571CC55BFD009E8C2F /* MSULogWindowController.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = MSULogWindowController.py; sourceTree = "<group>"; };
E65810B31993C96E00E53A48 /* en_CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_CA; path = en_CA.lproj/Localizable.strings; sourceTree = "<group>"; };
E65810B51993C97500E53A48 /* en_CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_CA; path = en_CA.lproj/MainMenu.strings; sourceTree = "<group>"; };
@@ -113,7 +113,7 @@
buildActionMask = 2147483647;
files = (
C09004F216CDD84E00BE34CE /* Cocoa.framework in Frameworks */,
C035275018A9C5BC004A5AE4 /* libpython2.6.dylib in Frameworks */,
C0CC54681EEADDB40064A100 /* libpython2.7.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -126,7 +126,7 @@
C09004F916CDD84E00BE34CE /* MunkiStatus */,
C09004F016CDD84E00BE34CE /* Frameworks */,
C09004EE16CDD84E00BE34CE /* Products */,
C035274F18A9C5BC004A5AE4 /* libpython2.6.dylib */,
C0CC54671EEADDB40064A100 /* libpython2.7.dylib */,
);
sourceTree = "<group>";
};
@@ -225,9 +225,9 @@
C09004E416CDD84E00BE34CE /* Project object */ = {
isa = PBXProject;
attributes = {
CLASSPREFIX = MT;
CLASSPREFIX = MSC;
LastUpgradeCheck = 0450;
ORGANIZATIONNAME = MacTech;
ORGANIZATIONNAME = "The Munki Project";
};
buildConfigurationList = C09004E716CDD84E00BE34CE /* Build configuration list for PBXProject "MunkiStatus" */;
compatibilityVersion = "Xcode 3.2";
@@ -509,8 +509,9 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
);
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_NAME = MunkiStatus;
WRAPPER_EXTENSION = app;
@@ -532,8 +533,9 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config",
"$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
);
MACOSX_DEPLOYMENT_TARGET = 10.6;
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_NAME = MunkiStatus;
WRAPPER_EXTENSION = app;
};
@@ -453,58 +453,74 @@ def more_localized_strings():
them'''
dummy = NSLocalizedString(u"Starting...", "managedsoftwareupdate message")
dummy = NSLocalizedString(u"Finishing...", "managedsoftwareupdate message")
dummy = NSLocalizedString(u"Performing preflight tasks...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Performing postflight tasks...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Performing preflight tasks...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Performing postflight tasks...", "managedsoftwareupdate message")
dummy = NSLocalizedString(u"Checking for available updates...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Checking for additional changes...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Checking for available updates...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Checking for additional changes...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Software installed or removed requires a restart.",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Waiting for network...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Waiting for network...", "managedsoftwareupdate message")
dummy = NSLocalizedString(u"Done.", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Retrieving list of software for this machine...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Verifying package integrity...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Verifying package integrity...", "managedsoftwareupdate message")
dummy = NSLocalizedString(u"The software was successfully installed.",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"The software was successfully installed.",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Gathering information on installed packages",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Determining which filesystem items to remove",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Removing receipt info",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Nothing to remove.",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Package removal complete.",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Gathering information on installed packages",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Determining which filesystem items to remove",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Removing receipt info", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Nothing to remove.", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Package removal complete.", "managedsoftwareupdate message")
# apple update messages
dummy = NSLocalizedString(
u"Checking for available Apple Software Updates...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Checking Apple Software Update catalog...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Checking Apple Software Update catalog...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Downloading available Apple Software Updates...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Installing available Apple Software Updates...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Installing available Apple Software Updates...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Running Adobe Setup",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Running Adobe Uninstall",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Starting Adobe installer...",
"managedsoftwareupdate message")
dummy = NSLocalizedString(u"Running Adobe Patch Installer",
"managedsoftwareupdate message")
# Adobe install/uninstall messages
dummy = NSLocalizedString(
u"Running Adobe Setup", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Running Adobe Uninstall", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Starting Adobe installer...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Running Adobe Patch Installer", "managedsoftwareupdate message")
# macOS install/upgrade messages
dummy = NSLocalizedString(
u"Starting macOS upgrade...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"Preparing to run macOS Installer...", "managedsoftwareupdate message")
dummy = NSLocalizedString(
u"System will restart and begin upgrade of macOS.",
"managedsoftwareupdate message")
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Udfører preflight-opgaver...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Forbereder afvikling af macOS-installeringsprogrammet...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Fjerner oplysninger om kvittering";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Starter Adobe installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Starter macOS-opgradering...";
/* managedsoftwareupdate message */
"Starting..." = "Starter...";
/* No comment provided by engineer. */
"Starting…" = "Starter…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Systemet vil genstarte og begynde opgradering af macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Installation af software er gennemført.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjælp";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klip";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Vis log";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Update";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Vis log";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindue";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Om Managed Software Update";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stop";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Close";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Führe preflight Aufgaben aus...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Preparing to run macOS Installer...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Entferne Paketquittung";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Starte Adobe Installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "macOS Upgrade wird gestartet...";
/* managedsoftwareupdate message */
"Starting..." = "Starte...";
/* No comment provided by engineer. */
"Starting…" = "Starten…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "System will restart and begin upgrade of macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Die Software wurde erfolgreich installiert.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hilfe";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Ausschneiden";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Protokoll einblenden";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Geführte Softwareaktualisierung";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoomen";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Protokoll einblenden";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenster";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Über Geführte Softwareaktualisierung";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stoppen";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Schließen";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1060" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>
@@ -264,7 +264,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" autosaveColumns="NO" typeSelect="NO" id="YcU-fs-F3z">
<rect key="frame" x="0.0" y="0.0" width="514" height="17"/>
<rect key="frame" x="0.0" y="0.0" width="512" height="17"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Ejecutando los scripts de preinstalación...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Preparando la ejecución del instalador de macOS...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Quitando la información del recibo";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Empezando el instalador de Adobe...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Comenzando actualización de macOS...";
/* managedsoftwareupdate message */
"Starting..." = "Empezando...";
/* No comment provided by engineer. */
"Starting…" = "Empezando…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "El sistema se reiniciará y comenzará la actualización de macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "El software se instaló correctamente.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Ayuda";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Cortar";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Mostrar registro";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Centro de aplicaciones";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Mostrar registro";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ventana";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Acerca de Centro de aplicaciones";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Detener";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Cerrar";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Suoritetaan valmistavia tehtäviä...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Valmistaudutaan käynnistämään macOS-asentaja...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Poistetaan kuitteja";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Käynnistetään Adobe-asentajaa...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Aloitetaan macOS-päivitystä...";
/* managedsoftwareupdate message */
"Starting..." = "Aloitetaan...";
/* No comment provided by engineer. */
"Starting…" = "Aloitetaan…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Tietokone käynnistyy uudelleen ja aloittaa macOS-päivityksen.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Ohjelmiston asennus onnistui.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Ohje";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Leikkaa";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Näytä loki";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Update";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoomaa";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Näytä loki";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Ikkuna";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Tietoja: MunkiStatus";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Pysäytä";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Sulje";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Exécution des tâches d'initialisation...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Installation de macOS en cours de préparation...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Suppression de l'information du reçu";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Démarrage du programme d'installation d'Adobe...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "La mise à jour de macOS démarre...";
/* managedsoftwareupdate message */
"Starting..." = "Démarrage...";
/* No comment provided by engineer. */
"Starting…" = "Démarrage…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Le système va redémarrer et commencer la mise à jour de macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Le logiciel a été installé avec succès.";
@@ -1,25 +1,3 @@
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimiser";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenêtre";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "Mise à jour de logiciels";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "Mise à jour de logiciels";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "À propos de Mise à jour de logiciels";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Aide";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Tout afficher";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Fenêtre";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Copier";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Couper";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Afficher lhistorique";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Centre de gestion des logiciels";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Supprimer";
@@ -74,20 +61,41 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Modifier";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimiser";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Afficher lhistorique";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fenêtre";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Centre de gestion des logiciels";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMenuPrincipal";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "Mise à jour de logiciels";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "Mise à jour de logiciels";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "À propos de Mise à jour de logiciels";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Arrêter";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "FenetreFond";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Fermer";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -1,4 +1,4 @@
/* managedsoftwareupdate message */
/* managedsoftwareupdate message */
"Checking Apple Software Update catalog..." = "Controllo catalogo Aggiornamenti Software Apple...";
/* managedsoftwareupdate message */
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Controllo pre-installazione in corso...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Preparazione all'avvio di macOS Installer...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Rimozione info in corso";
@@ -47,7 +50,7 @@
"Restart" = "Riavvio";
/* No comment provided by engineer. */
"Restart Required" = "Restart Required";
"Restart Required" = "Riavvio Necessario";
/* managedsoftwareupdate message */
"Retrieving list of software for this machine..." = "Recupero la lista delle applicazioni per questo mac...";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Avvio Adobe installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Inizio aggiornamento macOS...";
/* managedsoftwareupdate message */
"Starting..." = "Avvio...";
/* No comment provided by engineer. */
"Starting…" = "Avvio…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Il sistema si riavvierà e inizierà l'aggiornamento di macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "L'applicazione è stata installata con successo.";
@@ -84,4 +93,3 @@
/* managedsoftwareupdate message */
"Waiting for network..." = "In attesa del network...";
@@ -1,25 +1,3 @@

/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Window";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimize";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Window";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "MunkiStatus";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "MunkiStatus";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "About MunkiStatus";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Help";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "Show All";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "Window";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "Copy";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Cut";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Mostra log";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "Delete";
@@ -74,20 +61,41 @@
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "Edit";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "Minimize";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Mostra log";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Window";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Centro Gestione Applicazioni";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "MunkiStatus";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "MunkiStatus";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "About MunkiStatus";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stop";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Close";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "preflightタスクを実行中…";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "macOSインストーラーの実行を準備中...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Receipt情報を削除中です";
@@ -64,18 +67,24 @@
/* managedsoftwareupdate message */
"Software installed or removed requires a restart." = "再起動を必要とするソフトウエアをインストールまたは削除しました";
/* Restart Required alert detail */
/* No comment provided by engineer. */
"Software installed or removed requires a restart. You will have a chance to save open documents." = "再起動を必要とするソフトウエアをインストールまたは削除しました。現在使用中のドキュメントの保存ができます。";
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Adobeインストーラーを開始…";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "macOSアップグレードの開始...";
/* managedsoftwareupdate message */
"Starting..." = "開始…";
/* No comment provided by engineer. */
"Starting…" = "開始…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "システムを再起動し、macOSアップグレードを開始します。";
/* managedsoftwareupdate message */
"The software was successfully installed." = "ソフトウェアのインストールが完了しました";
@@ -1,25 +1,3 @@

/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "ウィンドウ";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "しまう";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "ウィンドウ";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "MunkiStatus";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "MunkiStatus";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "MunkiStatusについて";
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "ヘルプ";
@@ -47,6 +25,9 @@
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
"150.title" = "すべてを表示";
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
"19.title" = "ウィンドウ";
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
"197.title" = "コピー";
@@ -56,6 +37,12 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "カット";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "ログを表示";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Center";
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
"202.title" = "削除";
@@ -65,23 +52,50 @@
/* Class = "NSMenu"; title = "Edit"; ObjectID = "205"; */
"205.title" = "編集";
/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "207"; */
"207.title" = "Undo";
/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "215"; */
"215.title" = "Redo";
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
"217.title" = "編集";
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
"23.title" = "しまう";
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "ズーム";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "ログを表示";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "ウィンドウ";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Center";
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
"29.title" = "AMainMenu";
/* Class = "NSMenuItem"; title = "MunkiStatus"; ObjectID = "56"; */
"56.title" = "MunkiStatus";
/* Class = "NSMenu"; title = "MunkiStatus"; ObjectID = "57"; */
"57.title" = "MunkiStatus";
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "MunkiStatusについて";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "停止";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "閉じる";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Utfører preflight-oppgaver...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Forbereder å kjøre macOS-installeringsprogrammet...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Fjerner opplysninger om kvittering";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Starter Adobe installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Starter macOS-oppgradering...";
/* managedsoftwareupdate message */
"Starting..." = "Starter...";
/* No comment provided by engineer. */
"Starting…" = "Starter…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Systemet vil gjøre en omstart og begynne oppgraderingen av macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Installasjon av programvaren er fullført.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjelp";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klipp ut";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Vis logg";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Center";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zoom";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Vis logg";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Vindu";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Om MunkiStatus";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stop";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Close";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Preflight taken afhandelen...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "MacOS installatieprogramma voorbereiden...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Receipt informatie verwijderen";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Adobe installer opstarten...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Beginnen met macOS upgrade...";
/* managedsoftwareupdate message */
"Starting..." = "Beginnen...";
/* No comment provided by engineer. */
"Starting…" = "Beginnen…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Systeem zal herstarten en de upgrade van macOS starten.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "De software is succesvol geïnstalleerd.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Help";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Knip";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Toon logbestand";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Center";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Vergroot/verklein";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Toon logbestand";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Venster";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Over MunkiStatus";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stop";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Sluit";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Выполнение предварительных задач...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Пoдготовка запуска Программы Установки macOS...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Удаление квитанции";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Запуск Adobe installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Запуск обновление для macOS...";
/* managedsoftwareupdate message */
"Starting..." = "Запуск...";
/* No comment provided by engineer. */
"Starting…" = "Запуск…";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Система перегрузится и начнет обновление macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Программное обеспечение было успешно установлено.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Справка";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Вырезать";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Показать журнал";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Управление обновлением ПО";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Изменить масштаб";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Показать журнал";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Окно";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Об Управением обновлением ПО";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stop";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Close";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
@@ -40,6 +40,9 @@
/* managedsoftwareupdate message */
"Performing preflight tasks..." = "Förbereder...";
/* managedsoftwareupdate message */
"Preparing to run macOS Installer..." = "Förbereder macOS-installeraren...";
/* managedsoftwareupdate message */
"Removing receipt info" = "Tar bort kvitto";
@@ -70,12 +73,18 @@
/* managedsoftwareupdate message */
"Starting Adobe installer..." = "Startar Adobe installer...";
/* managedsoftwareupdate message */
"Starting macOS upgrade..." = "Påbörjar macOS-uppgradering...";
/* managedsoftwareupdate message */
"Starting..." = "Startar...";
/* No comment provided by engineer. */
"Starting…" = "Startar...";
/* managedsoftwareupdate message */
"System will restart and begin upgrade of macOS." = "Datorn kommer att starta om och börja uppgradera macOS.";
/* managedsoftwareupdate message */
"The software was successfully installed." = "Programvaran installerades.";
@@ -1,4 +1,4 @@
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "103"; */
"103.title" = "Hjälp";
/* Class = "NSMenu"; title = "Help"; ObjectID = "106"; */
@@ -37,6 +37,9 @@
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
"199.title" = "Klipp ut";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Visa logg";
/* Class = "NSWindow"; title = "Managed Software Center"; ObjectID = "1Nd-E7-vfR"; */
"1Nd-E7-vfR.title" = "Managed Software Center";
@@ -64,9 +67,6 @@
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
"239.title" = "Zooma";
/* Class = "NSMenuItem"; title = "Show Log"; ObjectID = "1B8-Pq-rf7"; */
"1B8-Pq-rf7.title" = "Visa logg";
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
"24.title" = "Fönster";
@@ -82,11 +82,20 @@
/* Class = "NSMenuItem"; title = "About MunkiStatus"; ObjectID = "58"; */
"58.title" = "Om MunkiStatus";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "8Nl-My-27d"; */
"8Nl-My-27d.title" = "Text Cell";
/* Class = "NSWindow"; title = "Log"; ObjectID = "LgH-P6-zEw"; */
"LgH-P6-zEw.title" = "Log";
/* Class = "NSButtonCell"; title = "Stop"; ObjectID = "M20-JG-Pmr"; */
"M20-JG-Pmr.title" = "Stopp";
/* Class = "BorderlessWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
/* Class = "NSWindow"; title = "BackdropWindow"; ObjectID = "VCy-58-vwp"; */
"VCy-58-vwp.title" = "BackdropWindow";
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "bd5-IY-BXv"; */
"bd5-IY-BXv.title" = "Stäng";
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "nGI-3K-7Wv"; */
"nGI-3K-7Wv.title" = "Text Cell";
+12
View File
@@ -0,0 +1,12 @@
# .DS_Store files!
.DS_Store
# don't track .pyc files
*.pyc
# Xcode 5 user data
*.xcodeproj/project.xcworkspace/
*.xcodeproj/xcuserdata/
# build dir
build/
@@ -0,0 +1,428 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
C081D8B91E5F4F5E00323D9C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C081D8B81E5F4F5E00323D9C /* AppDelegate.m */; };
C081D8BC1E5F4F5E00323D9C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C081D8BB1E5F4F5E00323D9C /* main.m */; };
C081D8BE1E5F4F5E00323D9C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C081D8BD1E5F4F5E00323D9C /* Assets.xcassets */; };
C081D8C11E5F4F5E00323D9C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C081D8BF1E5F4F5E00323D9C /* MainMenu.xib */; };
C081D8C91E5F5F2500323D9C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C081D8C81E5F5F2500323D9C /* Cocoa.framework */; };
C081D8CE1E60A82600323D9C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C081D8D01E60A82600323D9C /* Localizable.strings */; };
C081D8D41E60A82600323D9C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C081D8D61E60A82600323D9C /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
C01F29471E64D1010057F5E8 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F29481E64D1010057F5E8 /* da */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = da; path = da.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F29491E64D1010057F5E8 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = de.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294A1E64D1020057F5E8 /* es */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = es; path = es.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294B1E64D1020057F5E8 /* fi */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fi; path = fi.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294C1E64D1020057F5E8 /* it */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = it; path = it.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294D1E64D1020057F5E8 /* ja */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ja; path = ja.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294E1E64D1020057F5E8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F294F1E64D1030057F5E8 /* nb */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = nb; path = nb.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F29501E64D1030057F5E8 /* nl */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = nl; path = nl.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F29511E64D1030057F5E8 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/MainMenu.xib; sourceTree = "<group>"; };
C01F29521E64D1030057F5E8 /* sv */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = sv; path = sv.lproj/MainMenu.xib; sourceTree = "<group>"; };
C06BD1761E60B35800CB208E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C06BD1771E60B35800CB208E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
C081D8B41E5F4F5E00323D9C /* munki-notifier.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "munki-notifier.app"; sourceTree = BUILT_PRODUCTS_DIR; };
C081D8B71E5F4F5E00323D9C /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
C081D8B81E5F4F5E00323D9C /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
C081D8BB1E5F4F5E00323D9C /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
C081D8BD1E5F4F5E00323D9C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
C081D8C81E5F5F2500323D9C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
C081D8CF1E60A82600323D9C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
C081D8D51E60A82600323D9C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C081D8D71E60A95000323D9C /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = "<group>"; };
C081D8D91E60A95000323D9C /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C081D8DA1E60AAFA00323D9C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
C081D8DC1E60AAFA00323D9C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891D901E60B3C5001446D5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891D911E60B3C5001446D5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891D971E60B3F0001446D5 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891D981E60B3F0001446D5 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891D9D1E60B40A001446D5 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891D9E1E60B40A001446D5 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DAD1E60B44E001446D5 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DAE1E60B454001446D5 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891DAF1E60B473001446D5 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891DB01E60B473001446D5 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DB91E60B4D4001446D5 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891DBA1E60B4DE001446D5 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DBB1E60B4F1001446D5 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891DBC1E60B4F1001446D5 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DC11E60B527001446D5 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };
C0891DC21E60B527001446D5 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
C0891DCB1E60B972001446D5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
C081D8B11E5F4F5E00323D9C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C081D8C91E5F5F2500323D9C /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
C081D8AB1E5F4F5E00323D9C = {
isa = PBXGroup;
children = (
C081D8CA1E5F5F5000323D9C /* Frameworks */,
C081D8B61E5F4F5E00323D9C /* munki-notifier */,
C081D8B51E5F4F5E00323D9C /* Products */,
);
sourceTree = "<group>";
};
C081D8B51E5F4F5E00323D9C /* Products */ = {
isa = PBXGroup;
children = (
C081D8B41E5F4F5E00323D9C /* munki-notifier.app */,
);
name = Products;
sourceTree = "<group>";
};
C081D8B61E5F4F5E00323D9C /* munki-notifier */ = {
isa = PBXGroup;
children = (
C081D8B71E5F4F5E00323D9C /* AppDelegate.h */,
C081D8B81E5F4F5E00323D9C /* AppDelegate.m */,
C081D8BA1E5F4F5E00323D9C /* Supporting Files */,
);
path = "munki-notifier";
sourceTree = "<group>";
};
C081D8BA1E5F4F5E00323D9C /* Supporting Files */ = {
isa = PBXGroup;
children = (
C081D8D61E60A82600323D9C /* InfoPlist.strings */,
C081D8D01E60A82600323D9C /* Localizable.strings */,
C081D8BD1E5F4F5E00323D9C /* Assets.xcassets */,
C081D8BF1E5F4F5E00323D9C /* MainMenu.xib */,
C0891DCB1E60B972001446D5 /* Info.plist */,
C081D8BB1E5F4F5E00323D9C /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
C081D8CA1E5F5F5000323D9C /* Frameworks */ = {
isa = PBXGroup;
children = (
C081D8CB1E5F5F6A00323D9C /* Other Frameworks */,
C081D8C81E5F5F2500323D9C /* Cocoa.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
C081D8CB1E5F5F6A00323D9C /* Other Frameworks */ = {
isa = PBXGroup;
children = (
);
name = "Other Frameworks";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
C081D8B31E5F4F5E00323D9C /* munki-notifier */ = {
isa = PBXNativeTarget;
buildConfigurationList = C081D8C51E5F4F5E00323D9C /* Build configuration list for PBXNativeTarget "munki-notifier" */;
buildPhases = (
C081D8B01E5F4F5E00323D9C /* Sources */,
C081D8B11E5F4F5E00323D9C /* Frameworks */,
C081D8B21E5F4F5E00323D9C /* Resources */,
C02B7AA11E63676E00B206D4 /* Append build number to version */,
);
buildRules = (
);
dependencies = (
);
name = "munki-notifier";
productName = "munki-notifier";
productReference = C081D8B41E5F4F5E00323D9C /* munki-notifier.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
C081D8AC1E5F4F5E00323D9C /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0730;
ORGANIZATIONNAME = "The Munki Project";
TargetAttributes = {
C081D8B31E5F4F5E00323D9C = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = C081D8AF1E5F4F5E00323D9C /* Build configuration list for PBXProject "munki-notifier" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
es,
fi,
it,
ja,
fr,
nb,
nl,
ru,
sv,
);
mainGroup = C081D8AB1E5F4F5E00323D9C;
productRefGroup = C081D8B51E5F4F5E00323D9C /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
C081D8B31E5F4F5E00323D9C /* munki-notifier */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
C081D8B21E5F4F5E00323D9C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
C081D8BE1E5F4F5E00323D9C /* Assets.xcassets in Resources */,
C081D8D41E60A82600323D9C /* InfoPlist.strings in Resources */,
C081D8CE1E60A82600323D9C /* Localizable.strings in Resources */,
C081D8C11E5F4F5E00323D9C /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
C02B7AA11E63676E00B206D4 /* Append build number to version */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Append build number to version";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# add this number to Git revision index to get \"build\" number consistent with old SVN repo\nMAGICNUMBER=482\n\nBASEVERNUM=`/usr/libexec/PlistBuddy -c \"Print :CFBundleShortVersionString\" \"${INFOPLIST_FILE}\"`\n\n# Git isn't installed on 10.6 or earlier by default, so find it\nGIT=`which git`\nif [ \"$GIT\" == \"\" ] ; then\n# let's hope it's in /usr/local/bin\nif [ -x \"/usr/local/bin/git\" ] ; then\nGIT=/usr/local/bin/git\nfi\nfi\n\nif [ \"$GIT\" != \"\" ] ; then\n# generate a psuedo-svn revision number from the list of Git revisions\nGITREV=`$GIT log -n1 --format=\"%H\" -- ./`\nGITREVINDEX=`$GIT rev-list --count $GITREV`\nREV=$(($GITREVINDEX + $MAGICNUMBER))\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $BASEVERNUM.$REV\" \"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\"\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $REV\" \"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\"\n/usr/libexec/PlistBuddy -c \"Set :GitRevision string $GITREV\" \"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\"\nfi";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
C081D8B01E5F4F5E00323D9C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
C081D8BC1E5F4F5E00323D9C /* main.m in Sources */,
C081D8B91E5F4F5E00323D9C /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
C081D8BF1E5F4F5E00323D9C /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
C01F29471E64D1010057F5E8 /* en */,
C01F29481E64D1010057F5E8 /* da */,
C01F29491E64D1010057F5E8 /* de */,
C01F294A1E64D1020057F5E8 /* es */,
C01F294B1E64D1020057F5E8 /* fi */,
C01F294C1E64D1020057F5E8 /* it */,
C01F294D1E64D1020057F5E8 /* ja */,
C01F294E1E64D1020057F5E8 /* fr */,
C01F294F1E64D1030057F5E8 /* nb */,
C01F29501E64D1030057F5E8 /* nl */,
C01F29511E64D1030057F5E8 /* ru */,
C01F29521E64D1030057F5E8 /* sv */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
C081D8D01E60A82600323D9C /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
C081D8CF1E60A82600323D9C /* en */,
C081D8D71E60A95000323D9C /* da */,
C081D8DA1E60AAFA00323D9C /* de */,
C06BD1771E60B35800CB208E /* es */,
C0891D911E60B3C5001446D5 /* fi */,
C0891D981E60B3F0001446D5 /* it */,
C0891D9E1E60B40A001446D5 /* ja */,
C0891DAD1E60B44E001446D5 /* fr */,
C0891DB01E60B473001446D5 /* nb */,
C0891DBA1E60B4DE001446D5 /* nl */,
C0891DBC1E60B4F1001446D5 /* ru */,
C0891DC21E60B527001446D5 /* sv */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
C081D8D61E60A82600323D9C /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
C081D8D51E60A82600323D9C /* en */,
C081D8D91E60A95000323D9C /* da */,
C081D8DC1E60AAFA00323D9C /* de */,
C06BD1761E60B35800CB208E /* es */,
C0891D901E60B3C5001446D5 /* fi */,
C0891D971E60B3F0001446D5 /* it */,
C0891D9D1E60B40A001446D5 /* ja */,
C0891DAE1E60B454001446D5 /* fr */,
C0891DAF1E60B473001446D5 /* nb */,
C0891DB91E60B4D4001446D5 /* nl */,
C0891DBB1E60B4F1001446D5 /* ru */,
C0891DC11E60B527001446D5 /* sv */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
C081D8C31E5F4F5E00323D9C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
C081D8C41E5F4F5E00323D9C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
C081D8C61E5F4F5E00323D9C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "munki-notifier/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = "com.googlecode.munki.munki-notifier";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
C081D8C71E5F4F5E00323D9C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "munki-notifier/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = "com.googlecode.munki.munki-notifier";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
C081D8AF1E5F4F5E00323D9C /* Build configuration list for PBXProject "munki-notifier" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C081D8C31E5F4F5E00323D9C /* Debug */,
C081D8C41E5F4F5E00323D9C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C081D8C51E5F4F5E00323D9C /* Build configuration list for PBXNativeTarget "munki-notifier" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C081D8C61E5F4F5E00323D9C /* Debug */,
C081D8C71E5F4F5E00323D9C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = C081D8AC1E5F4F5E00323D9C /* Project object */;
}
@@ -0,0 +1,12 @@
//
// AppDelegate.h
// munki-notifier
//
// Created by Greg Neagle on 2/23/17.
// Copyright © 2017 The Munki Project. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
@end
@@ -0,0 +1,290 @@
//
// AppDelegate.m
// munki-notifier
//
// Created by Greg Neagle on 2/23/17.
// Copyright © 2017 The Munki Project. All rights reserved.
// Much code lifted and adapted from https://github.com/julienXX/terminal-notifier
//
#import "AppDelegate.h"
#import <objc/runtime.h>
#include <CoreFoundation/CoreFoundation.h>
NSString * const MunkiNotifyBundleID = @"com.googlecode.munki.munki-notify";
NSString * const ManagedSoftwareCenterBundleID = @"com.googlecode.munki.ManagedSoftwareCenter";
NSString * const NotificationCenterUIBundleID = @"com.apple.notificationcenterui";
NSString * const MunkiUpdatesURL = @"munki://updates";
long const DefaultUseNotificationCenterDays = 3;
NSString *_fakeBundleIdentifier = nil;
@implementation NSBundle (FakeBundleIdentifier)
// Overriding bundleIdentifier works, but overriding NSUserNotificationAlertStyle does not work.
- (NSString *)__bundleIdentifier;
{
if (self == [NSBundle mainBundle]) {
return _fakeBundleIdentifier ? _fakeBundleIdentifier : MunkiNotifyBundleID;
} else {
return [self __bundleIdentifier];
}
}
@end
static BOOL
InstallFakeBundleIdentifierHook()
{
Class class = objc_getClass("NSBundle");
if (class) {
method_exchangeImplementations(
class_getInstanceMethod(class, @selector(bundleIdentifier)),
class_getInstanceMethod(class, @selector(__bundleIdentifier)));
return YES;
}
return NO;
}
void launchMSCapp()
{
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath: @"/Applications/Managed Software Center.app"]) {
[[NSWorkspace sharedWorkspace] launchApplication: @"/Applications/Managed Software Center.app"];
} else {
// just let LaunchServices find it and launch it for us
[[NSWorkspace sharedWorkspace] launchApplication: @"Managed Software Center.app"];
}
}
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification;
{
if (floor(kCFCoreFoundationVersionNumber) < kCFCoreFoundationVersionNumber10_8) {
// we are running on something earlier than 10.8. Just launch MSC.app and quit.
launchMSCapp();
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: MunkiUpdatesURL]];
[NSApp terminate: self];
return;
}
NSUserNotification *userNotification = notification.userInfo[
NSApplicationLaunchUserNotificationKey];
if (userNotification) {
[self userActivatedNotification:userNotification];
[NSApp terminate: self];
} else {
// Do we have a running NotificationCenter?
NSArray *runningProcesses = [[[NSWorkspace sharedWorkspace] runningApplications]
valueForKey:@"bundleIdentifier"];
BOOL notificationCenterAvailable = ([runningProcesses indexOfObject:NotificationCenterUIBundleID]
!= NSNotFound);
if (notificationCenterAvailable) {
// Install the fake bundle ID hook so we can fake the sender. This also
// needs to be done to be able to remove a message.
@autoreleasepool {
if (InstallFakeBundleIdentifierHook()) {
_fakeBundleIdentifier = ManagedSoftwareCenterBundleID;
}
}
}
// get count of pending updates, oldest update days and any forced update due date
// from Munki's preferences
CFPropertyListRef plistRef = nil;
long updateCount = 0;
float oldestUpdateDays = 0;
long useNotificationCenterDays = DefaultUseNotificationCenterDays;
NSDate *forcedUpdateDueDate = nil;
CFPreferencesAppSynchronize(CFSTR("ManagedInstalls"));
plistRef = CFPreferencesCopyValue(
CFSTR("PendingUpdateCount"), CFSTR("ManagedInstalls"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
if (plistRef && CFGetTypeID(plistRef) == CFNumberGetTypeID()) {
updateCount = [(NSNumber *)CFBridgingRelease(plistRef) integerValue];
}
plistRef = CFPreferencesCopyValue(
CFSTR("OldestUpdateDays"), CFSTR("ManagedInstalls"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
if (plistRef && CFGetTypeID(plistRef) == CFNumberGetTypeID()) {
oldestUpdateDays = [(NSNumber *)CFBridgingRelease(plistRef) floatValue];
}
plistRef = CFPreferencesCopyValue(
CFSTR("UseNotificationCenterDays"), CFSTR("ManagedInstalls"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
if (plistRef && CFGetTypeID(plistRef) == CFNumberGetTypeID()) {
useNotificationCenterDays = [(NSNumber *)CFBridgingRelease(plistRef) integerValue];
}
plistRef = CFPreferencesCopyValue(
CFSTR("ForcedUpdateDueDate"), CFSTR("ManagedInstalls"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
if (plistRef && CFGetTypeID(plistRef) == CFDateGetTypeID()) {
forcedUpdateDueDate = (NSDate *)CFBridgingRelease((CFDateRef)plistRef);
}
if (updateCount == 0) {
// no available updates
if (notificationCenterAvailable) {
// clear any previously posted updates available notifications and exit
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
}
[NSApp terminate: self];
return;
}
// updateCount > 0
if (! notificationCenterAvailable || oldestUpdateDays > useNotificationCenterDays) {
// Notification Center is not available or Notification Manager notifications
// are being ignored or suppressed; launch MSC.app and show updates
if (notificationCenterAvailable) {
// clear any previously posted updates available notifications since we are going
// to launch MSC.app
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
}
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: MunkiUpdatesURL]];
[NSApp terminate: self];
return;
}
// We have Notification Center, create and post our notification
// Build a localized update count message
NSString *updateCountMessage = NSLocalizedString(@"1 pending update", @"One Update message");
NSString *multipleUpdatesFormatString = NSLocalizedString(
@"%@ pending updates", @"Multiple Update message");
if (updateCount > 1) {
updateCountMessage = [NSString stringWithFormat:multipleUpdatesFormatString,
[@(updateCount) stringValue]];
}
// Build a localized force install date message
NSString *deadlineMessage = nil;
NSString *deadlineMessageFormatString = NSLocalizedString(
@"One or more items must be installed by %@", @"Forced Install Date summary");
if (forcedUpdateDueDate) {
deadlineMessage = [NSString stringWithFormat:deadlineMessageFormatString,
[self stringFromDate: forcedUpdateDueDate]];
}
// Assemble all our needed notification info
NSString *title = NSLocalizedString(
@"Software updates available", @"Software updates available message");
NSString *subtitle = @"";
NSString *message = updateCountMessage;
if (deadlineMessage) {
subtitle = updateCountMessage;
message = deadlineMessage;
}
// Create options (userInfo) dictionary
NSMutableDictionary *options = [NSMutableDictionary dictionary];
options[@"groupID"] = @"com.googlecode.munki.munki-notifier.update-notification";
options[@"action"] = @"open_url";
options[@"value"] = MunkiUpdatesURL;
// deliver the notification
[self deliverNotificationWithTitle:title
subtitle:subtitle
message:message
options:options
sound:nil];
}
}
- (NSString *)stringFromDate:(NSDate *)date
{
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.formatterBehavior = NSDateFormatterBehavior10_4;
formatter.dateStyle = NSDateFormatterShortStyle;
formatter.timeStyle = NSDateFormatterNoStyle;
formatter.doesRelativeDateFormatting = YES;
formatter.formattingContext = NSFormattingContextDynamic;
return [formatter stringFromDate:date];
}
- (void)deliverNotificationWithTitle:(NSString *)title
subtitle:(NSString *)subtitle
message:(NSString *)message
options:(NSDictionary *)options
sound:(NSString *)sound;
{
// First remove earlier notifications from us
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
// this other way doesn't seem to work reliably.
//if (options[@"groupID"]) [self removeNotificationWithGroupID:options[@"groupID"]];
NSUserNotification *userNotification = [NSUserNotification new];
userNotification.title = title;
if (! [subtitle isEqualToString:@""]) userNotification.subtitle = subtitle;
if (! [message isEqualToString:@""]) userNotification.informativeText = message;
userNotification.userInfo = options;
if (floor(kCFCoreFoundationVersionNumber) > kCFCoreFoundationVersionNumber10_8) {
// We're running on 10.9 or higher
// Attempt to display as alert style (though user can override at any time)
[userNotification setValue:@YES forKey:@"_showsButtons"];
}
userNotification.hasActionButton = true;
userNotification.actionButtonTitle = NSLocalizedString(@"Details", @"Details label");
if (sound != nil) {
userNotification.soundName = [sound isEqualToString: @"default"] ? NSUserNotificationDefaultSoundName : sound;
}
NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
center.delegate = self;
[center deliverNotification:userNotification];
}
// this function does not appear to reliably remove notifications. To further investigate in the future.
- (void)removeNotificationWithGroupID:(NSString *)groupID;
{
NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
for (NSUserNotification *userNotification in center.deliveredNotifications) {
if ([@"ALL" isEqualToString:groupID] || [userNotification.userInfo[@"groupID"] isEqualToString:groupID]) {
[center removeDeliveredNotification:userNotification];
}
}
}
// React to user clicking on notification
- (void)userActivatedNotification:(NSUserNotification *)userNotification;
{
[[NSUserNotificationCenter defaultUserNotificationCenter] removeDeliveredNotification:userNotification];
NSString *action = userNotification.userInfo[@"action"];
NSString *value = userNotification.userInfo[@"value"];
if ([action isEqualToString:@"open_url"]){
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:value]];
} else {
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: MunkiUpdatesURL]];
}
}
// Return YES to present the notification even if MSC.app is frontmost
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center
shouldPresentNotification:(NSUserNotification *)notification;
{
return YES;
}
// Once the notification is delivered we can exit.
- (void)userNotificationCenter:(NSUserNotificationCenter *)center
didDeliverNotification:(NSUserNotification *)notification;
{
[NSApp terminate: self];
}
// handle user clicking on our notification
- (void)userNotificationCenter:(NSUserNotificationCenter *)center
didActivateNotification:(NSUserNotification *)notification
{
[self userActivatedNotification:notification];
[NSApp terminate: self];
}
@end
@@ -0,0 +1,58 @@
{
"images" : [
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -0,0 +1,40 @@
<?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>GitRevision</key>
<string></string>
<key>NSUserNotificationAlertStyle</key>
<string>alert</string>
<key>LSUIElement</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</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 © 2017 The Munki Project. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,14 @@
/* Multiple Update message */
"%@ pending updates" = "%@ opdateringer venter";
/* One Update message */
"1 pending update" = "1 opdatering venter";
/* Details label */
"Details" = "Detaljer";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Et eller flere emner skal installeres senest %@";
/* Software updates available message */
"Software updates available" = "Der er softwareopdateringer";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ anstehende Updates";
/* One Update message */
"1 pending update" = "1 anstehendes Update";
/* Details label */
"Details" = "Details";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Eines oder mehrere Objekte müssen bis %@ installiert werden.";
/* Software updates available message */
"Software updates available" = "Software-Updates verfügbar";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ pending updates";
/* One Update message */
"1 pending update" = "1 pending update";
/* Details label */
"Details" = "Details";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "One or more items must be installed by %@";
/* Software updates available message */
"Software updates available" = "Software updates available";
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ actualizaciones pendiente";
/* One Update message */
"1 pending update" = "1 actualización pendiente";
/* Details label */
"Details" = "Detalles";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Una o mas aplicaciones tienen que ser instaladas para el %@";
/* Software updates available message */
"Software updates available" = "Actualizaciones de software disponibles";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ päivitystä saatavilla";
/* One Update message */
"1 pending update" = "1 päivitys saatavilla";
/* Details label */
"Details" = "Lisätietoja";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Yksi tai useampi kohde täytyy asentaa ennen %@";
/* Software updates available message */
"Software updates available" = "Ohjelmistopäivityksiä saatavilla";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ mises à jour en attente";
/* One Update message */
"1 pending update" = "1 mise à jour en attente";
/* Details label */
"Details" = "Détails";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Un article doit être installé avant le %@";
/* Software updates available message */
"Software updates available" = "Mises à jour logicielles disponibles";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";
@@ -0,0 +1,15 @@
/* Multiple Update message */
"%@ pending updates" = "%@ aggiornamenti in sospeso";
/* One Update message */
"1 pending update" = "1 aggiornamento in sospeso";
/* Details label */
"Details" = "Dettagli";
/* Forced Install Date summary */
"One or more items must be installed by %@" = "Uno o più elementi devono essere installati da %@";
/* Software updates available message */
"Software updates available" = "Aggiornamenti software disponibili";
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="munki-notifier" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="munki-notifier" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About munki-notifier" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide munki-notifier" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit munki-notifier" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
</items>
</menu>
</objects>
</document>
@@ -0,0 +1,3 @@
/* (No Commment) */
"NSHumanReadableCopyright" = "Copyright © 2017 The Munki Project. All rights reserved.";

Some files were not shown because too many files have changed in this diff Show More