Code Monkey home page Code Monkey logo

kaju's Introduction

README

A Xojo module and Admin apps to enable self-updating Xojo apps.

General Information

Kaju is a pull system where the client application gets information from a known URL. It is designed as a series of Xojo classes in a central module and a Window. It is meant to be a single, turnkey solution with minimal involvement by you. In other words, set it up, write the code to call it, then forget about it.

How To Use It

Installation

Open the included Admin App or Test App, copy the Kaju Classes folder, then paste it into your project. Important: Do not drag the folders directly from the directory.

Special Actions

You need to add one property to your App class, UpdateInitiater As Kaju.UpdateInitiater. Kaju expects to find that and will handle it for you.

Important: Kaju does its magic by launching a command-line script when the UpdateInitiater gets set to Nil, which should happen when the app quits. Unfortunately, that's not always true so you should force the issue by inserting App.UpdateInitiater = Nil into your App.Close event.

The only other special code you'll need is in the CancelClose event of any window where the close is actually being cancelled, i.e., where you have the event return True. In those cases, you must call Kaju.CancelUpdate. (It doesn't matter if there is an update scheduled at the time.) This will prevent an update from happening if the user quits later without choosing Quit & Install again. That code should look something like this:

Event CancelClose(appQuitting As Boolean) As Boolean
	// You've determined that you need to cancel the
	// close, so...
	if appQuitting then // This "if" is not strictly necessary
		Kaju.CancelUpdate
	end if
	return true
End Event

If you plan to allow 32-bit to 64-bit updates on Windows and Linux, you must include code that will force the user to manually relaunch the app after such an update.

Important: Due to limitations in the Windows and Linux OS's, a 64-bit app that is launched after an update from the 32-bit version will not work properly. The user must manually start the new app, so your code should warn them and force the app to quit. There is example code in the Kaju Update Test project.

Implementation

Create a new Kaju.UpdateChecker instance and fill in its properties. In the Constructor, you have to provide a FolderItem for a folder where Kaju can save its preferences, one that is unique to your app. At the least, you must also set the ServerPublicRSAKey (more on this later) and the UpdateURL where it will get its update information. If that URL (or any URL) starts with "https:", it will be accessed securely. (Conversely, a URL that does not start with "https:" will be accessed normally.)

Note: Due to changes in the MacOS, accessing an insecure URL will require entries in your app's plist file. For more information, look here.

Call the ExecuteAsync (preferred) or Execute method of the Kaju.UpdateChecker. That's it. Kaju will handle everything else by going to the UpdateURL to see if there are any updates available for that version of the app, then ask the user about them. If the user chooses to update, the class will download and verify the binary, then offer the user the opportunity to Quit & Install or Cancel. If they choose to install, Quit will be called.

Since none of this is modal, the user can continue to use your app with the update window waiting in the background. If they do choose to install, the update window will be sent to the back so it will be closed last.

To discover what UpdateChecker found, you can check the Result property in the ExecuteAsyncComplete event after using ExecuteAsync (preferred) or directly after calling Execute. It returns a value from the Kaju.UpdateChecker.ResultType enum. If there was a connection error with ExecuteAsync check the LastError property too.

ExecuteAsync vs. Execute

Kaju has two ways to start the update process, Kaju.UpdateChecker.ExecuteAsync and Kaju.UpdateChecker.Execute.

Xojo has introduced the URLConnection class, an update to the classic HTTPSocket and HTTPSecureSocket classes. The more modern implementation is preferred and used when you choose ExecuteAsync. The older class is used when you choose the synchronous Execute and set AllowRedirection to False (Unfortunately, the URLConnection class has no way to disallow redirects and we can only fake it in asynchronous mode.)

ExecuteAsync will report its result in the ExecuteAsyncComplete event while Execute will report its results immediately.

If your update information is not on a secure website, it shouldn't matter which you use, but we still recommend ExecuteAsync moving forward.

Minimum OS

Kaju will work the same way on Mac, Windows, and Linux. All recent versions of MacOS and Linux should be supported. Windows Vista and later are supported.

If Kaju cannot find the tools it needs, the Result will be set to UnsupportedOS after you call ExecuteAsync or Execute.

Important: Recent Linus distros do not have the libraries needed to show the HTMLViewer in 32-bit apps. Kaju will report an error in those cases and will not show the release notes, but the update will still work.

What Else?

Required Updates

If you set up a minimum required version in your update information, Kaju may find that a particular update is "required". For example, if the user is using v.1.0 and you've discovered a bug that necessitates an update to at least v.1.1, you would set that as the minimum required version. In the future, even as you release v.1.2, 1.3, etc, you would leave the minimum required as v.1.1 so Kaju knows to force the users of 1.0 to update.

After calling Kaju.UpdateChecker.ExecuteAsync or Kaju.UpdateChecker.Execute, the Result property will tell you if a required update was found. In that case, it's up to you to take special actions to make sure that your app cannot be used until it is updated. To help, there is the Kaju.UpdateChecker.QuitOnCancelIfRequired property that is True by default. If the user tries to cancel a required update, the app will quit.

Other Features

There are other features of Kaju.UpdateChecker that may be helpful. You can control the interface that will be presented to the user through the AllowedInteraction property. You can prevent Kaju from showing an error dialog, the update window, or both. Use the constants within Kaju.UpdateChecker to set this value. Values can be added together for better control (although, as of this writing, there are just the two values).

You can control the types of updates a user may see by setting Kaju.UpdateChecker.AllowedStage. The stage codes are the same as those found in the App class, so setting that property to App.Final means that the user will not see any development, alpha, or beta releases.

If an update was found, the update window will have opened. You can check through the UpdateWindowIsOpen property at any time.

The user can choose to ignore certain versions as long as they are not marked as required. You can set HonorIgnored to False to bypass that temporarily and present even ignored versions to your user, or you can clear the database of ignored versions entirely with the ResetIgnored method.

You may choose to specify an update URL that redirects to another location. By default, Kaju will not allow that, but if you really need to do it, set the Kaju.UpdateChecker.AllowRedirection property to True.

One At A Time

You can create several instances of Kaju.UpdateChecker if you'd like, but only one update can run at any time. If an update is already in progress, ExecuteAsync and Execute won't do anything and will let you know through the Result.

Images

You can set a background image for the window in two places. Within the app, you may set Kaju.UpdateChecker.DefaultImage for any updates that do not specify a specific image. In the Admin app, you may specify a URL to an image for a particular version. For example, if the default image is your app's logo, but a beta should have "beta" stamped across it, you can do that.

You can also set Kaju.UpdateChecker.DefaultUseTransparency or set "Use Transparency" for an image provided through the Admin app. Transparency is set to 50% when True.

An image will cover the entire window without cropping or scaling starting at the upper, left corner. Accordingly, you can provide an entire background image or just an icon.

Within your app, use an Image Set to properly handle HiRes vs. LoRes screens. When providing a URL, set the "Scale" property for the image. For example, the URL points to an image designed for HiRes displays, set the Scale to 2 or 3, as appropriate, and Kaju will scale for LoRes if needed.

Limitations

Kaju does not elevate permissions. If the user does not have write permission for the executable or its parent, ResultType.NoWritePermission will be returned in Kaju.UpdateChecker.Result.

Platform Differences

Kaju will act the same way across platforms except for one point: Since the Mac executable is always one package, it will be replaced entirely. Anything stored within the package that was put there after initial installation will be deleted.

On Windows and Linux, since executable folders can be combined, only the files that are found in the update will be replaced. Any additional files or even older, no-longer-used files, will remain untouched. If you want to make sure some older file is removed by the update, put an empty placeholder into the update package.

Step By Step

  • Copy the Kaju Classes folder into your project.
  • Add to your App instance the property UpdateInitiater As Kaju.UpdateInitiater. In the App.Close event, insert App.UpdateInitiater = Nil. You do not need to do anything more with this property.
  • Run the Kaju Admin app through the included project and save a new document with an appropriate name, something like "MyApp v.1.kaju". You don't have to add any updates at this time.
  • Copy the RSA public key with the appropriate button. A key pair is generated every time a new document is created and it is this key that will ensure that your app is getting legitimate, uncorrupted update information. Do not lose this file after releasing your app! If you do, users of older versions will no longer be able to update.
  • In an appropriate place within your project, add code that looks something like this:
dim updater as new Kaju.UpdateChecker( myAppPrefFolder )
updater.ServerPublicRSAKey = "12345..." // The key you copied from the Admin app
updater.UpdateURL = "http://www...." // Where the update info will be posted

updater.ExecuteAsync
  • If you expect to allow 32-bit to 64-bit updates on Windows or Linux, insert code into App.Open that will force the user to manually restart the app if such an update is detected. See the Kaju Update Test app project code for an example.

At a bare minimum, that's it.

The Admin App

The included Admin app makes it easy to set up your update file. Start it up and use the "+" at the bottom, left to add a version. Fill in the information for the release.

When you're done, save the file, then export the HTML data. It is this exported file that you will post to your web site and the final URL should match the URL you included within your app.

Some Details

Add an entry for each current version of your app. You do not need a history since a user wants to update to the latest and does not need to see every intermediate version (unless there is a reason that you want that).

The release notes are created in HTML and some simple tools are provided for making that a bit easier. You can see a preview of the release notes as a you type and use the Preview button to see how Kaju will present the update window under various circumstances. The HTML can be as simple or as complex as you'd like.

Alternatively, you can pull your release notes from a server by setting the first line to a URL. Anything after the first line will be used as an alternate if the URL can't be reached or has no content. (But note: Older apps with Kaju 1.x will see the text of the release notes including the URL at the top unless that URL is in a comment.)

The two ways to include a URL from which release notes will be pulled:

http://wwww.something.com/my_release_notes

These are the alternate release notes and
the url above will be visible.

or

<!-- http://www.something.com/my_release_notes -->

These are the alternate release notes but
the url above will not be visible because they are
commented (preferred).

Note: WebKit is used on all platforms to ensure consistency. This will increase the size of your project on Windows and Linux.

Links In Release Notes

Links in the release notes will be ignored unless you include target="_blank" as part of the URL. For example, <a href="http://www.example.com" target="_blank">my site</a> will force the link to open in the user's browser.

Binaries

Your compiled apps for each platform must be zipped and named appropriately. For the Mac, zip the application. For the other platforms, zip the folder that contains the executable and supporting folders.

For each version in your admin file, check the checkbox for each platform to which it applies, provide the URL where that binary will be found, then drop each binary onto the appropriate field to calculate its hash. You can also post the binary to your web site, enter the URL, then use the button to calculate the hash from the URL. (It will download the binary, calculate the hash, then delete it.)

Note: If the URL to a binary starts with "https:", a secure connection will be used automatically.

For Windows and Linux, you must also provide the exact name of the executable. If your app is called "My Great App", the Linux executable name will be "My Great App" and the Windows name will be "My Great App.exe".

Note: If you omit this, Kaju will assume the name of the executable that is running the update.

About 64-bit

Kaju will allow you to specify 64-bit versions for Windows and Linux. If available, and if the UpdateChecker.Allow32bitTo64bitUpdates is True, the users of your 32-bit version will be given the option to upgrade to the next version as 64-bit. But see the warning above in that case.

The CLI Admin App

Included in the project is a command-line version of the admin app so you can automate the maintenance of your update file. It will let you do anything that the GUI version will, including creating the Kaju admin file, adding and editing versions, and exporting the update information.

To use it, open the Kaju Admin CLI project, compile it, then, from the command line, type

kaju --help

(I'm assuming you already know how to use command-line utilities.) There are subapps that will let you perform various actions and the top-level help will list those. To get help on a subapp, type

kaju <subapp> --help

The online help should give you all the information you need.

JSON Specs

The update information that you will post will be a JSON file that is generated by the Admin app as an HTML file. We recommend that each version line gets its own folder on your web server.

The JSON will contain these fields for each version.

AppName                        (string)
Version                        (string)
MinimumRequiredVersion         (string)
RequiresPayment                (bool)
ReleaseNotes                   (string)
MacBinary                      (dictionary)
	URL                        (string)
	Signature                  (string)
WindowsBinary                  (dictionary)
	ExecutableName
	URL                        (string)
	Hash                       (string)
LinuxBinary                    (dictionary)
	ExecutableName
	URL                        (string)
	Hash                       (string)
WindowsBinary64bit             (dictionary)
	ExecutableName
	URL                        (string)
	Hash                       (string)
LinuxBinary64bit               (dictionary)
	ExecutableName
	URL                        (string)
	Hash                       (string)
ImageURL                       (string)
ImageScale                     (integer)
UseTransparency                (bool, default = true)

A sample JSON that will be returned by the server:

[
	{
		"AppName" : "My App" ,
		"Version" : "6.0.2",
		"MinimumRequiredVersion" : "6.0.1" ,
		"ReleaseNotes" : "The release notes" ,
		"MacBinary" :
			{
				"URL" : "http://www.site.com/download_path_Mac" ,
				"Signature" : "ABCDEF"
			} ,
		"WindowsBinary" :
			{
				"ExecutableName" : "My App.exe" ,
				"URL" : "http://www.site.com/download_path_Windows" ,
				"Signature" : "123456"
			} ,
		"LinuxBinary" :
			{
				"ExecutableName" : "My App" ,
				"URL" : "http://www.site.com/download_path_Linux" ,
				"Hash" : "ABC123"
			} ,
		"WindowsBinary64bit" :
			{
				"ExecutableName" : "My App.exe" ,
				"URL" : "http://www.site.com/download_path_Win_64" ,
				"Hash" : "ABC12B3"
			} ,
		"LinuxBinary64bit" :
			{
				"ExecutableName" : "My App" ,
				"URL" : "http://www.site.com/download_path_Linux_64" ,
				"Hash" : "ABC12C"
			} ,
		"ImageURL" : "http://www.site.com/image.png" ,
		"ImageScale" : 2 ,
		"UseTransparency" : true
	} ,
	{
		"AppName" : "My App" ,
		"Version" : "6.1b4" ,
		"ReleaseNotes" : "http://link/to/release/notes" ,
		"MacBinary" :
			{
				"URL" : "http://www.site.com/other_download_path" ,
				"Hash" :"0123456"
			}
	}
]

NOTE: The ExecutableName will be used by the updater script while the AppName is what will display in the updater window. These may be the same or different. Since the ExecutableName of the Mac app can be discovered, it is not needed for the Mac binary.

The file will be prefixed by the signature of the JSON string in hex format. The entire file would look something like this:

KAJU ABCDEF
[
	<the JSON data>
]

If an update does not apply to a particular platform, it will be missing binary information for that platform and will be ignored.

The JSON will contain all information about every available version for that line. For example, there might be a release 6.0.1, a beta 6.1b4, and an alpha 6.2a8. Kaju will download all of that information and determine which ones are appropriate to present as options to the user.

"RequiresPayment" Flag

The "RequiresPayment" flag can be used to warn users of paid updates. For example, if they are on v.5.1 of your app, you can include information about the paid v.6.0. (We recommend that future 6.0 updates be in their own line, i.e., their own Kaju file.)

General Recommendations

We recommend that the latest version of any line use a static URL. For example, even if your app is at version 5.5, name the zipped file something like "My_App_5_Mac.zip" and place it in the My_App/v5/ folder on your web server. When you release version 6, name it "My_App_6_Mac.zip" and put it in the My_App/v6/ folder on the server. That way, no matter when the user chooses to update, the same URL will always lead them to the latest version.

The Classes

There is only one class (Kaju.UpdateChecker) and one method in the Kaju module (CancelUpdate) that are of real concern. The other classes and methods support these.

There is also a Kaju.Version constant (introduced in v.1.4) that will let you keep track of the Kaju version in your project.

Class: Kaju.UpdateChecker

Property Type Description Required
Allow32bitTo64bitUpdates Boolean If True, will offer the user of a 32-bit app the option to upgrade to the 64-bit version, if available. n
AllowedInteraction UInt32 Determines what windows Kaju is allowed to display; Use the available constants n
AllowedStage Integer What stage of updates the user may see (App.Final, App.Beta, App.Alpha, or App.Development) n
AllowRedirection Boolean If True, the UpdateURL may redirect to another URL (default: False) n
DefaultImage Picture The background image that will be displayed in the window when an image is not provided by the update n
DefaultUseTransparency Boolean If True, transparency will be set to 50% n
HonorIgnored Boolean If False, the user will be presented with updates they previously set to "ignore" (default: True) n
LastError RuntimeException Stores an error returned by ExecuteAsync n/a
QuitOnCancelIfRequired Boolean When True (default), canceling a required update will call Quit n
ServerPublicRSAKey String The public key as found in the Admin app file yes
UpdateURL String The URL where the update info will be found yes
UpdateWindowIsOpen Boolean Read-only property to determine if the update window is currently open n
Method Description
Constructor(preferencesFolder As FolderItem[, preferencesFilename As String]) Create the new instance around the given preferences folder using the given name for the file if provided, or "Kaju_Preferences" if not
ExecuteAsync Start the update process asynchronously (preferred)
Execute Start the update process synchronously
ResetIgnored Reset the list of ignored updates
Result As ResultType The result of the last Execute
Shared Method Description
OSIsSupported As Boolean Reports if the OS has the right tools installed
Event Description
ExecuteAsyncComplete ExecuteAsync has checked the update information packet from the UpdateURL and is reporting some result or status. Check Result and, if necessary, LastError.

Module: Kaju

Method Description
CancelUpdate Cancels any pending update; use in your windows' CancelClose event
DidLastUpdateFail As Boolean Returns True if this launch is a result of a failed update
DidLastUpdateSucceed(ByRef fromVersion As String, ByRef fromBits As Kaju.BitTypes) As Boolean Returns True and supplies the old version and bits if this launch is the result of a successful update

There are other methods in the Kaju module that you might find useful but we are not documenting them.

Contributions

Contributions to this project are welcome. Fork it to your own repo, then submit changes. However, be forewarned that only those changes that we deem universally useful will be included.

Who Did This?

This project was designed and implemented by:

  • Kem Tekinay (ktekinay at mactechnologies.com)
  • Luke Cowgar (lcowgar at advancedpricing.com)
  • Jeremy Cowgar (jeremy at cowgar.com)

With thanks to John Hansen, Paul Lefebvre, Scott Boss, and Vidal van Bergen.

With thanks to Julia Truchsess for designing the Admin app icon. (I didn't even ask!)

Translations to other languages by:

  • Sascha Schneppmueller (German)
  • Valdemar De SOUSA (French)
  • Julen Ibarretxe Uriguen (Spanish)
  • Heikki Hoo (Finnish)
  • Manuel Romei (Italian)
  • Vidal van Bergen (Dutch)

With special thanks to Advanced Medical Pricing Solutions, Inc. for making this possible.

FAQ

How much does this cost?

One-TRILLION dollars!! Or nothing, your choice.

You may freely use this in any project, but don't come back to us if it erases your hard drive or paints your house yellow or something. See the included LICENSE.txt file for details.

How does it work?

Kaju uses a shell script on all platforms that is initiated when the app quits. The script backs up the original app, copies the files of the new app over the old, deletes the backup, and starts the new app. If anything goes wrong, the old app is restored and started instead.

Does the end user have to install any additional apps?

No.

Really?!? Even on Windows?

No. Thanks to John Hansen and code he provided on the Xojo Forums, Windows will even unzip the downloaded file without any extra help.

How do I contribute?

Fork the project to your GitHub account. Use the "develop" branch for general fixes and additions and "translations" to add a language translation. Make your changes, then submit a pull request. We'll look it over and merge what's appropriate or provide feedback.

I want to submit a translation. What should be translated?

There are two places to look for strings that need translation:

  1. The constants in the KajuLocale module.
  2. The error messages in KajuException.

Add a translation for each, then submit a pull request as outlined above.

Release Notes

2.2 (____)

  • Admin app icon, designed by Julia Truchsess.
  • Adjust Admin app tab order and made sure the Versions Listbox was selected when opened.

2.1 (July 3, 2020)

  • KajuUpdateWindow: Changed hsSocket to a URLConnection object.
  • UpdateChecker: Added ExecuteAsync that will check for updates asynchronously using URLConnection and LastError for HTTP errors that occur when using that method.
  • UpdateChecker: Deprecated Execute.
  • UpdateChecker: Use URLConnection unless Execute is used where AllowRedirection isรŸ False.
  • UpdateChecker: Added results for "PageNotFound", "PageRedirected", and "FetchingUpdateInfo".
  • UpdateChecker: Better handling of a URL in the form "http://un:pw@path".
  • UpdateChecker: Changed Result to a read-only computed property and made the mResult shadow property hidden.
  • UpdateChecker: Removed events that were not being raised anyway.
  • UpdateChecker: Make sure each version has a security token (see below).
  • UpdateChecker: Validate the downloaded packet against every form of EOL with and without Trim in case that got changed along the way.
  • UpdateChecker: OSIsSupported will try twice to find the tools it needs and log any errors.
  • UpdateInformation: Will fetch images and release notes asynchronously.
  • UpdateInitiater: Fixed Windows script issue that could have prevented re-launch of the application.
  • Test App: The window will let you specify Asynchronous and your own URL and/or public key. It will also allow testing of simple HTTP authenticated directories.
  • Test App: Asynchronous is now the default.
  • Admin App: Fixed issues with saving and alias tracking. (Alias tracking does not work on Windows.)
  • Admin App: Better UI handling on Windows.
  • General: Code changes for easier debugging.
  • General: All HTTP requests now include headers to disable caching.
  • General: Exported information file contains a security token to make sure that each export has a different RSA signature.
  • General: Handle IOException.
  • General: Updated build script to look for kaju cli in "Builds" folder as named in the newer Xojo versions.

2.0 (May 31, 2017)

  • CLI: Made help prettier.
  • Admin GUI: Use a temp file for the LoadPage "relativeTo" parameter.
  • KajuUpdateWindow: Delete the temp file used for the LoadPage "relativeTo" parameter on close.
  • Added Dutch translation.
  • KajuUpdateWindow: If an exception is raised while displaying the release notes, any exception message will be added to the dialog text.
  • Ability to load release notes through a URL.
  • Admin GUI: Fixed Dupe button.
  • Added support for 64-bit binaries.
  • Kaju: Changed parameters of DidLastUpdateSucceed to report the "bit-ness" of the version that initiated the update.
  • Test App: Use better technique for compressing Windows and Linux executables.

1.6.1 (August 27, 2015)

  • CLI: Better handling of remote debugging.
  • CLI: listversions now has --include and --exclude switches that take regex patterns.
  • Admin: Prevent Save or Export if the file includes duplicate version numbers.
  • CLI: Disallow adding duplicate version number or changing an existing version number so it becomes a duplicate.
  • Test App: Created Build Script to automatically update the Kaju files after building.

1.6 (August 18, 2015)

  • Can override the preference file name when creating the UpdateChecker object.
  • Introduced command line project (CLI).

1.5.3 (July 20, 2015)

  • Admin app: Split the file settings from the Admin window so a file can be manipulated independently.
  • Admin app: Save the last export file name to suggest it for the next export.

1.5.2 (July 17, 2015)

  • Added Italian translation.

1.5.1 (June 19, 2015)

  • Admin app: Fixed tab order of controls.
  • Admin app: Retinized!
  • Added what should be an unneeded, but apparently necessary, GOTO to the Windows script.

1.5 (June 3, 2015)

  • Admin app: Enable substitution of $VERSION$ in binary URL's.

1.4.1 (Feb. 18, 2015)

  • Admin app: Lock "From URL" buttons to the right of the window.
  • Added Finnish translation.

1.4 (Feb. 14, 2015)

  • Added /g switch to XCOPY in Windows script.
  • When the app relaunches after an update or failed update, will get command-line switches telling it what happened. Added Kaju methods to report.
  • URL's for both the update information and the downloads can specify a username and password in the form "http://un:[email protected]".
  • Added Kaju.Version constant.

1.3.3 (Jan. 22, 2015)

  • Fixed bug in conversion of release version to double.

1.3.2 (Jan. 15, 2015)

  • Fixed Admin app bugs.
  • Download progress bar will now update properly on all platforms.

1.3.1 (Jan. 13, 2015)

  • Fixed bug that prevented MinimumRequiredVersion from working.

1.3 (Jan. 13, 2015)

  • Final versions can use the non-release number as a build number.
  • Fixed translations that were marked as "default".

1.2.1 (Jan. 13, 2015)

  • Added Spanish translation.

1.2 (Jan. 12, 2015)

  • Added timeout timer for downloads.
  • Fixed transparency issue on Windows.
  • Fixed some German translations.
  • Added French translation.

1.1 (Jan. 11, 2015)

  • Moved user-presented strings to KajuLocale module for easier translation.
  • Fixed bug where the app name was not being presented in the Update window.
  • Changed behavior of how the "A never version of..." message is presented in the Update window.
  • Added German translation.

1.0.1 (Jan. 5, 2015)

  • Fixed redirect bug.
  • The URL will set Secure and the Port (can override in the URL itself).

1.0 (Jan. 5, 2015)

  • Initial release.

kaju's People

Contributors

jcowgar avatar ktekinay avatar schneppi avatar threestate avatar vidalvanbergen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kaju's Issues

Duplicated Event Definitions

Following the step-by-step, I've copied the Kaju Classes folder into my project. When I compile I get the following errors:

KajuUpdateWindow.hsSocket.ReceiveProgress Declaration
hsSocket on KajuUpdateWindow implements the event "ReceiveProgress," but its superclass Kaju.HTTPSSocket has already implemented the event.
Sub ReceiveProgress(bytesReceived as integer, totalBytes as integer, newData as string)

KajuUpdateWindow.hsSocket.DownloadComplete Declaration
hsSocket on KajuUpdateWindow implements the event "DownloadComplete," but its superclass Kaju.HTTPSSocket has already implemented the event.
Sub DownloadComplete(url as string, httpStatus as integer, headers as internetHeaders, file as folderItem)

KajuUpdateWindow.hsSocket.Error Declaration
hsSocket on KajuUpdateWindow implements the event "Error," but its superclass Kaju.HTTPSSocket has already implemented the event.
Sub Error(code as integer)

KajuUpdateWindow.shZipper.DecompressCompleted Declaration
shZipper on KajuUpdateWindow implements the event "DecompressCompleted," but its superclass Kaju.ZipShell has already implemented the event.
Sub DecompressCompleted(zipFile As FolderItem, containingFolder As FolderItem)

KajuUpdateWindow.shZipper.Error Declaration
shZipper on KajuUpdateWindow implements the event "Error," but its superclass Kaju.ZipShell has already implemented the event.
Sub Error()

Can't get it to work on Mac, ok on Windows

Just downloaded yesterday and set it up according to the instructions. First tried running the Admin app in Xojo 2019r3.1 and it wouldn't compile. Guessing it hasn't been updated for 2019r2+? Admin app runs fine in 2019r1.1.

It's not clear, but I assumed the URL configured for the UpdateChecker should point directly to the json file. But the instructions say in one place to "export the HTML data" and another "The update information that you will post will be a JSON file that is generated by the Admin app as an HTML file." However, the default filename of the Export function is "UpdateInformation.json". So I just used it as is and it seems to work fine. Might want to clarify that in the instructions.

So, I tried it in my app. The Windows version seems to be working fine, but the macOS version gives this error: "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." I'm not using a secure site for this test. I tried searching for that phrase and came up empty. This is on macOS 10.13, compiled with Xojo 2019r3.1.

On another matter, there are a couple of typos in the readme instructions, in the ExecuteAsync vs. Execute section the second paragraph starts with "If yoru uddate information...".

Quit & Install

Hey there.

I think I have everything setup. But when I press the "Quit & Install" button on the updater window, my app quits and nothing else happens. I can see the correctly downloaded decompressed file within the TemporaryItems folder, it's just not being moved into place.

Any thoughts on where to debug?

Thanks!

OS: Mac
Versions: Xojo 2.1, Kaju (installed yesterday)

hello,when i build kaju update test,Tip: The kaju CLI is not available. Build it first.

qq20170911-141134

i have not edit any file,Build success, but open the application to exit automatically.

http://www.adobe.vip/Tools/Kaju%20Update%20Test.app.zip

can you help me to build or give me someinfomation for kaju Update test.

Process: Kaju Update Test [6530]
Path: /Users/USER/Downloads/*/Kaju Update Test.app/Contents/MacOS/Kaju Update Test
Identifier: com.mactechnologies.kajuupdatetest
Version: ??? (1.0.0.3.0)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Kaju Update Test [6530]
User ID: 501

Date/Time: 2017-09-11 14:14:53.073 +0800
OS Version: Mac OS X 10.12.3 (16D32)
Report Version: 12
Anonymous UUID: 58A3D436-8D28-E5B6-BA4F-71FD0F6D4B4B

Time Awake Since Boot: 22000 seconds

System Integrity Protection: disabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [0]

Application Specific Information:
*** CFRetain() called with NULL ***
Performing @selector(performClick:) from sender XOJButton 0x610000145540

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.CoreFoundation 0x00007fff9c39d95d CFRetain + 109
1 com.xojo.XojoFramework 0x00000001050612f9 0x104fe3000 + 516857
2 com.xojo.XojoFramework 0x000000010506425a 0x104fe3000 + 528986
3 com.xojo.XojoFramework 0x0000000105066140 RuntimeStringCompare + 75
4 com.mactechnologies.kajuupdatetest 0x0000000104dafff9 JSONItem.parseString%s%o&i8 + 745
5 com.mactechnologies.kajuupdatetest 0x0000000104db0df7 JSONItem.parseValue%v%o&i8 + 1175
6 com.mactechnologies.kajuupdatetest 0x0000000104daf5db JSONItem.parseObject%o%o&i8 + 1195
7 com.mactechnologies.kajuupdatetest 0x0000000104db0e70 JSONItem.parseValue%v%o&i8 + 1296
8 com.mactechnologies.kajuupdatetest 0x0000000104dadbe3 JSONItem.parseArray%o%o&i8 + 755
9 com.mactechnologies.kajuupdatetest 0x0000000104dad765 JSONItem.Parse%o%os + 613
10 com.mactechnologies.kajuupdatetest 0x0000000104dab67b JSONItem.Load%%os + 123
11 com.mactechnologies.kajuupdatetest 0x0000000104daa2b9 JSONItem.Constructor%%os + 169
12 com.mactechnologies.kajuupdatetest 0x0000000104e2f2e9 Kaju.UpdateChecker.ProcessUpdateData%b%o<Kaju.UpdateChecker>s + 953
13 com.mactechnologies.kajuupdatetest 0x0000000104e2b5df Kaju.UpdateChecker.Execute%%o<Kaju.UpdateChecker> + 5391
14 com.mactechnologies.kajuupdatetest 0x0000000104e11e31 Window1.Window1.btnExecute_Action%%o<Window1.Window1>o + 3041
15 com.mactechnologies.kajuupdatetest 0x0000000104e17965 Delegate.IM_Invoke%%o + 53
16 com.mactechnologies.kajuupdatetest 0x0000000104e179d4 AddHandler.Stub.15%% + 52
17 libsystem_trace.dylib 0x00007fffb1b9dc3d _os_activity_initiate + 61
18 com.apple.AppKit 0x00007fff9a6cbc9c -[NSApplication(NSResponder) sendAction:to:from:] + 456
19 com.apple.AppKit 0x00007fff9a1b1460 -[NSControl sendAction:to:] + 86
20 com.apple.AppKit 0x00007fff9a1b1388 __26-[NSCell _sendActionFrom:]_block_invoke + 136
21 libsystem_trace.dylib 0x00007fffb1b9dc3d _os_activity_initiate + 61
22 com.apple.AppKit 0x00007fff9a1b12e0 -[NSCell _sendActionFrom:] + 128
23 com.apple.AppKit 0x00007fff9a1f3cd9 -[NSButtonCell _sendActionFrom:] + 98
24 libsystem_trace.dylib 0x00007fffb1b9dc3d _os_activity_initiate + 61
25 com.apple.AppKit 0x00007fff9a1afbc6 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2481
26 com.apple.AppKit 0x00007fff9a1f3a12 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 798
27 com.apple.AppKit 0x00007fff9a1ae57b -[NSControl mouseDown:] + 832
28 com.xojo.XojoFramework 0x000000010502629b 0x104fe3000 + 275099
29 com.apple.AppKit 0x00007fff9a843603 -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 6341
30 com.apple.AppKit 0x00007fff9a83fe20 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 1942
31 com.apple.AppKit 0x00007fff9a83f2be -[NSWindow(NSEventRouting) sendEvent:] + 541
32 com.xojo.XojoFramework 0x0000000105031c7e 0x104fe3000 + 322686
33 com.apple.AppKit 0x00007fff9a6c7bf5 -[NSApplication(NSEvent) sendEvent:] + 1145
34 com.xojo.XojoFramework 0x000000010502164c 0x104fe3000 + 255564
35 com.mactechnologies.kajuupdatetest 0x0000000104de7ff7 Delegate.Invoke%% + 7
36 com.mactechnologies.kajuupdatetest 0x0000000104ceef71 Application._CallFunctionWithExceptionHandling%%op + 273
37 com.xojo.XojoFramework 0x0000000105184beb 0x104fe3000 + 1711083
38 com.xojo.XojoFramework 0x00000001050215c6 0x104fe3000 + 255430
39 com.apple.AppKit 0x00007fff99f43f81 -[NSApplication run] + 1002
40 com.xojo.XojoFramework 0x0000000105182fbb RuntimeRun + 40
41 com.mactechnologies.kajuupdatetest 0x0000000104d9da48 REALbasic._RuntimeRun + 24
42 com.mactechnologies.kajuupdatetest 0x0000000104e98faa _Main + 538
43 com.mactechnologies.kajuupdatetest 0x0000000104e98541 main + 65
44 com.mactechnologies.kajuupdatetest 0x0000000104c714c4 start + 52

Thread 1:
0 libsystem_kernel.dylib 0x00007fffb1a9a4e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fffb1b82791 _pthread_wqthread + 1426
2 libsystem_pthread.dylib 0x00007fffb1b821ed start_wqthread + 13

Thread 2:
0 libsystem_pthread.dylib 0x00007fffb1b821e0 start_wqthread + 0
1 ??? 0x0000700005550b80 0 + 123145391770496

Thread 3:
0 libsystem_kernel.dylib 0x00007fffb1a9a4e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fffb1b82791 _pthread_wqthread + 1426
2 libsystem_pthread.dylib 0x00007fffb1b821ed start_wqthread + 13

Thread 4:
0 libsystem_pthread.dylib 0x00007fffb1b821e0 start_wqthread + 0
1 ??? 0x0000000000000a80 0 + 2688

Thread 5:
0 libsystem_pthread.dylib 0x00007fffb1b821e0 start_wqthread + 0

Thread 6:: com.apple.NSEventThread
0 libsystem_kernel.dylib 0x00007fffb1a9238a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fffb1a917d7 mach_msg + 55
2 com.apple.CoreFoundation 0x00007fff9c41ec94 __CFRunLoopServiceMachPort + 212
3 com.apple.CoreFoundation 0x00007fff9c41e121 __CFRunLoopRun + 1361
4 com.apple.CoreFoundation 0x00007fff9c41d974 CFRunLoopRunSpecific + 420
5 com.apple.AppKit 0x00007fff9a09ca62 _NSEventThread + 205
6 libsystem_pthread.dylib 0x00007fffb1b82aab _pthread_body + 180
7 libsystem_pthread.dylib 0x00007fffb1b829f7 _pthread_start + 286
8 libsystem_pthread.dylib 0x00007fffb1b821fd thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x00007fff9c76a9bb rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000000001
rdi: 0x0000000000000000 rsi: 0x000060000004f05a rbp: 0x00007fff5af8d940 rsp: 0x00007fff5af8d940
r8: 0x00007fff5af8d4c0 r9: 0x00007fff5af8d3c0 r10: 0x0000000000000000 r11: 0x0000000000000000
r12: 0x0000000000000000 r13: 0x00000001053906a0 r14: 0x0000000000000019 r15: 0x000060000004f030
rip: 0x00007fff9c39d95d rfl: 0x0000000000000246 cr2: 0x0000000105435690

Logical CPU: 0
Error Code: 0x00000000
Trap Number: 3

Binary Images:
0x104c70000 - 0x104ee6fff +com.mactechnologies.kajuupdatetest (??? - 1.0.0.3.0) <9B517A1F-ED50-37C4-9972-EBF618008454> /Users/USER/Downloads//Kaju Update Test.app/Contents/MacOS/Kaju Update Test
0x104fe3000 - 0x105343ff7 +com.xojo.XojoFramework (1.0 - 2) /Users/USER/Downloads/
/Kaju Update Test.app/Contents/Frameworks/XojoFramework.framework/Versions/A/XojoFramework
0x105433000 - 0x105442ffb libSimplifiedChineseConverter.dylib (69) <4A6C9911-5DE8-3CAE-A10C-AACE29D03FFE> /System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib
0x1071b5000 - 0x107220fff +Crypto.dylib (???) <0D3EA911-57A9-3850-8725-5A2F0C73CB81> /Users/USER/Downloads//Kaju Update Test.app/Contents/Frameworks/Crypto.dylib
0x107235000 - 0x10723ffff +HTMLViewerCocoa.dylib (???) <9C4DA9CC-C334-3827-879B-CE8599E381E0> /Users/USER/Downloads/
/Kaju Update Test.app/Contents/Frameworks/HTMLViewerCocoa.dylib
0x107248000 - 0x107249fff +InternetEncodings.dylib (???) /Users/USER/Downloads//Kaju Update Test.app/Contents/Frameworks/InternetEncodings.dylib
0x10724e000 - 0x1072a9fff +RegEx.dylib (???) <5F18F722-212D-3108-9BC9-44272807EF52> /Users/USER/Downloads/
/Kaju Update Test.app/Contents/Frameworks/RegEx.dylib
0x1072b0000 - 0x1072b3ff7 +Shell.dylib (???) <70ABEE38-7A75-3E1E-AA35-CA76EDC0C586> /Users/USER/Downloads//Kaju Update Test.app/Contents/Frameworks/Shell.dylib
0x1072b9000 - 0x1073a4fdf +SSLSocket.dylib (???) /Users/USER/Downloads/
/Kaju Update Test.app/Contents/Frameworks/SSLSocket.dylib
0x108656000 - 0x108658ffb com.apple.textencoding.unicode (3.0 - 3.0) <1ABD997B-AC91-3CB4-81E4-98E1863F9E3C> /System/Library/TextEncodings/Unicode Encodings.bundle/Contents/MacOS/Unicode Encodings
0x108ac4000 - 0x1095bffff com.nvidia.web.GeForceGLDriverWeb (10.15.20 - 10.1.5) <70B399AB-92EE-38F3-B39F-A4D919D670A5> /System/Library/Extensions/GeForceGLDriverWeb.bundle/Contents/MacOS/GeForceGLDriverWeb
0x109f9d000 - 0x10af1eff7 libclhWeb.dylib (0) /System/Library/Extensions/GeForceGLDriverWeb.bundle/Contents/MacOS/libclhWeb.dylib
0x10afe7000 - 0x10b23efff com.nvidia.web.GeForceMTLDriverWeb (10.15.20 - 10.1.5) <62F1B948-DEAF-32AA-B52F-3578346E9EBC> /System/Library/Extensions/GeForceMTLDriverWeb.bundle/Contents/MacOS/GeForceMTLDriverWeb
0x10d2e3000 - 0x10d320267 dyld (421.2) <947FC440-80F9-32F7-A773-6FC418FE1AB7> /usr/lib/dyld
0x7fff97094000 - 0x7fff973cdfff com.apple.RawCamera.bundle (7.01 - 889) <155ED09B-673E-3726-8302-E54AADAC5B63> /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
0x7fff98bfe000 - 0x7fff98dbdffb com.apple.avfoundation (2.0 - 1187.11.13) <0D0BB4A4-F987-381B-885E-88A81F50FD50> /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation
0x7fff98dbe000 - 0x7fff98e61fff com.apple.audio.AVFAudio (1.0 - ???) /System/Library/Frameworks/AVFoundation.framework/Versions/A/Frameworks/AVFAudio.framework/Versions/A/AVFAudio
0x7fff98f2a000 - 0x7fff98f2afff com.apple.Accelerate (1.11 - Accelerate 1.11) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x7fff98f2b000 - 0x7fff98f42ffb libCGInterfaces.dylib (331.5) <518D3064-6E1E-3DF6-881B-57867DFE9B1E> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
0x7fff98f43000 - 0x7fff9945cfeb com.apple.vImage (8.1 - ???) <6408805B-67E9-3874-8D32-0BB814CE5CDA> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x7fff9945d000 - 0x7fff995cdff3 libBLAS.dylib (1185) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x7fff995ce000 - 0x7fff995e2ffb libBNNS.dylib (14) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
0x7fff995e3000 - 0x7fff999d9fef libLAPACK.dylib (1185) <2E8201CB-9A41-3D65-853E-841917FCE77B> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x7fff999da000 - 0x7fff999f0fff libLinearAlgebra.dylib (1185) <8CC29DE1-A231-3D5E-B5F1-DCC309036FE0> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
0x7fff999f1000 - 0x7fff999f7fff libQuadrature.dylib (3) <120F6228-A3D4-3184-89D7-785ADC2AC715> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
0x7fff999f8000 - 0x7fff99a0cff7 libSparseBLAS.dylib (1185) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
0x7fff99a0d000 - 0x7fff99b94fe7 libvDSP.dylib (600) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x7fff99b95000 - 0x7fff99c47ffb libvMisc.dylib (600) <70D4B548-47EE-3C6B-A93B-3EA6B60701E0> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x7fff99c48000 - 0x7fff99c48fff com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x7fff99f08000 - 0x7fff9acdaff3 com.apple.AppKit (6.9 - 1504.81.100) <0CCB2E18-076E-3D8A-A777-A6E57EF2570A> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x7fff9acec000 - 0x7fff9acecfff com.apple.ApplicationServices (48 - 48) <237200C2-28A6-3C19-B34B-53C953F8AE42> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x7fff9aced000 - 0x7fff9ad5bff7 com.apple.ApplicationServices.ATS (377 - 422.2) <3680281F-DB99-3CA2-9C76-CABFC8DBC980> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x7fff9adf5000 - 0x7fff9af24fff libFontParser.dylib (194.6) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
0x7fff9af25000 - 0x7fff9af6ffff libFontRegistry.dylib (196.3) <855AF921-EAE0-3D07-B161-5EF09806B643> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
0x7fff9afcc000 - 0x7fff9afffff7 libTrueTypeScaler.dylib (194.6) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib
0x7fff9b06b000 - 0x7fff9b115ff7 com.apple.ColorSync (4.12.0 - 502.1) <5F244DE3-A6E8-335F-AE3B-25F0E407DD62> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x7fff9b116000 - 0x7fff9b166ff7 com.apple.HIServices (1.22 - 591) <34C950CC-1084-354A-BCE6-9396EDB29DF8> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x7fff9b167000 - 0x7fff9b176ff3 com.apple.LangAnalysis (1.7.0 - 1.7.0) <47D1A017-91A4-37F3-93E0-3923CD6ED2DE> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x7fff9b177000 - 0x7fff9b1c4fff com.apple.print.framework.PrintCore (12 - 491) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x7fff9b1c5000 - 0x7fff9b200fff com.apple.QD (3.12 - 310) <8F718290-DD82-36CE-9AF0-EFB6D31A49F4> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x7fff9b201000 - 0x7fff9b20cff7 com.apple.speech.synthesis.framework (6.3.3 - 6.3.3) <629831B1-B13C-30F5-AE16-6BB9037E3753> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x7fff9b20d000 - 0x7fff9b41dfff com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x7fff9b41e000 - 0x7fff9b41efff com.apple.audio.units.AudioUnit (1.14 - 1.14) <55C6A958-D52B-3D81-B230-EB949212B5D9> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x7fff9b587000 - 0x7fff9b95aff7 com.apple.CFNetwork (807.2.14 - 807.2.14) <9702C8B9-2984-3DD9-9C59-A83499C2DBC4> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x7fff9b974000 - 0x7fff9b974fff com.apple.Carbon (154 - 157) <1BF9C0EB-45A0-3584-85DC-F64A9914F40D> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
0x7fff9b975000 - 0x7fff9b978fff com.apple.CommonPanels (1.2.6 - 98) <6A71E8CB-3BF7-3A49-A5F7-0579BAE1219D> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
0x7fff9b979000 - 0x7fff9bc81ff7 com.apple.HIToolbox (2.1.1 - 856.13) <98D5D2A7-55A6-31A7-9056-CC48EBB16654> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x7fff9bc82000 - 0x7fff9bc85ff7 com.apple.help (1.3.5 - 49) <27C5F9FE-838F-3807-A4AC-D99470185B10> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
0x7fff9bc86000 - 0x7fff9bc8bfff com.apple.ImageCapture (9.0 - 9.0) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x7fff9bc8c000 - 0x7fff9bd23ff3 com.apple.ink.framework (10.9 - 219) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x7fff9bd24000 - 0x7fff9bd3efff com.apple.openscripting (1.7 - 172) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x7fff9bd3f000 - 0x7fff9bd40ff3 com.apple.print.framework.Print (12 - 267) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
0x7fff9bd41000 - 0x7fff9bd43ff7 com.apple.securityhi (9.0 - 55006) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
0x7fff9bd44000 - 0x7fff9bd4aff7 com.apple.speech.recognition.framework (6.0.1 - 6.0.1) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x7fff9be29000 - 0x7fff9be29fff com.apple.Cocoa (6.11 - 22) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x7fff9bf69000 - 0x7fff9bff9ff7 com.apple.audio.CoreAudio (4.3.0 - 4.3.0) /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x7fff9bffa000 - 0x7fff9c00dfff com.apple.CoreBluetooth (1.0 - 1) <76AFC4B4-A9FD-3434-B168-90087E71F5C4> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
0x7fff9c00e000 - 0x7fff9c308feb com.apple.CoreData (120 - 752.8) /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x7fff9c309000 - 0x7fff9c395fff com.apple.CoreDisplay (1.0 - 1) <48B568C0-1E12-34F4-943D-EAB447FBA1BE> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
0x7fff9c396000 - 0x7fff9c830fff com.apple.CoreFoundation (6.9 - 1348.28) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x7fff9c831000 - 0x7fff9ceb3fff com.apple.CoreGraphics (2.0 - 1070.13.2) <0685658F-21AE-31D9-8C9A-B92528CDFB59> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x7fff9ceb4000 - 0x7fff9d0f6fff com.apple.CoreImage (12.2.0 - 451.3.1) /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
0x7fff9d15e000 - 0x7fff9d20efff com.apple.CoreMedia (1.0 - 1907.15.15) /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
0x7fff9d20f000 - 0x7fff9d25aff7 com.apple.CoreMediaIO (804.0 - 4929) <54CF2AD2-4928-3A41-9F7D-F135A8A616D1> /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO
0x7fff9d25b000 - 0x7fff9d25bfff com.apple.CoreServices (775.9.7 - 775.9.7) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x7fff9d25c000 - 0x7fff9d2adfff com.apple.AE (712.2 - 712.2) <342A13C0-4A6A-3947-B66B-0F624A4A7B52> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x7fff9d2ae000 - 0x7fff9d589ff7 com.apple.CoreServices.CarbonCore (1159.5 - 1159.5) <11CC2194-0C9C-397A-B7F9-CDAB9B68D87D> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x7fff9d58a000 - 0x7fff9d5bdfff com.apple.DictionaryServices (1.2 - 274) <864F3808-FFDD-3C4B-A5B7-F1A6C4668A86> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x7fff9d5be000 - 0x7fff9d5c6ffb com.apple.CoreServices.FSEvents (1230 - 1230) <13A2FC17-8F8C-35BF-9584-59FDFB738E2B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
0x7fff9d5c7000 - 0x7fff9d733ff7 com.apple.LaunchServices (775.9.7 - 775.9.7) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x7fff9d734000 - 0x7fff9d7e4fff com.apple.Metadata (10.7.0 - 1075.28) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x7fff9d7e5000 - 0x7fff9d844fff com.apple.CoreServices.OSServices (775.9.7 - 775.9.7) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x7fff9d845000 - 0x7fff9d8b5fff com.apple.SearchKit (1.4.0 - 1.4.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x7fff9d8b6000 - 0x7fff9d8fcff7 com.apple.coreservices.SharedFileList (38 - 38) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
0x7fff9d989000 - 0x7fff9dad5ff7 com.apple.CoreText (352.0 - 544.5) /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
0x7fff9dad6000 - 0x7fff9db0bfff com.apple.CoreVideo (1.8 - 234.0) <48C31E93-87C2-31F4-97E7-9E54C1EA8E7D> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x7fff9db0c000 - 0x7fff9db7dffb com.apple.framework.CoreWLAN (11.0 - 1200.25.1) /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
0x7fff9dc7c000 - 0x7fff9dc81fff com.apple.DiskArbitration (2.7 - 2.7) <16EA6D93-A2EC-31DB-BF52-C4764E7B1630> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x7fff9de10000 - 0x7fff9e1b7ff3 com.apple.Foundation (6.9 - 1349.25) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x7fff9e1e3000 - 0x7fff9e214fff com.apple.GSS (4.0 - 2.0) <95FAD1F9-1610-3428-B9B4-D32F67C26574> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
0x7fff9e2d4000 - 0x7fff9e377ffb com.apple.Bluetooth (5.0.3 - 5.0.3f1) /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
0x7fff9e378000 - 0x7fff9e40dff7 com.apple.framework.IOKit (2.0.2 - 1324.30.13) <163BE7FA-B29A-348F-8B5F-E301F2E8C964> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x7fff9e40e000 - 0x7fff9e414ffb com.apple.IOSurface (153.3 - 153.3) <3DD3BF22-0800-31F2-B179-87F87D6F0548> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
0x7fff9e415000 - 0x7fff9e465ff3 com.apple.ImageCaptureCore (7.0 - 7.0) <0F899C07-AA23-350E-8670-9090924D670D> /System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore
0x7fff9e466000 - 0x7fff9e5bffef com.apple.ImageIO.framework (3.3.0 - 1582) <564168E7-BEC0-35E3-9BF0-59B65C17225E> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x7fff9e5c0000 - 0x7fff9e5c4fff libGIF.dylib (1582) <040243CD-3A68-3ADC-805C-FE1D17C80028> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x7fff9e5c5000 - 0x7fff9e6b5ff7 libJP2.dylib (1582) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x7fff9e6b6000 - 0x7fff9e6d9ffb libJPEG.dylib (1582) <58C01E72-10A0-313F-8139-ED6E9D087ABB> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x7fff9e6da000 - 0x7fff9e701ff7 libPng.dylib (1582) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x7fff9e702000 - 0x7fff9e704ff3 libRadiance.dylib (1582) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x7fff9e705000 - 0x7fff9e75eff3 libTIFF.dylib (1582) <71ADCD24-67C9-31B5-8E48-A4B89AFBB19F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x7fff9e88a000 - 0x7fff9f32dff7 com.apple.JavaScriptCore (12602 - 12602.4.8) <4FF12BFD-CD3B-33D7-B844-85234A13BD42> /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore
0x7fff9f32e000 - 0x7fff9f347ff7 com.apple.Kerberos (3.0 - 1) <49DCBE1A-130C-3FBF-AAEA-AF9A518913AC> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x7fff9f5d4000 - 0x7fff9f5dafff com.apple.MediaAccessibility (1.0 - 97.1.1) <1025DB59-18DE-39EA-9C04-35CE8D6103E5> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
0x7fff9f5f0000 - 0x7fff9fb44fff com.apple.MediaToolbox (1.0 - 1907.15.15) <22150DE7-8CD3-30DD-8C0F-3D06F865C186> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
0x7fff9fb45000 - 0x7fff9fb9dfff com.apple.Metal (86.18 - 86.18) <7DFE0437-25A8-3E87-8318-91573C895742> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
0x7fffa0471000 - 0x7fffa0479fff com.apple.NetFS (6.0 - 4.0) <6614F9B8-0861-338B-8FF0-8E402F96141C> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
0x7fffa064e000 - 0x7fffa0656ff7 libcldcpuengine.dylib (2.8.5) <341EBC48-CCF4-3292-9097-F61715AC573E> /System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries/libcldcpuengine.dylib
0x7fffa081f000 - 0x7fffa086dff3 com.apple.opencl (2.8.6 - 2.8.6) <553BFCCA-5ACB-3DB0-B958-4BF2DE91838F> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
0x7fffa086e000 - 0x7fffa0887ffb com.apple.CFOpenDirectory (10.12 - 194) <88E97774-6767-3A01-808B-C923F9310E20> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
0x7fffa0888000 - 0x7fffa0893ff7 com.apple.OpenDirectory (10.12 - 194) <0E4E32DD-6592-3860-9793-BAED6915AE0D> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
0x7fffa0894000 - 0x7fffa0896fff libCVMSPluginSupport.dylib (13.0.10) <43D037C3-9254-3601-9F5B-CD637D517758> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
0x7fffa0897000 - 0x7fffa089aff7 libCoreFSCache.dylib (151.1) <1910EF80-DE30-3817-8FDF-63F3C8B4BA37> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
0x7fffa089b000 - 0x7fffa089efff libCoreVMClient.dylib (151.1) <8C8E9295-1918-3763-A0B7-6397EB181EF4> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
0x7fffa089f000 - 0x7fffa08a7ffb libGFXShared.dylib (13.0.10) <52E92D3C-25EA-31F9-9885-DC0D886D9143> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
0x7fffa08a8000 - 0x7fffa08b3fff libGL.dylib (13.0.10) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x7fffa08b4000 - 0x7fffa08f0fe7 libGLImage.dylib (13.0.10) <3E856113-9217-3B13-98AD-4D0D356931B6> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x7fffa08f1000 - 0x7fffa0a67ffb libGLProgrammability.dylib (13.0.10) <4C3FD24A-1C43-343E-8EBA-BE1FDCE3F74C> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
0x7fffa0a68000 - 0x7fffa0aa8ff3 libGLU.dylib (13.0.10) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x7fffa0aa9000 - 0x7fffa140ffef libLLVMContainer.dylib (151.1) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libLLVMContainer.dylib
0x7fffa1410000 - 0x7fffa141efff com.apple.opengl (13.0.10 - 13.0.10) /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x7fffa141f000 - 0x7fffa15c5fff GLEngine (13.0.10) <62CCEC13-1EB3-3A65-9224-3DCD2838E0C7> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
0x7fffa15c6000 - 0x7fffa15f0ffb GLRendererFloat (13.0.10) /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
0x7fffa1689000 - 0x7fffa17d0fff com.apple.QTKit (7.7.3 - 2978.3) <665AF577-900D-349E-B1C5-D5BDD70DB481> /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit
0x7fffa17d1000 - 0x7fffa1a3bff7 com.apple.imageKit (3.0 - 1021) <5D77D4A4-F844-376B-93AA-F9CB55C719AE> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit
0x7fffa1a3c000 - 0x7fffa1b00fff com.apple.PDFKit (1.0 - 1) <7375423F-5815-36C5-A345-546843827588> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/PDFKit.framework/Versions/A/PDFKit
0x7fffa1b01000 - 0x7fffa2027fff com.apple.QuartzComposer (5.1 - 351.1) /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/QuartzComposer
0x7fffa2028000 - 0x7fffa204bffb com.apple.quartzfilters (1.10.0 - 1.10.0) <8A8ED06E-3A07-312A-A976-982C51159A45> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters
0x7fffa204c000 - 0x7fffa2139fff com.apple.QuickLookUIFramework (5.0 - 720.5) <85A0BF0F-94B1-33CD-A3DC-4048380A3258> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/QuickLookUI
0x7fffa213a000 - 0x7fffa213afff com.apple.quartzframework (1.5 - 21) /System/Library/Frameworks/Quartz.framework/Versions/A/Quartz
0x7fffa213b000 - 0x7fffa2336ff7 com.apple.QuartzCore (1.11 - 449.41.15) <3CD775C0-683D-3B4E-8EC2-AB1DAC4C3AE9> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x7fffa2337000 - 0x7fffa238cfff com.apple.QuickLookFramework (5.0 - 720.5) <9E76504A-B17B-3302-82DF-9CE1CB31CAC3> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook
0x7fffa238d000 - 0x7fffa23a0ff7 com.apple.SafariServices.framework (12602 - 12602.4.8) /System/Library/Frameworks/SafariServices.framework/Versions/A/SafariServices
0x7fffa289c000 - 0x7fffa2bbbfff com.apple.security (7.0 - 57740.31.2) /System/Library/Frameworks/Security.framework/Versions/A/Security
0x7fffa2bbc000 - 0x7fffa2c32ff7 com.apple.securityfoundation (6.0 - 55132.20.1) <9407620B-B230-3320-B0B7-5AE59F1D135C> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x7fffa2c5c000 - 0x7fffa2c5fff3 com.apple.xpc.ServiceManagement (1.0 - 1) <4E24C12E-6164-3A7A-8EB8-C2523492BAE8> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
0x7fffa2fe6000 - 0x7fffa3057ff7 com.apple.SystemConfiguration (1.14 - 1.14) /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x7fffa3058000 - 0x7fffa3405fff com.apple.VideoToolbox (1.0 - 1907.15.15) <685B6CCD-3027-3D0F-8B31-2388A3CE1BDC> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
0x7fffa3406000 - 0x7fffa463fff3 com.apple.WebCore (12602 - 12602.4.8) <2128FC8F-DFC5-350C-8E0B-E3CA6849AC6C> /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore
0x7fffa4640000 - 0x7fffa47aaff3 com.apple.WebKitLegacy (12602 - 12602.4.8) <83C97613-16F4-3BEF-B5D9-B7F69B10BBB3> /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebKitLegacy.framework/Versions/A/WebKitLegacy
0x7fffa47ab000 - 0x7fffa4b1dffb com.apple.WebKit (12602 - 12602.4.8) <04045E4A-16B0-308A-B27B-9E4DAFB12D8B> /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit
0x7fffa5691000 - 0x7fffa56acff3 com.apple.AppContainer (4.0 - 307.30.3) /System/Library/PrivateFrameworks/AppContainer.framework/Versions/A/AppContainer
0x7fffa56ad000 - 0x7fffa56baff3 com.apple.AppSandbox (4.0 - 307.30.3) /System/Library/PrivateFrameworks/AppSandbox.framework/Versions/A/AppSandbox
0x7fffa56bb000 - 0x7fffa56ddffb com.apple.framework.Apple80211 (12.0 - 1200.41) <360012DB-DAE7-3EEF-85F0-E5BE1DE3425D> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
0x7fffa56de000 - 0x7fffa56edfdb com.apple.AppleFSCompression (88 - 1.0) /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
0x7fffa57dc000 - 0x7fffa586797f com.apple.AppleJPEG (1.0 - 1) /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
0x7fffa58a0000 - 0x7fffa58a3ff3 com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <6FF50E26-5BDA-3421-BDAE-B57AE6E4F6AC> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
0x7fffa58a4000 - 0x7fffa58f6fff com.apple.AppleVAFramework (5.0.34 - 5.0.34) <2AA15DE0-9A7E-3CC0-988A-3BB080A8F603> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
0x7fffa5c8c000 - 0x7fffa5d0afff com.apple.backup.framework (1.8.3 - 1.8.3) /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
0x7fffa6990000 - 0x7fffa69b7ffb com.apple.ChunkingLibrary (172 - 172) <83E91936-305D-32A4-A256-5582B96B1852> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
0x7fffa72e0000 - 0x7fffa72e9ffb com.apple.CommonAuth (4.0 - 2.0) <830B940B-3523-38DE-996D-695739616D10> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
0x7fffa746d000 - 0x7fffa784afe7 com.apple.CoreAUC (224.0.0 - 224.0.0) <8DF6075A-0711-33A9-9031-6FDA22E85C4F> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
0x7fffa784b000 - 0x7fffa787bfff com.apple.CoreAVCHD (5.9.0 - 5900.4.1) <5E1B0512-E50B-3534-99EF-AD15E601877A> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
0x7fffa7a09000 - 0x7fffa7a19fff com.apple.CoreEmoji (1.0 - 39.1) <0A46D6BF-22F3-39AD-B3DC-DE1EE5C442CC> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
0x7fffa7ace000 - 0x7fffa7ae4ff3 com.apple.CoreMediaAuthoring (2.2 - 955) <3E1E33F1-B4FF-320E-B336-7E7F74D73642> /System/Library/PrivateFrameworks/CoreMediaAuthoring.framework/Versions/A/CoreMediaAuthoring
0x7fffa7aeb000 - 0x7fffa7b7bffb com.apple.CorePDF (4.0 - 4) <254118BE-2E30-3772-B425-6328D1487162> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
0x7fffa7cfc000 - 0x7fffa7d2cff3 com.apple.CoreServicesInternal (276.2 - 276.2) <7D8DEF04-72F1-39F4-BBFB-09E65D7B8C10> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
0x7fffa7fbc000 - 0x7fffa8046fff com.apple.CoreSymbolication (61050) /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
0x7fffa8047000 - 0x7fffa8185fd7 com.apple.coreui (2.1 - 430.6) <99D08D71-3E9D-300C-9EB2-A73F1B5E228C> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x7fffa8186000 - 0x7fffa8236ff3 com.apple.CoreUtils (5.0 - 500.9) <5567181B-721C-339E-A3DC-579E36D92341> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
0x7fffa8286000 - 0x7fffa82ebff3 com.apple.framework.CoreWiFi (12.0 - 1200.25.1) /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
0x7fffa82ec000 - 0x7fffa82f9ff7 com.apple.CrashReporterSupport (10.12 - 817) /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
0x7fffa836b000 - 0x7fffa8375ff7 com.apple.framework.DFRFoundation (1.0 - 104.14) <258B6CFE-FD64-31C5-9973-2FD80597ECDA> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
0x7fffa83ab000 - 0x7fffa8422ff7 com.apple.datadetectorscore (7.0 - 539.1) /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
0x7fffa845f000 - 0x7fffa849efff com.apple.DebugSymbols (137 - 137) /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
0x7fffa849f000 - 0x7fffa85b0fff com.apple.desktopservices (1.11.3 - 1.11.3) /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x7fffa86f0000 - 0x7fffa86faff7 com.apple.DisplayServicesFW (3.1 - 380) /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
0x7fffa8894000 - 0x7fffa8cc5ff7 com.apple.vision.FaceCore (3.3.2 - 3.3.2) /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
0x7fffaa01a000 - 0x7fffaa01afff libmetal_timestamp.dylib (600.0.48.32) <31DF1B9E-0BBF-308B-B78D-11CCE72DAA68> /System/Library/PrivateFrameworks/GPUCompiler.framework/libmetal_timestamp.dylib
0x7fffaa027000 - 0x7fffaa032ff3 libGPUSupportMercury.dylib (13.0.10) <7CC5CEF8-D132-3234-A078-6D080DFC599F> /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupportMercury.dylib
0x7fffaa2e6000 - 0x7fffaa302ff3 com.apple.GenerationalStorage (2.0 - 259.2) <00BF8427-967F-3693-A86F-DA0F29B49BF3> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
0x7fffaaa00000 - 0x7fffaaa76fff com.apple.Heimdal (4.0 - 2.0) <00F00E7E-7EF4-3254-86D3-ADA4F67938CF> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
0x7fffab099000 - 0x7fffab0a0ffb com.apple.IOAccelerator (289.32 - 289.32) <6395ACEE-5AD7-3536-AF12-FD6565415D94> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
0x7fffab0a2000 - 0x7fffab0b6ff3 com.apple.IOPresentment (1.0 - 25) <40934217-996A-3DDB-A8C4-484CA0F0222B> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
0x7fffab0b7000 - 0x7fffab0d9fff com.apple.IconServices (74.3 - 74.3) <3F0BD358-D019-3083-82F2-69CCAD5E5D66> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
0x7fffab175000 - 0x7fffab185ff3 com.apple.IntlPreferences (2.0 - 216) <589A5D92-6809-3F3C-900E-DBC60A07A101> /System/Library/PrivateFrameworks/IntlPreferences.framework/Versions/A/IntlPreferences
0x7fffab1bc000 - 0x7fffab372fff com.apple.LanguageModeling (1.0 - 123.2.4) /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
0x7fffab9cc000 - 0x7fffab9cffff com.apple.Mangrove (1.0 - 1) <05039E9F-9C07-375B-A940-D90D455A2EC2> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
0x7fffabc36000 - 0x7fffabcafff7 com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <6A759DBA-B7DF-363B-9827-AB1D1129BB34> /System/Library/PrivateFrameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
0x7fffabe0b000 - 0x7fffabe16ff3 com.apple.MobileKeyBag (2.0 - 1.0) <8A7EEA75-8334-3FB5-A83B-F0ECB87952B2> /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
0x7fffabe27000 - 0x7fffabe4ffff com.apple.MultitouchSupport.framework (368.7 - 368.7) /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
0x7fffabefe000 - 0x7fffabf08fff com.apple.NetAuth (6.0 - 6.0) <1E7765FC-4580-3CE4-A0F1-CAA22006AE43> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
0x7fffac784000 - 0x7fffac7c5ff7 com.apple.PerformanceAnalysis (1.145 - 145) <12640C1F-433D-3CD9-B2A8-048D57B8B56D> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
0x7ffface68000 - 0x7ffface82fff com.apple.ProtocolBuffer (1 - 249) /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
0x7ffface83000 - 0x7ffface93ffb com.apple.QuickLookThumbnailing (1.0 - 1) <1A91596D-0A8D-3B7A-ACF5-783A78E9723E> /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Versions/A/QuickLookThumbnailing
0x7ffface9c000 - 0x7fffacebfff3 com.apple.RemoteViewServices (2.0 - 124) <4765DC2E-CF05-38CF-9564-1FBACB7E167C> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
0x7fffadb2b000 - 0x7fffadb2efff com.apple.SecCodeWrapper (4.0 - 307.30.3) <1B0B2122-C230-3E3F-8A81-EBD58818586B> /System/Library/PrivateFrameworks/SecCodeWrapper.framework/Versions/A/SecCodeWrapper
0x7fffadbbd000 - 0x7fffadc3aff7 com.apple.Sharing (696.1.22 - 696.1.22) /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
0x7fffadc5b000 - 0x7fffadebafe7 com.apple.SkyLight (1.600.0 - 122.8) <2B8B6734-2B70-3BD8-BB8E-3338FB2708EE> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
0x7fffae09b000 - 0x7fffae0a7ff7 com.apple.SpeechRecognitionCore (3.3.2 - 3.3.2) /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
0x7fffae790000 - 0x7fffae7fcff3 com.apple.Symbolication (61080.2) <27A57DC2-FEB7-3D23-AEB5-E3E76C5AAE79> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
0x7fffaebf6000 - 0x7fffaebfcff7 com.apple.TCC (1.0 - 1) <956F7C1A-D457-3FE0-9CFE-3F1719F0865C> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
0x7fffaec8b000 - 0x7fffaee53ff7 com.apple.TextureIO (1.41 - 1.41) <3A9D9FD9-8997-3BD1-8046-76D0BF709806> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
0x7fffaeec7000 - 0x7fffaeec8fff com.apple.TrustEvaluationAgent (2.0 - 28) <07C1F711-A1E0-3BAC-8F4D-977516D50925> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
0x7fffaeec9000 - 0x7fffaf059ff3 com.apple.UIFoundation (1.0 - 490.7) <047781ED-9E79-361F-8E04-71FF90C650F3> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
0x7fffafab5000 - 0x7fffafb78ff7 com.apple.ViewBridge (280 - 280) <6D4F6019-5ECC-377B-AF7D-9796E96841CB> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
0x7fffaffa2000 - 0x7fffaffa8fff com.apple.XPCService (2.0 - 1) /System/Library/PrivateFrameworks/XPCService.framework/Versions/A/XPCService
0x7fffb0079000 - 0x7fffb007bffb com.apple.loginsupport (1.0 - 1) <4449ACBA-27A8-3311-BD92-CB7E63583FC6> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
0x7fffb00d0000 - 0x7fffb00ebff7 libCRFSuite.dylib (34) /usr/lib/libCRFSuite.dylib
0x7fffb00ec000 - 0x7fffb00f7fff libChineseTokenizer.dylib (21) <09E74E18-ADB2-30D2-A858-13691CB1186C> /usr/lib/libChineseTokenizer.dylib
0x7fffb0189000 - 0x7fffb018aff3 libDiagnosticMessagesClient.dylib (102) <422911A4-E273-3E88-BFC4-DF6470E48242> /usr/lib/libDiagnosticMessagesClient.dylib
0x7fffb018b000 - 0x7fffb039efff libFosl_dynamic.dylib (16.38) <8232FA8A-F16A-3DC0-AE68-B61EFCD5F4A4> /usr/lib/libFosl_dynamic.dylib
0x7fffb03ba000 - 0x7fffb03c1fff libMatch.1.dylib (27) <5D52A207-E2AF-3E05-8C51-91C1D82FCEE8> /usr/lib/libMatch.1.dylib
0x7fffb03c2000 - 0x7fffb03c2fff libOpenScriptingUtil.dylib (172) /usr/lib/libOpenScriptingUtil.dylib
0x7fffb03c3000 - 0x7fffb03c7ff3 libScreenReader.dylib (477.20.6) <8158E263-B7DF-3B0C-BABE-4FE94A53DFE5> /usr/lib/libScreenReader.dylib
0x7fffb03c8000 - 0x7fffb03c9ff3 libSystem.B.dylib (1238) <9CB018AF-54E9-300F-82BE-81FE553C9154> /usr/lib/libSystem.B.dylib
0x7fffb0435000 - 0x7fffb0460ffb libarchive.2.dylib (41.41.1) /usr/lib/libarchive.2.dylib
0x7fffb0461000 - 0x7fffb04ddfc7 libate.dylib (1.12.13) <8A963F37-CB4F-37FB-BFA5-273917C42437> /usr/lib/libate.dylib
0x7fffb04e1000 - 0x7fffb04e1ff3 libauto.dylib (187) <5BBF6A00-CC76-389D-84E7-CA88EDADE683> /usr/lib/libauto.dylib
0x7fffb04e2000 - 0x7fffb04f2ff3 libbsm.0.dylib (34) <20084796-B04D-3B35-A003-EA11459557A9> /usr/lib/libbsm.0.dylib
0x7fffb04f3000 - 0x7fffb0501ff7 libbz2.1.0.dylib (38) <6FD3B63F-0F86-3A25-BD5B-E243F58792C9> /usr/lib/libbz2.1.0.dylib
0x7fffb0502000 - 0x7fffb0558ff7 libc++.1.dylib (307.4) /usr/lib/libc++.1.dylib
0x7fffb0559000 - 0x7fffb0583fff libc++abi.dylib (307.2) <1CEF8ABB-7E6D-3C2F-8E0A-E7884478DD23> /usr/lib/libc++abi.dylib
0x7fffb0584000 - 0x7fffb0594ffb libcmph.dylib (6) <2B5D405E-2D0B-3320-ABD6-622934C86ABE> /usr/lib/libcmph.dylib
0x7fffb0595000 - 0x7fffb05aafc3 libcompression.dylib (34) <1691D6F2-46CD-3DA6-B44F-24CDD9BD0E4E> /usr/lib/libcompression.dylib
0x7fffb05ab000 - 0x7fffb05abff7 libcoretls.dylib (121.31.1) /usr/lib/libcoretls.dylib
0x7fffb05ac000 - 0x7fffb05adff3 libcoretls_cfhelpers.dylib (121.31.1) <6F37C5AD-7999-3D31-A52F-7AEED935F32D> /usr/lib/libcoretls_cfhelpers.dylib
0x7fffb0667000 - 0x7fffb074cff7 libcrypto.0.9.8.dylib (64.30.2) /usr/lib/libcrypto.0.9.8.dylib
0x7fffb08ea000 - 0x7fffb093dff7 libcups.2.dylib (450) <78243BA4-43AB-3364-8111-8D54D3382621> /usr/lib/libcups.2.dylib
0x7fffb098f000 - 0x7fffb0996ff3 libdscsym.dylib (145.1) /usr/lib/libdscsym.dylib
0x7fffb09b8000 - 0x7fffb09b8fff libenergytrace.dylib (15) /usr/lib/libenergytrace.dylib
0x7fffb09c8000 - 0x7fffb09cdff7 libheimdal-asn1.dylib (498.30.1) <4ED9F6E3-83BC-3302-B004-C25399DA0333> /usr/lib/libheimdal-asn1.dylib
0x7fffb09ce000 - 0x7fffb0ac0ff7 libiconv.2.dylib (50) <42125B35-81D7-3FC4-9475-A26DBE10884D> /usr/lib/libiconv.2.dylib
0x7fffb0ac1000 - 0x7fffb0ce6ffb libicucore.A.dylib (57149.0.1) <6B5FDA93-AA88-318F-9608-C2A33D602EC7> /usr/lib/libicucore.A.dylib
0x7fffb0cec000 - 0x7fffb0cedfff liblangid.dylib (126) <3F4530C9-8BE1-3AA7-9A82-98694D240866> /usr/lib/liblangid.dylib
0x7fffb0cee000 - 0x7fffb0d07ffb liblzma.5.dylib (10) <44BD0279-99DD-36B5-8A6E-C11432E2098D> /usr/lib/liblzma.5.dylib
0x7fffb0d08000 - 0x7fffb0d1eff7 libmarisa.dylib (5) <2183D484-032D-3DE5-8984-3A14006E034E> /usr/lib/libmarisa.dylib
0x7fffb0d1f000 - 0x7fffb0fc6ff7 libmecabra.dylib (744.5) /usr/lib/libmecabra.dylib
0x7fffb0ff9000 - 0x7fffb1072ff7 libnetwork.dylib (856.30.16) <66C6E4D6-B39C-3309-80C1-CBBE170DDD51> /usr/lib/libnetwork.dylib
0x7fffb1073000 - 0x7fffb1443d97 libobjc.A.dylib (706) /usr/lib/libobjc.A.dylib
0x7fffb1446000 - 0x7fffb144afff libpam.2.dylib (21.30.1) <71EB0D88-DE84-3C8D-A2C5-58AA282BC5BC> /usr/lib/libpam.2.dylib
0x7fffb144b000 - 0x7fffb147bff7 libpcap.A.dylib (67) <450DB888-2C0C-3085-A5F1-69324DFE902C> /usr/lib/libpcap.A.dylib
0x7fffb1499000 - 0x7fffb14b5ffb libresolv.9.dylib (64) /usr/lib/libresolv.9.dylib
0x7fffb14b6000 - 0x7fffb14effff libsandbox.1.dylib (592.31.1) <0B3D5690-EF2C-39A6-B63C-CFB8CBAC0956> /usr/lib/libsandbox.1.dylib
0x7fffb1503000 - 0x7fffb1504ff3 libspindump.dylib (230.3) <59FAC445-F8FB-3881-A69A-FD0E98100E19> /usr/lib/libspindump.dylib
0x7fffb1505000 - 0x7fffb164dfe3 libsqlite3.dylib (253) /usr/lib/libsqlite3.dylib
0x7fffb16a9000 - 0x7fffb16f9fff libstdc++.6.dylib (104.1) <91F66BFD-F927-301F-B8F3-578A5CEA78F4> /usr/lib/libstdc++.6.dylib
0x7fffb1742000 - 0x7fffb174ffff libxar.1.dylib (357) <58BFB84B-66FE-3299-AA3D-BBA178ADEE39> /usr/lib/libxar.1.dylib
0x7fffb1753000 - 0x7fffb1842ffb libxml2.2.dylib (30.11) /usr/lib/libxml2.2.dylib
0x7fffb1843000 - 0x7fffb186cfff libxslt.1.dylib (15.8) /usr/lib/libxslt.1.dylib
0x7fffb186d000 - 0x7fffb187eff3 libz.1.dylib (67) <46E3FFA2-4328-327A-8D34-A03E20BFFB8E> /usr/lib/libz.1.dylib
0x7fffb188d000 - 0x7fffb1891ff7 libcache.dylib (79) <0C8092D3-600F-3ADD-A036-F225B6CDCA43> /usr/lib/system/libcache.dylib
0x7fffb1892000 - 0x7fffb189dff7 libcommonCrypto.dylib (60092.30.2) /usr/lib/system/libcommonCrypto.dylib
0x7fffb189e000 - 0x7fffb18a5fff libcompiler_rt.dylib (62) /usr/lib/system/libcompiler_rt.dylib
0x7fffb18a6000 - 0x7fffb18aefff libcopyfile.dylib (138) <64E285D9-5485-333B-AEE7-8B0C8FB9275F> /usr/lib/system/libcopyfile.dylib
0x7fffb18af000 - 0x7fffb1932fdf libcorecrypto.dylib (442.30.20) <2074B932-FD79-30A9-8E90-AF25C49F2AF1> /usr/lib/system/libcorecrypto.dylib
0x7fffb1933000 - 0x7fffb1965fff libdispatch.dylib (703.30.5) /usr/lib/system/libdispatch.dylib
0x7fffb1966000 - 0x7fffb196bff3 libdyld.dylib (421.2) <6F506653-FFF6-3DB8-84F1-109AE3C52F32> /usr/lib/system/libdyld.dylib
0x7fffb196c000 - 0x7fffb196cffb libkeymgr.dylib (28) <1A318923-1200-3B06-B432-5007D82F195D> /usr/lib/system/libkeymgr.dylib
0x7fffb196d000 - 0x7fffb1979ffb libkxld.dylib (3789.41.3) <87550136-9353-348B-9CD9-C342B48C5AAF> /usr/lib/system/libkxld.dylib
0x7fffb197a000 - 0x7fffb197afff liblaunch.dylib (972.30.7) <15FACC21-079A-3BDF-9AFB-4253EFDEB587> /usr/lib/system/liblaunch.dylib
0x7fffb197b000 - 0x7fffb1980fff libmacho.dylib (894) /usr/lib/system/libmacho.dylib
0x7fffb1981000 - 0x7fffb1983ff3 libquarantine.dylib (85) /usr/lib/system/libquarantine.dylib
0x7fffb1984000 - 0x7fffb1985ffb libremovefile.dylib (45) /usr/lib/system/libremovefile.dylib
0x7fffb1986000 - 0x7fffb199eff7 libsystem_asl.dylib (349.30.2) /usr/lib/system/libsystem_asl.dylib
0x7fffb199f000 - 0x7fffb199fff7 libsystem_blocks.dylib (67) /usr/lib/system/libsystem_blocks.dylib
0x7fffb19a0000 - 0x7fffb1a2dfef libsystem_c.dylib (1158.30.7) <2F881962-03CB-3B9D-A782-D98C1BBA4E3D> /usr/lib/system/libsystem_c.dylib
0x7fffb1a2e000 - 0x7fffb1a31ffb libsystem_configuration.dylib (888.30.2) <4FE3983C-E4ED-3939-A578-03AD29C99788> /usr/lib/system/libsystem_configuration.dylib
0x7fffb1a32000 - 0x7fffb1a35fff libsystem_coreservices.dylib (41.4) <1A572B9E-0C47-320F-8C64-7990D0A5FB5A> /usr/lib/system/libsystem_coreservices.dylib
0x7fffb1a36000 - 0x7fffb1a4eff3 libsystem_coretls.dylib (121.31.1) <4676F06D-274D-31BE-B61C-4D7A4AEF4858> /usr/lib/system/libsystem_coretls.dylib
0x7fffb1a4f000 - 0x7fffb1a55fff libsystem_dnssd.dylib (765.30.11) /usr/lib/system/libsystem_dnssd.dylib
0x7fffb1a56000 - 0x7fffb1a7fff7 libsystem_info.dylib (503.30.1) <9ED9121C-F111-3FAD-BC2F-C95DEE1C9362> /usr/lib/system/libsystem_info.dylib
0x7fffb1a80000 - 0x7fffb1aa2ff7 libsystem_kernel.dylib (3789.41.3) /usr/lib/system/libsystem_kernel.dylib
0x7fffb1aa3000 - 0x7fffb1aeafe7 libsystem_m.dylib (3121.4) <266DB92B-A86F-3691-80FB-1B26AD73CFF3> /usr/lib/system/libsystem_m.dylib
0x7fffb1aeb000 - 0x7fffb1b09ff7 libsystem_malloc.dylib (116.30.3) /usr/lib/system/libsystem_malloc.dylib
0x7fffb1b0a000 - 0x7fffb1b61ffb libsystem_network.dylib (856.30.16) <4AE368E9-605D-379D-B04C-2AC7455B8250> /usr/lib/system/libsystem_network.dylib
0x7fffb1b62000 - 0x7fffb1b6bff3 libsystem_networkextension.dylib (563.30.15) /usr/lib/system/libsystem_networkextension.dylib
0x7fffb1b6c000 - 0x7fffb1b75ff3 libsystem_notify.dylib (165.20.1) /usr/lib/system/libsystem_notify.dylib
0x7fffb1b76000 - 0x7fffb1b7efe7 libsystem_platform.dylib (126.1.2) <3CA06D4E-C00A-36DE-AA65-3A390097D1F6> /usr/lib/system/libsystem_platform.dylib
0x7fffb1b7f000 - 0x7fffb1b89ff7 libsystem_pthread.dylib (218.30.1) /usr/lib/system/libsystem_pthread.dylib
0x7fffb1b8a000 - 0x7fffb1b8dff7 libsystem_sandbox.dylib (592.31.1) <7BBFDF96-293F-3DD9-B3A4-7C168280B441> /usr/lib/system/libsystem_sandbox.dylib
0x7fffb1b8e000 - 0x7fffb1b8ffff libsystem_secinit.dylib (24) <5C1F1E47-0F7D-3E25-8DEB-D9DB1F902281> /usr/lib/system/libsystem_secinit.dylib
0x7fffb1b90000 - 0x7fffb1b97fff libsystem_symptoms.dylib (532.30.6) <5D990CF5-B58F-39F7-B375-99B4EC62CFBD> /usr/lib/system/libsystem_symptoms.dylib
0x7fffb1b98000 - 0x7fffb1bb8ff7 libsystem_trace.dylib (518.30.7) <6D34D1EA-2A3C-3D2D-803E-A666E6AEEE52> /usr/lib/system/libsystem_trace.dylib
0x7fffb1bb9000 - 0x7fffb1bbeffb libunwind.dylib (35.3) <9F7C2AD8-A9A7-3DE4-828D-B0F0F166AAA0> /usr/lib/system/libunwind.dylib
0x7fffb1bbf000 - 0x7fffb1be8ff7 libxpc.dylib (972.30.7) <65E41BB6-EBD5-3D93-B0BE-B190CEE4DD93> /usr/lib/system/libxpc.dylib

External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 1
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 12756
thread_create: 0
thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=355.9M resident=0K(0%) swapped_out_or_unallocated=355.9M(100%)
Writable regions: Total=121.7M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=121.7M(100%)

                            VIRTUAL   REGION 

REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Accelerate framework 128K 2
Activity Tracing 256K 2
CG backing stores 2344K 4
CG image 36K 7
CoreAnimation 32K 3
CoreServices 184K 2
CoreUI image data 916K 3
CoreUI image file 180K 4
Kernel Alloc Once 8K 2
MALLOC 90.2M 35
MALLOC guard page 48K 10
Memory Tag 242 12K 2
STACK GUARD 56.0M 8
Stack 11.0M 8
VM_ALLOCATE 84K 15
__DATA 38.6M 268
__GLSLBUILTINS 2588K 2
__IMAGE 528K 2
__LINKEDIT 113.8M 16
__TEXT 242.1M 267
__UNICODE 556K 2
__XOJO 8K 2
mapped file 127.0M 13
shared memory 16.3M 11
=========== ======= =======
TOTAL 702.8M 666

Model: MacPro5,1, BootROM MP51.007F.B03, 4 processors, Intel Core i5, 3.29 GHz, 16 GB, SMC 1.39f11
Graphics: NVIDIA GeForce GTX 970, NVIDIA GeForce GTX 970, PCIe, 4095 MB
Memory Module: DIMM3, 8 GB, DDR3, 1600 MHz, A-DATA Technology, DDR31600
Memory Module: DIMM4, 8 GB, DDR3, 1600 MHz, Kingston, 99U5403-159.A01LF
Network Service: Ethernet, Ethernet, en0
Serial ATA Device: WDC WD10EZEX-00KUWA0, 1 TB
Serial ATA Device: FUJITSU MHW2120BH, 120.03 GB
Serial ATA Device: Samsung SSD 850 EVO 120GB, 120.03 GB
Serial ATA Device: Samsung SSD 750 EVO 120GB, 120.03 GB
USB Device: USB 3.0 Bus
USB Device: USB 2.0 Bus
USB Device: Hub
USB Device: Keyboard Hub
USB Device: USB Optical Mouse
USB Device: Apple Keyboard
USB Device: USB 2.0 Bus
USB Device: Hub
Thunderbolt Bus:

Update check doesn't work on Windows unless app is run as Administrator

Hi Kem,

I had everything working great until I tried in on an "installed" version of my app (installed in the normal program files). When the app runs from there, it never shows that an update is available. But if I "run as administrator", then it works (update is detected/found, update/install process runs).

Also, when it does run (as Administrator), the install process is failing to completely remove the backup. Log files says "Access is denied" when trying to delete the executable. All other files in backup are removed successfully, only fails on the executable (and therefore the backup folder remains as well). This does not occur if running the app from somewhere besides the program files folder (like the Xojo build folder) - just like the update detection issue above.

I tried updating to the current release of Kaju (after fixing that same issue I reported before - "shZipper set to Synchronous mode instead of Asynchronous after copying classes from Admin app"), but get the same results. Both the no updates unless run as Administrator, and failing to delete backup when it does run.

This was tested with Windows 10 on two different computers.

Thanks,
Jay

Folder of the executable not correctly identified

Kaju Version 2.0 in DecompressCompleted the folder ReplacementAppFolder is not always correctly identified. In my case a subfolder "config" was selected resulting in the deletion of all the files.

This change in DecompressCompleted fixes the issue:

for i as integer = 1 to containingFolder.Count
dim f as FolderItem = containingFolder.Item( i )
dim name as string = f.Name
Dim leftChars As String = name.Left( 1 )
If leftChars <> "." And leftChars <> "_" And f.Directory=False Then
item = f
Exit
end if
next

Arndt

Not compatible with Xojo 2018 R3

Short summary: Thanks for Kaju. Kaju 2.1 not working with Xojo <2018 R4. Maybe state minimum Xojo version supported.

Long version:

First off thanks for making this available.

I'm using Xojo 2018 R3 on MacOS 10.14.6

I tried to add this to my app (and yes, I opened the admin app and copied the Folder "Kaju Classes" into my app) but I got the following erors:

KajuUpdateWindow.hsSocket.Error Declaration
hsSocket on KajuUpdateWindow implements the event "Error," but its superclass Kaju.HTTPSocketAsync has already implemented the event.
Sub Error(e As RuntimeException)

KajuUpdateWindow.hsSocket.FileReceived Declaration
hsSocket on KajuUpdateWindow implements the event "FileReceived," but its superclass Kaju.HTTPSocketAsync has already implemented the event.
Sub FileReceived(URL As String, HTTPStatus As Integer, file As FolderItem)

KajuUpdateWindow.hsSocket.ReceivingProgressed Declaration
hsSocket on KajuUpdateWindow implements the event "ReceivingProgressed," but its superclass Kaju.HTTPSocketAsync has already implemented the event.
Sub ReceivingProgressed(bytesReceived As Int64, totalBytes As Int64, newData As String)

So I checked the Kaju admin app itself for errors - I got the same errors.

I then opened it in Xojo 2019 R3.1 - no errors.

The problem seems to be in the update from version 2 to version 2.1 you started to use URLconnection - which was introduced with Xojo 2018 R4.

Pity

It would help if you stated what the minimum version of Xojo is for compatibility.

All the best

Markus

Stuck in processing file

Kaju is stuck in processing step after downloading the archive. I upgraded the code to API2 myself replacing the following:
Window by DesktopWindow
App.YieldToNextTread() by Thread.YieldToNext()

The archive is downloaded in a temporary folder and exists but nothing happens after that

Macos Big Sur
Xojo 2022r2
Kaju 2.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.