On Saturday, 28 November 2015 at 14:05:37 UTC, Jacob Carlborg wrote:
If you can't/don't want to go with the App Store then why not the second option?

I'm coding an antivirus application for the Mac, using a third-party antivirus engine, in Qt/C++. It needs some things to run under high privileges. As far as I know, you can't do that with a DMG package, but can do it with a PKG package.

I've learned a tremendous amount about PKG packages (the docs are difficult), but the one thing that doesn't seem possible is to download a component from a remote URL with it except via a Perl or Bash script. The PKG flat format supports a way to call a preinstall and postinstall Perl or Bash script. The trouble with that technique, however, is that if you have a 30MB download that takes awhile, the installer screen sits at "Running Package Scripts..." for like 3 minutes (on 2Mbps DSL) and this can confuse the consumer into thinking the installer is hung up, when it isn't.

The thing I'd like to achieve with D is to have my Bash or Perl script call a command line D application that finds the current installer window x,y, hides the Cocoa-based window, draws my new Cocoa-based window to replace it at the same x,y,w,h as the other one, and then runs curl command to download the file, then uses the D application again to stop showing my custom window, unhide the installer window, and exit the Bash script.

So, some things I need to learn in D:

* How to enumerate the currently visible Cocoa windows and their titles or internal names, along with their window handle.

* How to get the x,y of an existing Cocoa window by its window handle.

* How to hide a Cocoa window by its window handle.

* How to draw my own Cocoa window at an x,y coordinate.

* How to destroy my Cocoa window by its window handle.

* How to unhide a previously hidden Cocoa window by its window handle.

If I could pull this off -- I'd make a really nice OSX installer because I could have a small pkg file that downloads and runs, and then its window gets hidden and shows a more-user friendly window (drawn in D and Cocoa) to let the consumer know it's downloading a larger file, and then show the conclusion when done. Currently nothing like that exists on OSX, but does exist on Windows via the Inno Setup and InstallShield platforms.

Reply via email to