I've been tasked with creating a new installer for our product. We've been using Vise X to create our installers up to now but want to have something less installer-like and more "Mac user-friendly" going forward. We need to support 10.4 and beyond.
We like the drag-and-drop installation workflow of Firefox. You double-click on the Firefox .dmg file. A folder opens up containing the Firefox .app file and a link to the Applications folder. The user drags the Firefox .app file to the Applications folder link. Voila', Firefox is "installed".
The problem is that in our case we need to install some .kext drivers into the user's system in order for our application to run.
One way we've thought of doing this is the .app file we give to our users will be our application's installer. We'll call it foo.app for this discussion. The user double-clicks on foo.app in the Applications folder to open it up. Instead of displaying installer dialogs, our foo.app installer will attempt to silently install the drivers. If it needs to, it can pop up a login dialog to get admin permission to do this driver installation.
Next steps:
1. The installer will extract our real application foo_real.app file from itself.
2. The installer will spawn a script that will kill the installer.
3. The script will replace the foo.app installer file with foo_real.app, so now foo.app is our real app.
4. The script will run foo.app to bring up our application.
5. Then the script terminates.
The user is left with our real foo.app in the Applications folder, our drivers are installed, and our application is up and running.
We haven't thought how we'd handle updates and uninstalls yet.
Questions:
1. Has anyone done this before? Is this doable?
2. I've started investigating PackageMaker. Is this doable with PackageMaker?
3. Is there an easier way of getting the same sort of workflow feel that we're trying to achieve?
4. How do other applications install their drivers? Do they do something like this or do they use a regular installer?
5. We've heard that Mac users don't like installers, so we're trying to make this as invisible as possible. Is our approach above overkill?
Thanks for any input!
We like the drag-and-drop installation workflow of Firefox. You double-click on the Firefox .dmg file. A folder opens up containing the Firefox .app file and a link to the Applications folder. The user drags the Firefox .app file to the Applications folder link. Voila', Firefox is "installed".
The problem is that in our case we need to install some .kext drivers into the user's system in order for our application to run.
One way we've thought of doing this is the .app file we give to our users will be our application's installer. We'll call it foo.app for this discussion. The user double-clicks on foo.app in the Applications folder to open it up. Instead of displaying installer dialogs, our foo.app installer will attempt to silently install the drivers. If it needs to, it can pop up a login dialog to get admin permission to do this driver installation.
Next steps:
1. The installer will extract our real application foo_real.app file from itself.
2. The installer will spawn a script that will kill the installer.
3. The script will replace the foo.app installer file with foo_real.app, so now foo.app is our real app.
4. The script will run foo.app to bring up our application.
5. Then the script terminates.
The user is left with our real foo.app in the Applications folder, our drivers are installed, and our application is up and running.
We haven't thought how we'd handle updates and uninstalls yet.
Questions:
1. Has anyone done this before? Is this doable?
2. I've started investigating PackageMaker. Is this doable with PackageMaker?
3. Is there an easier way of getting the same sort of workflow feel that we're trying to achieve?
4. How do other applications install their drivers? Do they do something like this or do they use a regular installer?
5. We've heard that Mac users don't like installers, so we're trying to make this as invisible as possible. Is our approach above overkill?
Thanks for any input!