Mac app installed in unknown place on developer's machine - macos

I'm developing a Mac Electron-based app. When I install the electron-builder generated pkg on Macs others than my development machine, it is installed either globally in the /Applications folder, or locally for the user - based on the user's choice during installation. It also appears properly in the Launch Pad.
However, on my development machine, when I install the app from the same pkg, it is not installed there. It is installed somewhere else - and I'm not sure where. It may be the last place where I compiled the app, but I am uncertain. Launch Pad is also uncertain, and most of the times the app does not appear there after installation.
It is obvious the Mac is keeping track of a default installation folder for each application, which for some reason overrides the user selection during installation.
Where is this taking place, and how can I reset it so the Mac app is installed where it should? It makes testing a real pain.

You can either search for the app using Spotlight search
⌘ + Space-bar
And then hold they command key after you select your app int the spotlight seach.
A bar with the location of the file will appear at the bottom of the spotlight search window.
Path for the application
Or you could search for it using the find command on terminal.
find / -name YourApp.app

Related

Unable to update to Xcode 8

I would like to update to Xcode 8, but when I start the App Store it just shows me an Open button, but my existing Version is 7.3.1
The requirements should be El Capitan 10.11.5 - I have 10.11.6 installed.
Why is there no Update button?
Check if you have multiple installations of Xcode on your system. The App Store often gets confused and loads one you're not considering, such as the version on your back up drive. It's possible it has updated a different installation than the one it launches as well.
Executing the following command in a terminal window should list all installations of Xcode the App Store may find.
mdfind "kMDItemCFBundleIdentifier == 'com.apple.dt.Xcode'"
When you have Xcode open (from hitting Open in the store), right click the Xcode icon on your dock, select Options, and Show in Finder. Does the installation it shows match up with the one you expected it to launch?
If you specifically open each Xcode installation the mdfind command found, are any of them Xcode 8?
You can control which installation of Xcode the App Store will update. Check each of the app folders, and look for a Contents/_MASReceipt folder. Ensure the installation you want to update has that (and a receipt file inside that), and delete the _MASReceipt folder for all of the other versions.
Now the App Store app should update the correct installation for you.
All I had to do was restart my mac. Then, went to the App Store and saw "Update" instead of "Open".

Mac App Store claims newer version of my app is already installed

I'm trying to install my app from the Mac App Store now that it's been published. I'm using the same machine as the one I developed the app one. For some reason, the App Store claims "A newer version of this app is already installed on this computer." I haven't touched the version number since I submitted it so this is strange.
I've removed all references of the app from Applications, Library/Preferences, Library/Application Support, Library/Caches, /var, and Trash. I've also cleaned the Product from within Xcode.
Any suggestions?
Thanks!
I had this problem with CoBook on Mountain Lion and nothing out there seemed to work until I found this:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Source: http://web.archive.org/web/20130519023616/http://www.hacktheday.com/force-reinstall-application-downloaded-from-mac-app-store
To fix this problem, you need to perform two steps.
Delete all instances of your app. There are likely copies hiding in your home folder in ~/Library/Developer/Xcode/DerivedData/
Reset the user domain in the Launch Services database with
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain user
The lsregister command manages the Launch Service database, or the database that keeps track of applications installed on your Mac and what types of files they open.
It's only necessary to reset the user domain (unlike the other answer from Mat E. that also resets the system and local domain) since your XCode DerivedData exists in your individual user directory. Only resetting this domain will prevent unnecessary warnings about running an app for the first time from reappearing.
Go to ~/Library/Developer/Xcode/DerivedData/ and delete your app's build folder.
This happened again to me but unfortunately the other solutions didn't work. This is what ended up working:
Open the App Store. From the menu bar click Store > Sign In
Click Purchases from the top of the App Store window.
Select your app in the list. Then right or control click where you see Installed then click Install.
Make sure and use the same Apple ID used for the original purchase.
This also works for free apps.

How to deploy a FireMonkey Application for Mac OSX?

I can run a FireMonkey Application on Mac OSX with PAServer. But now, I would like to deploy the application Mac OS (something like MSI under Windows). How can I do this?
You'll want to read more about Application Bundles.
Using the application bundle that Delphi creates and deploys via PAServer
Since you're using the PAServer, you'll find that it has already created an application bundle for you. After you run the program via the PAServer, look in the following folder on the Mac for the application bundle:
/Users/[username]/Applications/Embarcadero/PAServer/scratch-dir/[profilename]
If your project is named Project1, you'll see an application bundle in that folder named Project1.
If you read the above wiki article, you'll know that Project1 has a "hidden" extension of .app, and the whole thing is really a folder with all of the required files to run the application.
Go ahead and run this application bundle directly on the Mac. If it complains about missing dylibs, such as libmidas.dylib, simply copy them from the PAServer folder into the application bundle's MacOS folder.
To the Mac OS user, the application bundle appears as a single program file, complete with an icon. The user can double-click the application bundle to run the application, drag it to their dock, etc.
Changing the icon
The application bundle will have the Delphi icon by default, but you can replace it with your own icon. On the Mac, simply right-click on the application bundle in Finder, and select Show Package Contents. In there, look in the Contents/Resources folder for the .icns file.
Use the Icon Composer application that was installed with XCode to create your .icns icon file from existing image files.
Peeking inside the bundle
Peek around inside at the rest of the contents. You'll see the required dylib, your program file, and the Info.plist file, which is a text file with things like application IDs, signatures, and other important things.
More about deployment
If your application can be self contained in an app bundle, the standard method is to put the application bundle inside a disk image .dmg file, which allows the user to drop the application into the applications folder.
If your application requires the installation of additional files, libraries, databases, or frameworks, etc., you should create a package. You can utilize PackageMaker to do this. A package is similar to the "msi" installer on Windows that you mention.
When the user double-clicks the package, it's run by Installer. It has a wizard style interface and walks the user through installing the application. You can also sign the package with your code signing certificate.
If you want to include your application bundle in the app store, you'll need to sign it. You'll also need to sandbox it.
Sandboxing and the Mac App Store - Nov 2, 2011
The vast majority of Mac users have been free from malware and we're
working on technologies to help keep it that way. As of March 1, 2012
all apps submitted to the Mac App Store must implement sandboxing.
Sandboxing your app is a great way to protect systems and users by
limiting the resources apps can access and making it more difficult
for malicious software to compromise users' systems. Learn more by
visiting the App Sandbox page.
You must create an Application Bundle in order to deploy you app on a OSX System .
Check these links for more information
Deploying Your Application (Mac OS X installers )
Application Bundle
Building Fancy DMG Images on Mac OS X

Why does my Firemonkey app open a terminal window on OSX but not on Win32?

I created a simple testbed app in Delphi XE2, and compiled both a Win32 and OSX version of the application.
I zipped up the OSX version, along with a copy of the libcgunwind dylib runtime file and copied this files to a Mac i have access to.
When I unzipped the file, the mac recognized my OSX application and I double clicked it.
This, in turn, opened up a terminal window for some unknown reason along with my simple app's form.
The application itself ran and behaved just fine, but I'm curious why a terminal window would open up on the Mac?
There is a free tool available for Delphi XE2 that will create the OSX deployment app bundle for you, from Windows, without the need for PAServer.
http://enesce.com/delphiosx_bundler
Check the readme for instructions.
IIRC this happens if you execute the binary directly instead via a bundle
Lazarus/FPC apps had the same problem. IIRC the directly executed binary also didn't get events under those circumstances, but those apps were Carbon based. That problem also went away when running via a bundle setup (which is pretty much a manifest, a few dirs and a symlink)
Your application needs to be run from the application bundle. If you run it directly, you'll get the side effect of seeing the terminal window with the command line that is running the application.
You'll want to read more about Application Bundles.
If you're using PAServer, after you run the program for the first time on the Mac, look in the following folder on the Mac for the application bundle:
/Users/[username]/Applications/Embarcadero/PAServer/scratch-dir/[profilename]
If your project is named Project1, you'll see an application bundle in that folder named Project1.
If you read the above wiki article, you'll know that Project1 has a "hidden" extension of .app, and the whole thing is really a folder with all of the required files to run the application.
To the Mac OS user, the application bundle appears as a single program file, complete with an icon. The user can double-click the application bundle to run the application, drag it to their dock, etc.
The application bundle will have the Delphi icon by default, but you can replace it with your own icon. On the Mac, simply right-click on the application bundle in Finder, and select Show Package Contents. In there, look in the Contents/Resources folder for the .icns file.
Use the Icon Composer application that was installed with XCode to create your .icns icon file from existing image files.
Peek around inside at the rest of the contents. You'll see the required dylib, your program file, and the Info.plist file, which is a text file with things like application IDs, signatures, and other important things.

Sharing iPhone Apps for the Simulator

iPhone Apps built for the simulator are stored here:
/Users/<username>/Library/Application Support/iPhone Simulator/User/Applications
Is it possible to copy the <GUID>.sb and <GUID> directory and install them on a different computer (with Development tools installed)?
This would be very useful for testing/demoing with out having to buy iPhones for all the managers and external clients.
I found a way that requires just a little more setup, but is much easier for non-developers:
Instructions for your users/testers:
Install Xcode following Apple's instructions
Double-click the attached application - the iPhone simulator will launch, install the app and start it automatically.
How to set it up:
Download and unzip (to a folder on your desktop or wherever) 'Simulator Bundler' from: http://github.com/landonf/simlaunch/downloads
Set your XCode build target to the required Simulator configuration (iPad/iPhone/which iOS version)
Do a 'Build and archive'
Find it: select 'Archived applications' in the Organizer, right click the relevant build, select "Reveal archived application in Finder"
Drag the application (yourAppName, no extension) onto the Simulator Bundler app
Done. This will create a self-contained Mac OS X yourAppDisplayName.app file in the same folder (with your app's icon as the icon) that you can stick up on an FTP server or email to your users/testers.
--
I think it's much neater/slicker than having to explain where to copy files, how to launch the simulator and so on.. And if anything gets messed up they can just uninstall via the familiar tap-and-hold + (x) gesture in the simulator UI, then double-click the app you sent them again.
You can also produce several of these packages changing the bundle identifier between builds, allowing them to be installed side by side in your testers' simulators; say for getting some user feedback on different UI designs, or configure one for Production and one for Staging/QA servers, so your content editors can check their changes before they go live or whatever..
The ability to reinstall the app from a desktop icon is also very convenient for localisation testing: launch the simulator, uninstall the app if present, set the required region format and language, double click the icon on your desktop, test; repeat for each required locale. (guarantees a fresh install each time, I've found that switching language with the app installed can result in all sorts of strange behaviour)
Yes, if you send those files to another person, and they put them into that directory, they can test the applications in the iPhone Simulator as well :)

Resources