Skip to main content

Building Installer for mac using packages (Implementation level details)


So now that you have a code ready, next question is how you are going to ship it as a product to end users. The easiest and user friendly solution, is to build the Installer for your product!

Building an installer has many advantages, like:

  • User don't have to be worried about the installation steps (the user has to just follow laymen's instructions to get ready to use the product).
  • It eliminates human errors.
  • Makes the product easy to install and use.

So now that we have idea of WHY we need Installers, let see what packages offer us to build installers for mac. Packages is a tool developed for mac.


  • Packages can be either flat or bundle. As per my observations, flat packages cannot be inspected to view the contents of the package. But there are ways to extract the contents for viewing purpose using pkgutil utility. In case of Bundle packages, user can view the contents of the bundle directly. Its like a directory.
  • Packages have presentation editor which allows you to design the screen that your installer needs to show. These are plain html mark-up files which you can edit as per your needs.
  • Since you may have more than on components that you need to install on users machine, _packages_ have the concept of bundle/package where each package is the component. You can add as many packages as you want and even control which packages the user needs to see and check mark while installation and which ones should be mandatorily installed.
  • Each package that you add in the installer can have payload and pre/post install scripts.
  • Payload is the actual component and you can specify where exactly in users machine you need to copy that component. Pre install script is the script that runs before installing the component. So this script can be leveraged to check the compatibility or some pre settings that you need to do. Post install scripts run after the package is installed.
  • Also there is global level pre script that allows is run even before proceeding with the Introduction/Read me screen of the installer.
  • It also provides feature to check for requirements such as processor, RAM, etc on users machine before installation.
  • Packages provide the facility to add new screens to the installer in the form of Installer plugins. Installer plugins can be developed in the xcode. I personally used objective C to develop a Registration panel plugin that allows user to add license key and verify with the backend before proceeding with the installation.

Comments

Popular posts from this blog

When to use Azure Virtual Machine Scale Sets?

So it all started with client's requirement to build a Minimum Viable Product (MVP). The backend of the product was written in python and involved processing of images using Computer Vision. We decided to host the backend in Azure. There were lots of advantages of having the backend hosted in cloud instead of having an on-premise setup. The thing that attracted us the most was infrastructure scaling and availability of the system. We now dont have to bother about infrastructure, power consumption, system availability, system failures, etc. We were in need of GPU machines to run the code in backend. We though of using N-Series Azure virtual machines for this purpose. We wanted to scale the machines horizontally to handle multiple requests. We booted up few more machines to handle the load. This is where Azure Load balancer came into picture. Since there were multiple instances of virtual machines, we needed someone to decide for us, which machine the request should go to. We connect...

Rich previews using SEO, for Single Page Applications while sharing links on any social media

You probably know what SEO is. The scope of this article is to solve the problem of rich previews when you share a link about your Single Page Application(SPA) on any social media. This problem exists because, as the name suggests SPAs has only one HTML page in which entire application is loaded. This implicitly means that either we solve the problem of meta tags for each application route somehow or follow the workaround as mentioned below to serve content to bots separately. This article makes use of AWS services to achive our goals of rich previews. Assumptions I assume that the SPA is hosted in a S3 bucket and is connected to cloudfront. Read more about cloudfront here .  The concept Maintain a S3 bucket with route names as the folders inside it. Each folder will have an index.html file corresponding to that route. At minimum, this index.html, for any specific route, will have a html document with head section having all the required meta information. When any o...

Designing a Simple HTML website with materialize

Hello guys, I am a beginner in Web Development. So it all started with the use of html tags and how the browser interprets and translates this markup for us. I started up with building a small website. Usually when we talk about content websites, the more appealing and user friendly the website is, the more you attract the customers. So i started up browsing for some good UI libraries. In my context, i had assumed that materials UI is only supported by angular. But to my surprise, it was not. Here are the 3 options i could find for materials implementation in simple content websites. materializecss bootstrap-material-design getmdl.io My next worry was, i had to reload the damn thing again and again every time i made some changes either in javascript or html. One of the options that i came accoss is to make use of gulp tasks to automate this whole procedure. This procedure for me involved the following things: Auto reload of browser window on some changes in code. Mi...