install4j how to create custom installer for macOS single bundle archive - macos

To create installer for macOS (i4j 9.0.2) I used option "Installer-macOS single bundle". But it is deprecated now. As advised I use "Archive-macOS single bundle archive" instead. I want to have same installation dialogs as before. So, I selected "Use setup application" and had to create custom installer application in section "Installer". I created new application same as default "Installer" - manually added there all screens and actions with the same values as in "Installer".
Is this correct?
Anyway installation dialogs on Mac run without icons and images. Also installation wizard default location is not "Applications". What is wrong?

I created new application same as default "Installer" - manually added there all
screens and actions with the same values as in "Installer". Is this correct?
You can put all the screens that you want to use in the macOS setup application into a screen group and then add a link to that screen group in the setup application. In that way you do not have to duplicate them.
Anyway installation dialogs on Mac run without icons and images
I do not see that behavior here. Please contact support#ej-technologies.com with a download link to a media file that exhibits this behavior together with the .install4j project file.
Also installation wizard default location is not "Applications".
The media file type is an archive, it does not have an installation directory, but the user drags the application bundle to the desired location. This is the default installation procedure on macOS. You can style the DMG so that it shows a symbolic link to /Applications as a target in the window. This makes it easier for the user. For more information on that topic, see
https://www.ej-technologies.com/resources/install4j/help/doc/concepts/dmgStyling.html

Related

Associate App with Messages Extension

I created a Messages Extension in Xcode 8 using the appropriate template, that seems to be working fine and when I run the extension, it's installed in the Messages app and I can use it without any issues.
My problem is that I wanted to create an actual app to be associated with this extension (so that the user would be able to search the extension through the Messages Store or install the actual app through the App Store). I gave it a matching bundle identifier (my extension is com.XXX.testmessage.MessagesExtension, so for the app I set com.XXX.testmessage), but when I run the app, it doesn't install the extension.
Is it possible to do that? And if so, what am I missing?
In XCode8, open your existing app. Then you need to add a new target to your app (File->New->Target->iOS->Sticker Pack Extension (or an iMessage Extension if you want a custom messages experience)). It will then create a folder visible in Project Navigator. The name of the folder depends on the name you gave to the extension. In that folder you will find a Stickers.xcassets where you can drop your stickers.

overriding Mac app file associations via CFBundleDocumentTypes in info.plist

I develop a Mac app that saves and loads files of a unique type. The type is properly declared in the info.plist under CFBundleDocumentTypes, listed as LSHandlerRank: Owner and CFBundleTypeRole: Editor. I am releasing a new version of my app and I would like that if users who already have a previous version of my app on their machine install the new version but keep the old version also installed, the new version automatically takes over the file association for this type from the old version of the app. But the default OS behavior seems to be to grant the earliest installed app associated with a file type to be it's permanent owner unless the user manually changes it. I know that the command line tool duti can make association changes, and also the system file com.apple.LaunchServices.plist can be edited, but these don't seem like the best or most reliable way to go about this programmatically from an app. Is there any "right"/Apple-sanctioned way to do what I want?
The official, Apple-sanctioned way for an application to set the default application for a file type is probably to use their provided LSSetDefaultRoleHandlerForContentType function. This function sets the values stored in LaunchServices.
Here is the limited official documentation on how to use this API in Objective-C and Swift.
There doesn't appear to be any way to do this via Info.plist, as the first application get's set as the user preferred application. The user must change their preferred application, which you can facilitate with the above API.

Where is the information for context menus stored in various OS?

Windows
Ubuntu and Mac
Windows was fairly simple (thanks to SO community member ExpertSystemfor helping me on this). The context menu information is stored in Registry
I do not know where the information for context menu is stored for Ubuntu and Mac.
Where is this information stored?
For OSX, an application creates a bundle, which is a special type of folder containing various files and the executable for the application. One of those is Info.plist where a .plist file is an XML file of named value types. You'll need to modify that and register the change with LaunchServices.
The answer is explained in more detail here
context menue
Ubuntu (with unity) is using Nautilus as default file manager. other file manager, other location.
information for nautilus is stored here:
~/.gnome2/nautilus-scripts
Further you should google for nautilus actions.
Have a look at:
https://askubuntu.com/questions/21953/how-to-customize-the-context-menu-in-nautilus
context menue - openwith only
If you are searching for a simple OpenWith - you just can create a .desktop file - whitch is also selectable in GTK3 Natulis-Versions.

PackageMaker installs nothing

i have a problem, which is exactly as here http://compgroups.net/comp.sys.mac.apps/PackageMaker-not-installing-my-app (no solution is offered)
simply said, with PackageMaker i create an installer, which should just copy the .app inside /Applications
all goes well, the installer has the apropriate size of 150MB, the install starts, iam promped for the install location and admin password, i click install, progress shows up and a window that installation was successfull, but when i look at the Applications, or the custom folder specified, its nothing there
i tryed the PackageManager from Xcode 3 and also 4, but the result is the same, i also tryed to set the file permission for everybody, so they are world writable, but no success
Are you testing the installer on the same machine where you are building the installer? If you've set the "Allow Relocation" box a install will simply overwrite your already existing app you used for packaging instead of installing to /Applications.
Don't create the package just to move the app inside /Applications.
Just zip your app bundle so that it becomes YourApp.app.zip, which is a perfectly acceptable way to distribute your app. Then the user can place the app bundle (after unpacking the zip) wherever the user wants.
Do you have "Include root in package" enabled for the package's contents? See this answer for an explanation of what it does and why you probably need it.

Mac OS X, application's developer name?

I have created an app for mac os x using xcode 4
In the build settings I see my name (the mac os x registered user's name)
Anyhow, I want to share the app but I don't want other to know that I created this app
So, is there a way to find out who created the app ?
If there's is how can I remove my name from the app ?
Thanks
It has some smell, to distribute an application anonymously. Anyway: You can change the information of your application by editing the Info.plist file inside your .app-bundle.
Right-click your application and select "Show package contents" from the context-menu. Open the folders and search for the "Info.plist" file. Open the file with TextWrangler, BBEdit oder the PropertyFile-Editor of XCode and search for your name. You can then simply replace it with anything else.
But remember:
An application should never ever been distributed without informations on the developer. The described method will only remove all "visible" informations on you. Informations on you that are part of the compiled binary won't be changed by this.

Resources